exim4 smarthost com verificação de remetente

exim4 smarthost com verificação de remetente

Estou tentando configurar o exim4 como um smarthost na frente do servidor de e-mail do ISP. Tudo funciona bem, exceto alguns e-mails provenientes de remetentes inválidos (provavelmente spam). O ISP os rejeita com

450 4.1.8 <[email protected]>: Sender address rejected: Domain not found

o que faz com que o exim smarthost tente novamente, aumentando o tamanho da fila desnecessariamente.

O mais próximo que consegui configurar isso foi usando /etc/exim4/local_sender_calloutfile. Mas então a chamada vai para o ISP, que a rejeita com

554 5.7.1 <[email protected]>: Relay access denied(para qualquer endereço, mesmo os válidos). A configuração /etc/exim4/passwd.clientparece não funcionar neste caso...

Como posso configurar a verificação do remetente (com ou de preferência sem texto explicativo) com exim smarthost?

esclarecimento: meu exim não é um retransmissor aberto, ele já especifica apenas uma lista restrita de domínios para os quais aceita e-mails. Esses e-mails são então enviados ao smarthost para entrega nas caixas de correio reais. Um diagrama da configuração provavelmente seria mais ou menos assim.

Internet -> my exim(mx) -> ISP(smarthost) <- users accessing email via POP/IMAP

os registros mx do meu domínio apontam para o meu servidor exim. No entanto, o ISP aceita e-mails para meu domínio e os armazena em caixas de correio.

Responder1

Na verdade, você está configurando um MX front-end com um conjunto mais restritivo de filtros mais profundos em direção ao destino final. A melhor maneira de lidar com isso é ser pelo menos igualmente restritivo no front-end.

Porém, como você tem um smarthost, você envia e-mail para "qualquer domínio" para o smarthost. Isso combina mal com a verificação de validade do domínio: em algum lugar da sua ACL definida para comandos RCPT, deve haver um require verify = senderque garanta que o Exim tenha um método para enviar e-mail ao domínio do remetente antes de aceitar a mensagem.

Como você está sempre ativo, recomendo colocar um roteador extra diretamente antes do roteador smarthost. Supondo que o smarthost tenha domains = ! +local_domainse no_more, então adicione no_verifyao roteador smarthost e antes dele, insira este roteador:

remote_dns_verify:
  driver = dnslookup
  domains = ! +local_domains
  transport = remote_smtp
  # ignore_target_hosts = +some_hostlist_matching_rfc1918_and_so_on
  same_domain_copy_routing
  verify_only
  no_more

Com isso, overificaçãopath não usará o smarthost, então você não terá mais "uma rota para tudo". A verificação só poderá rotear domínios remotos que possuam DNS, portanto você não aceitará mais e-mails que seu ISP esteja rejeitando por não serem roteáveis.

Depois disso, gostaria de definir algumas regras de nova tentativa que correspondam a erros remotos específicos para impedir a repetição de e-mails que o ISP rejeitou. Verhttp://www.exim.org/exim-html-current/doc/html/spec_html/ch-retry_configuration.htmlpara mais.

informação relacionada