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)に返送されていません。どこに行ったの?
たとえば、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が黙って拒否したりする可能性があります。