AWS SES: erro “Endereço de e-mail não verificado” com retransmissão de Postfix

4

Eu configurei o Amazon SES, verifiquei meu domínio e fui aprovado para o modo de produção. Quando um e-mail do mundo externo é enviado para um endereço no meu domínio, meu servidor o encaminha de volta para uma conta do Gmail, mas o encaminhamento é rejeitado pelo Amazon SES com o erro

Email address is not verified

Por exemplo, se alguém do yahoo.com enviar um e-mail para mim em "[email protected]", e esse e-mail será imediatamente encaminhado para "[email protected]" devido a uma entrada em / etc / aliases , A SES está rejeitando o e-mail para gmail.com, embora "mydomain.com" seja um domínio verificado. Quando eu ligo o registro detalhado no Postfix para a conexão ao gmail.com, o e-mail parece ser do yahoo.com e vai para o gmail.com - nenhum dos quais é meu domínio. Está reclamando do fato de que o e-mail é originalmente do yahoo.com? Se for esse o caso, então não posso usar o SES ao retransmitir emails de domínios externos, através do meu domínio, para outro domínio (gmail)?

Funciona bem, no entanto, se eu enviar um e-mail proveniente do meu domínio e acessar o endereço do Gmail.

Veja a linha em /var/log/maillog em que o servidor SES rejeita o encaminhamento para gmail.com:

Apr 15 02:11:43 ip-10-194-190-140 postfix/smtp10191: 9013922528: to=<[email protected]>, orig_to=<[email protected]>, relay=email-smtp.us-east-1.amazonaws.comhttp://54.243.71.143:25, delay=0.32, delays=0.01/0/0.11/0.2, dsn=5.0.0, status=bounced (host email-smtp.us-east-1.amazonaws.comhttp://54.243.71.143 said: 554 Message rejected: Email address is not verified. (in reply to end of DATA command))'

E aqui estão as linhas que adicionei ao /etc/postfix/main.cf:

relayhost = email-smtp.us-east-1.amazonaws.com:25
smtp_sasl_auth_enable = yes
smtp_sasl_security_options = noanonymous
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_use_tls = yes
smtp_tls_security_level = encrypt
smtp_tls_note_starttls_offer = yes
smtp_tls_CAfile = /etc/ssl/certs/ca-bundle.crt

Pergunta de acompanhamento:

Quando esse problema acontece, onde o email termina? O e-mail está sendo aceito pelo meu servidor Postfix para "[email protected]", mas o encaminhamento para gmail.com foi rejeitado pelo Amazon SES. Mas o e-mail não está na fila de mensagens de saída no meu servidor, não está na caixa de correio da minha conta no meu servidor e não foi devolvido ao remetente original (no yahoo, no meu exemplo acima). Para onde foi?

    
por Russell G 16.04.2013 / 21:48

1 resposta

7

Por que o Amazon SES envia esse erro ao enviar e-mail?

Por exemplo, você verificou seu domínio example.com . Agora, algué[email protected] envia um email para [email protected] . O Postfix aceita de bom grado e por causa do arquivo de alias, o postfix irá encaminhá-lo para [email protected] .

O problema é que o postfix usa algué[email protected] como remetente do envelope na transação SMTP. É um comportamento desejado e padrão do postfix. O objetivo é não perder as informações do remetente quando o GMAIL receber esse email de [email protected] . Infelizmente, o Amazon SES permite apenas o domínio do remetente do envelope como example.com .

Solução

De o tópico mencionado por OP no comentário, existem algumas soluções para alterar o envelope remetente por isso vai passar a restrição do Amazon SES. Uma possível solução é usar sender_canonical_maps . Por padrão, o postfix irá reescrever o remetente no envelope e no cabeçalho. Com a configuração adequada de sender_canonical_classes , o postfix só irá reescrever o envelope um.

Em /etc/postfix/main.cf , adicione

sender_canonical_maps = regexp:/etc/postfix/sender_canonical
sender_canonical_classes = envelope_sender

Em /etc/postfix/sender_canonical , adicione

/.*/    [email protected]

O problema é que seu remetente original é desconhecido. Um método para obter o original é com uma ação pré-anexada de check_sender_access como sugerido pelo autor do Postfix.

Em /etc/postfix/main.cf , adicione

smtpd_data_restrictions = check_sender_access pcre:/etc/postfix/sender_access

Em /etc/postfix/sender_access , adicione

/(.*)/  prepend X-Envelope-From: <$1>

Essas configurações adicionarão X-Envelope-From header, que conterá o endereço de e-mail do remetente original.

Quando esse problema acontece, onde o email termina? Para onde foi?

Por padrão, o postfix enviará essa mensagem ao remetente original (endereço do Yahoo). Você pode rastreá-lo seguindo mail.log após a rejeição. Naturalmente, algumas configurações de postfix podem suprimir a mensagem de rejeição, ou talvez o Yahoo a rejeite silenciosamente.

    
por 08.10.2014 / 10:11