SMTP を使用して EC2 インスタンスから SES にメールを送信しようとすると問題が発生します。何らかの理由で、散発的なタイムアウトの問題が発生し、SMTP ホストに接続できなくなります。SES を介した送信は、おそらく 75% の確率で機能することに注意してください。
いくつかの詳細から始めます。私の SES アカウントはほとんどの時間機能しています。送信者のメールが確認され、制限が 1 日あたり 10,000 件、1 秒あたり 5 件のメールに引き上げられました。これが私の制限に関連している場合、制限固有のエラーが発生するという印象を受けています。私の SMTP 構成では、TLS 付きの posfix を使用しています。公式の AWS SES フォーラムに非常によく似た投稿を投稿しましたが、まだ成功していません。その投稿の情報は、この投稿の下部にあります。
これは今朝の失敗例です。以下で実行したすべてのコマンドは、メールを送信しようとしている EC2 インスタンスから実行されました。小説サイズの投稿で申し訳ありません。すべてを含めるようにしたいだけです。
自分宛てに送信したメールが配信されませんでした:
Jun 25 06:16:36 intranet01 postfix/smtp18832: 9E00C230DA: to=<myemailaddress>, relay=none, delay=150, delays=0.02/0.01/150/0, dsn=4.4.1, status=deferred (connect to email-smtp.us-east-1.amazonaws.comhttp://107.22.187.122:25: Connection timed out)
そして、失敗を見て、ポート 25 経由で電子メール ホストに接続しようとしましたが、接続できませんでした。
root@intranet01 sbin# telnet email-smtp.us-east-1.amazonaws.com 25
Trying 174.129.28.151...
^C
数分後、延期されていたメールが最終的に通過しました。
Jun 25 06:23:14 intranet01 postfix/smtp18861: 9E00C230DA: to=<myemailaddress>, relay=email-smtp.us-east-1.amazonaws.comhttp://184.73.218.23:25, delay=548, delays=548/0.02/0.21/0.36, dsn=2.0.0, status=sent (250 Ok 0000013823cf7441-83710873-e946-4c80-8a54-0dd72bae6f30-000000)
Jun 25 06:23:14 intranet01 postfix/qmgr3972: 9E00C230DA: removed
これで、ポート 25 に接続できるようになりました。
root@intranet01 sbin# telnet email-smtp.us-east-1.amazonaws.com 25
Trying 107.20.152.208...
Connected to email-smtp.us-east-1.amazonaws.com.
Escape character is '^]'.
220 email-smtp.amazonaws.com ESMTP SimpleEmailService-222567251
^]
キックのために、SES ホスト エンドポイントを調べることにしました。それは単なる ELB cname であり、A レコードが複数の AZ のインターフェイスを指すことがわかりました。
root@intranet01 sbin# dig email-smtp.us-east-1.amazonaws.com
; <<>> DiG 9.7.3-P3-RedHat-9.7.3-8.P3.17.amzn1 <<>> email-smtp.us-east-1.amazonaws.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 8592
;; flags: qr rd ra; QUERY: 1, ANSWER: 9, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;email-smtp.us-east-1.amazonaws.com. IN A
;; ANSWER SECTION:
email-smtp.us-east-1.amazonaws.com. 54 IN CNAME ses-smtp-prod-335357831.us-east-1.elb.amazonaws.com.
ses-smtp-prod-335357831.us-east-1.elb.amazonaws.com. 60 IN A 174.129.200.82
ses-smtp-prod-335357831.us-east-1.elb.amazonaws.com. 60 IN A 184.73.219.75
ses-smtp-prod-335357831.us-east-1.elb.amazonaws.com. 60 IN A 107.20.152.208
ses-smtp-prod-335357831.us-east-1.elb.amazonaws.com. 60 IN A 107.20.160.81
ses-smtp-prod-335357831.us-east-1.elb.amazonaws.com. 60 IN A 107.20.203.50
ses-smtp-prod-335357831.us-east-1.elb.amazonaws.com. 60 IN A 107.22.229.233
ses-smtp-prod-335357831.us-east-1.elb.amazonaws.com. 60 IN A 174.129.6.189
ses-smtp-prod-335357831.us-east-1.elb.amazonaws.com. 60 IN A 174.129.28.151
別のメッセージを送信しようとしましたが、失敗しました。今回は、SES cname が返した各 A レコード アドレスをループしました。私はそれらのどれにも接続できませんでした。この間、(EC2 インスタンスではなく) ローカル マシンからの接続も試みましたが、問題なく動作しました。
root@intranet01 sbin# telnet email-smtp.us-east-1.amazonaws.com 25
Trying 174.129.28.151...
^C
root@intranet01 sbin# telnet email-smtp.us-east-1.amazonaws.com 25
Trying 174.129.6.189...
^C
root@intranet01 sbin# telnet email-smtp.us-east-1.amazonaws.com 25
Trying 107.22.229.233...
^C
root@intranet01 sbin# telnet email-smtp.us-east-1.amazonaws.com 25
Trying 107.20.203.50...
^C
root@intranet01 sbin# telnet email-smtp.us-east-1.amazonaws.com 25
Trying 107.20.160.81...
^C
root@intranet01 sbin# telnet email-smtp.us-east-1.amazonaws.com 25
Trying 107.20.152.208...
^C
root@intranet01 sbin# telnet email-smtp.us-east-1.amazonaws.com 25
Trying 184.73.219.75...
^C
root@intranet01 sbin# telnet email-smtp.us-east-1.amazonaws.com 25
Trying 174.129.200.82...
^C
root@intranet01 sbin# telnet email-smtp.us-east-1.amazonaws.com 25
Trying 174.129.28.151...
^C
root@intranet01 sbin# telnet email-smtp.us-east-1.amazonaws.com 25
Trying 174.129.6.189...
^C
root@intranet01 sbin# telnet email-smtp.us-east-1.amazonaws.com 25
Trying 107.22.229.233...
^C
root@intranet01 sbin# telnet email-smtp.us-east-1.amazonaws.com 25
Trying 107.20.203.50...
^C
root@intranet01 sbin# telnet email-smtp.us-east-1.amazonaws.com 25
Trying 107.20.179.13...
^C
root@intranet01 sbin# telnet email-smtp.us-east-1.amazonaws.com 25
Trying 107.20.160.81...
^C
root@intranet01 sbin# telnet email-smtp.us-east-1.amazonaws.com 25
Trying 184.73.219.75...
^C
root@intranet01 sbin# telnet email-smtp.us-east-1.amazonaws.com 25
Trying 174.129.200.82...
^C
約30秒待ってから再試行しましたが、今回はうまくいきました。
root@intranet01 sbin# telnet email-smtp.us-east-1.amazonaws.com 25
Trying 174.129.28.151...
Connected to email-smtp.us-east-1.amazonaws.com.
Escape character is '^]'.
220 email-smtp.amazonaws.com ESMTP SimpleEmailService-222567251
^C^[
^]
telnet>
前に述べたように、AWS SES フォーラムに非常によく似た投稿を投稿しました。投稿は以下からご覧いただけます。
https://forums.aws.amazon.com/thread.jspa?threadID=97736&tstart=0
また、SES フォーラムでこの別の投稿を見つけたので、同じ問題のように見えるのは私だけではないようです。
https://forums.aws.amazon.com/thread.jspa?threadID=91260&tstart=0
EC2 の SMTP に何らかの制限があるのではないかと思ったので、「EC2 からのメール送信」リクエスト フォームに記入しましたが、サード パーティではなく Amazon のサービスを使用しているため、ばかげているように思えます。これまでのところ、フォームに記入した後、Amazon から何の連絡もありません。
誰にもアイデアはありますか?前もって感謝します。