37

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 から何の連絡もありません。

誰にもアイデアはありますか?前もって感謝します。

4

3 に答える 3

51

どうやらEC2には独自の制限があります。私は (誤って) SES への本番アクセスを持つことは、EC2 からの SMTP 制限の緩和も意味すると想定しましたが、これらは 2 つの完全に別個の製品であるため、そうではないと思います。

ただし、投稿の最後の段落で述べたように、メール送信制限の削除をリクエストして、これらの制限を引き上げることができます。私はそれを行い、問題は停止しました(制限が解除されるまでに約5時間かかりました).


アップデート

EC2 スロットリングはAmazon SES SMTP エンドポイントへの接続 に記載されており、実際にはポート 25 に制限されているため、代替の即時の解決策は、代わりにポート 587 を使用することです (いくつかの公式の SES の例が実際にポート 25 を使用しているのは少し残念です)。

重要

Elastic Compute Cloud (EC2) は、デフォルトでポート 25 経由の E メール トラフィックを調整します。EC2 から SMTP エンドポイント経由で電子メールを送信する際のタイムアウトを回避するには、別のポート (587 または 2587) を使用するか、 電子メール送信の制限を削除するためのリクエストに記入してスロットルを削除します。

AWS マネジメント コンソールとセクションAmazon SES SMTP の問題の両方が、より一般的な代替ポート 465 と 587 のみを参照している限り、これも少し古い可能性があることに注意してください。

ポート 25 を介して Amazon EC2 インスタンスから Amazon SES に送信しているが、Amazon SES の送信制限に到達できないか、タイムアウトを受信して​​いる— Amazon SES EC2 は、ポート 25 を介して送信される E メールにデフォルトの送信制限を課し、送信しようとするとアウトバウンド接続を抑制します。それらの制限を超えるために。これらの制限を削除するには、 メール送信制限の削除リクエストを送信してください。ポート 465 またはポート 587 経由で Amazon SES に接続することもできますが、どちらもスロットルされていません。

于 2012-06-25T19:44:24.853 に答える
0

EC2 でポート 25 スロットリングのケースのように見えます。AWS はデフォルトでポート 25 を調整し、悪意のあるユーザー/ソフトウェアによって大量の E メールが送信されるのを防ぎます。この制限は、https ://aws.amazon.com/premiumsupport/knowledge-center/ec2-port-25-throttle/ の手順に従って削除できます。

または、アプリケーションの発信ポートを変更して、STARTTLS サポートに 587、2587 を使用するか、TLS ラッパーに 465/2465 を使用することができます。

于 2018-10-05T14:48:09.837 に答える