web-dev-qa-db-ja.com

AWS SES:Postfixリレーで「メールアドレスが確認されていません」エラー

Amazon SESをセットアップし、ドメインを確認し、プロダクションモードで承認されました。外部からのメールが私のドメインのアドレスに送信されると、サーバーはそれをGmailアカウントに転送しますが、転送はAmazonSESによってエラーで拒否されます

Email address is not verified

たとえば、yahoo.comの誰かが「[email protected]」で私にメールを送信し、そのメールが/ etc/aliasesのエントリのためにすぐに「[email protected]」に転送される場合、SESは「mydomain.com」は確認済みのドメインですが、gmail.comへのメールを拒否します。 gmail.comへの接続のためにPostfixで詳細なログインをオンにすると、メールはyahoo.comからgmail.comに送信されているように見えます。どちらも私のドメインではありません。メールが元々yahoo.comからのものであるという事実について不平を言っていますか?その場合、外部ドメインからドメインを経由して別の(gmail)ドメインにメールをリレーするときにSESを使用できませんか?

ただし、私のドメインから送信され、Gmailアドレスに送信される電子メールを送信する場合は、問題なく動作します。

SESサーバーがgmail.comへの転送を拒否する/var/log/maillogの行は次のとおりです。

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))`

そして、ここに/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

フォローアップの質問:

この問題が発生した場合、電子メールはどこに行き着きますか?メールは「[email protected]」のPostfixサーバーで受け入れられていますが、gmail.comへの転送はAmazonSESによって拒否されています。しかし、電子メールはサーバーの送信メールキューになく、サーバーのアカウントのメールボックスにもありません。また、元の送信者(上記の例ではyahoo)に返送されていません。どこに行ったの?

4
Russell G

Amazon SESがEメールを送信するときにそのエラーをスローするのはなぜですか?

たとえば、your domain example.comを確認しました。これで、[email protected][email protected]にメールを送信します。 Postfixはそれを喜んで受け入れ、エイリアスファイルのため、postfixはそれを[email protected]に転送します。

問題は、postfixが[email protected]envelope senderとしてSMTPトランザクションで使用することです。これは、postfixの望ましいデフォルトの動作です。目的は、GMAILが[email protected]からそのメールを受信したときに送信者情報を失わないようにすることです。残念ながら、Amazon SESはexample.comとしてのみエンベロープ送信者ドメインを許可します。

解決

コメントでOPが言及している スレッド から、エンベロープ送信者を変更してAmazon SESの制限を通過させるいくつかの解決策があります。考えられる解決策の1つは、 sender_canonical_maps を使用することです。デフォルトでは、postfixはエンベロープとヘッダーの両方の送信者を書き換えます。 sender_canonical_classes を適切に構成すると、postfixはエンベロープ1のみを書き換えます。

/etc/postfix/main.cfに、を追加します

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

/etc/postfix/sender_canonicalに、を追加します

/.*/    [email protected]

問題は、元の送信者が不明であるということです。オリジナルを取得する1つの方法は、check_sender_accessのプリペンドアクションを使用することです Postfix作成者の提案に従います

/etc/postfix/main.cfに、を追加します

smtpd_data_restrictions = check_sender_access pcre:/etc/postfix/sender_access

/etc/postfix/sender_accessに追加

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

これらの設定により、元の送信者の電子メールアドレスを含むX-Envelope-Fromヘッダーが追加されます。

この問題が発生した場合、電子メールはどこに行き着きますか?どこに行ったの?

デフォルトでは、postfixはこのメッセージを元の送信者(Yahooアドレス)に送り返します。拒否後は、mail.logをたどることで追跡できます。もちろん、Postfixの設定によっては、バウンスメッセージを抑制したり、Yahooが黙って拒否したりする可能性があります。

7
masegaloeh