Тайм-аут SMTP Amazon EC2/SES

У меня возникла проблема при попытке отправить электронную почту из моего экземпляра EC2 с помощью SMTP в SES. По какой-то причине я получаю спорадические проблемы с тайм-аутом, из-за которых я больше не могу связаться с хостом SMTP. Важно отметить, что отправка через SES работает примерно в 75% случаев.

Начну с некоторых деталей. Моя учетная запись SES работает большую частьвремени. Электронная почта отправителя была проверена, и мои ограничения были увеличены до 10 тыс./день, 5 писем в секунду. У меня сложилось впечатление, что я бы получил ошибку, связанную с лимитом, если бы это было связано с моими лимитами. Для моей конфигурации SMTP я использую posfix с TLS. Я разместил очень похожий пост на официальных форумах AWS SES, но пока не добился там никакого успеха. Информация для этого поста находится внизу этого поста.

Вот пример неудачи сегодняшнего утра. Все приведенные ниже команды были запущены из экземпляра EC2, с которого я пытаюсь отправить почту. Извините за пост размером с роман, я просто хочу убедиться, что включил все.

Электронное письмо, которое я отправил себе, не было доставлено:

Jun 25 06:16:36 intranet01 postfix/smtp18832: 9E00C230DA: to=, 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=, 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.Оказывается, это просто cname ELB с записями A, которые указывают на интерфейсы в нескольких зонах доступности.

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

Я попытался отправить еще одно сообщение, но это не удалось. На этот раз я перебрал все адреса записей A, которые вернул SES cname. Я не мог подключиться ни к одному из них. За это время я также пытался подключиться с моей локальной машины (не с моего экземпляра 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 после заполнения формы.

У кого-нибудь есть идеи? Заранее спасибо.

33
задан Steffen Opel 29 January 2013 в 09:06
поделиться