
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_callout
file. 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.client
parece 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 = sender
que 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_domains
e no_more
, então adicione no_verify
ao 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.