O encaminhamento de mensagens do Postfix se comporta de maneira diferente dos diferentes locais de envio

1

Estou configurando uma instalação do Postfix no Ubuntu Server 12.04 para encaminhar um pequeno volume de mensagens de um endereço específico no servidor para um endereço específico em outro domínio.

$ pwd
/etc/postfix

$ cat main.cf 
smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
biff = no

append_dot_mydomain = no
readme_directory = no

smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
smtpd_use_tls=yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache

myhostname = awsBeta
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
mydestination = awsBeta, localhost.localdomain, , localhost, someDomain.com
relayhost = 
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all

virtual_mailbox_domains = someDomain.com
virtual_mailbox_base = /var/mail/vhosts
virtual_mailbox_maps = hash:/etc/postfix/vmailbox
virtual_minimum_uid = 100
virtual_uid_maps = static:5000
virtual_gid_maps = static:5000

virtual_alias_domains = someDomain.com
virtual_alias_maps = hash:/etc/postfix/virtual

$ cat virtual
[email protected] [email protected]

$ 

Quando eu faço login no interpretador PHP CLI no servidor para enviar e-mails, o e-mail é entregue corretamente a [email protected] . Observe que o dotancohen.com é um domínio do Google Apps, os registros MX estão hospedados no Google.

$ php -a
Interactive shell

php > mail('[email protected]','Subject','tMessage', 'From: <[email protected]>');

Eu posso ver que o e-mail chegou na [email protected] caixa de entrada. Isso me diz que o forwarder funciona. Agora eu tento do prompt de telnet do meu desktop:

$ telnet mail.someDomain.com 25
Trying x.x.x.x...
Connected to mail.someDomain.com.
Escape character is '^]'.
220 someHostname ESMTP Postfix (Ubuntu)
EHLO dotancohen.com
250-someHostname
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-STARTTLS
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
MAIL FROM: [email protected]
250 2.1.0 Ok
RCPT TO: [email protected]
250 2.1.5 Ok
DATA
354 End data with <CR><LF>.<CR><LF>
From: [email protected]
SUBJECT: Hi, telnet!

This is a second attempt! 
.
250 2.0.0 Ok: queued as 9851E81579
QUIT
221 2.0.0 Bye
Connection closed by foreign host.
$ 

Este e-mail não é entregue e eu encontro o seguinte nos registros do postfix:

Jul  4 16:02:58 someHostname postfix/smtp[24898]: connect to ASPMX.L.GOOGLE.com[2607:f8b0:400c:c03::1b]:25: Network is unreachable
Jul  4 16:02:58 someHostname postfix/smtp[24898]: 935BC81579: to=<[email protected]>, orig_to=<[email protected]>, relay=ASPMX.L.GOOGLE.com[173.194.75.26]:25, delay=15, delays=15/0.02/0.08/0.15, dsn=2.0.0, status=sent (250 2.0.0 OK 1372953778 d3si1064427vck.0 - gsmtp)

Parece que o Google recebeu o e-mail, mas decidiu (provavelmente devido ao SPF) não entregá-lo. Não está na minha pasta Spam! Por fim, tento simplesmente enviar um email para o domínio de uma conta não relacionada do Hotmail. Este e-mail não é entregue, mas nada está nos registros do Postfix.

Para fins de integralidade, aqui está o registro MX anomizado:

$ dig mx someDomain.com
someDomain.com.        1800    IN      MX      10 mail.someDomain.com.

$ dig a mail.someDomain.com
mail.someDomain.   1790    IN      A       x.x.x.x

Eu posso confirmar que x.x.x.x é de fato o endereço IP correto para o servidor, e é o mesmo endereço para o qual eu fiz o telnet.

Por que os e-mails de contas de e-mail legítimas (como a conta do hotmail) não podem ser entregues na conta [email protected] ?

    
por dotancohen 04.07.2013 / 18:12

2 respostas

2

Esta linha:

Jul  4 16:02:58 someHostname postfix/smtp[24898]: connect to ASPMX.L.GOOGLE.com[2607:f8b0:400c:c03::1b]:25: Network is unreachable

indica que há um problema de roteamento ipv6 entre o servidor SMTP com o qual você telnetou e 2607:f8b0:400c:c03::1b no Google. Um firewall pode certamente relatar essa mensagem ICMP também como uma maneira de bloquear um pacote, mas tente fazer o ping dele. É possível, por exemplo, que você tenha roteamento ipv6 parcial ou intermitente em andamento. Se você achar que só pode executar o ping algumas vezes ou se não puder fazer o ping e a resposta consistentemente disser que não há rota, seu ISP upstream (ou quem estiver fornecendo o roteamento IPv6) precisa corrigir o problema de roteamento.

Também é possível que o bloqueio da porta 25 esteja acontecendo. Isso é extremamente comum; se você estiver usando o furacão elétrico para conectividade IPv6, eles bloquearão a saída de porta 25, a menos que você solicite especificamente que seja permitido; esse é o caso da maioria dos ISPs (porque, sem que isso aconteça, os spammers migram para eles e as políticas restritivas que não favorecem eles começam a aparecer em todos os lugares, pois ganham reputação como refúgio de spam).

Este problema não é causado por SPF ou DKIM ou filtragem de spam baseada em conteúdo; é um problema de rede.

    
por 05.07.2013 / 15:16
0

O problema era que a porta 25 estava com o firewall desligado! Meu endereço IP local (onde eu sento) tinha todas as portas abertas para que eu pudesse fazer o telnet. O Hotmail e outros provedores de e-mail legítimos não tinham acesso à porta 25, portanto não havia mais nada nos arquivos de log!

    
por 05.07.2013 / 14:25