У меня возникла проблема при отправке писем с моего экземпляра EC2 с использованием SMTP на SES. По какой-то причине я получаю спорадические проблемы с таймаутом, когда я больше не могу обращаться к узлу SMTP. Важно отметить, что отправка через SES работает, вероятно, в 75% случаев.
Я начну с некоторых деталей. Моя учетная запись SES работает большую часть времени. Электронная почта отправителя была проверена, и мои лимиты были увеличены до 10k/day, 5 писем в секунду. У меня создается впечатление, что я получу предельную ошибку, если бы это было связано с моими ограничениями. Для моей конфигурации SMTP я использую posfix w/TLS. Я опубликовал очень похожий пост на официальных форумах 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. Я не мог подключиться:
[email protected] 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:
[email protected] 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.
[email protected] 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), и она работала нормально.
[email protected] sbin# telnet email-smtp.us-east-1.amazonaws.com 25
Trying 174.129.28.151...
^C
[email protected] sbin# telnet email-smtp.us-east-1.amazonaws.com 25
Trying 174.129.6.189...
^C
[email protected] sbin# telnet email-smtp.us-east-1.amazonaws.com 25
Trying 107.22.229.233...
^C
[email protected] sbin# telnet email-smtp.us-east-1.amazonaws.com 25
Trying 107.20.203.50...
^C
[email protected] sbin# telnet email-smtp.us-east-1.amazonaws.com 25
Trying 107.20.160.81...
^C
[email protected] sbin# telnet email-smtp.us-east-1.amazonaws.com 25
Trying 107.20.152.208...
^C
[email protected] sbin# telnet email-smtp.us-east-1.amazonaws.com 25
Trying 184.73.219.75...
^C
[email protected] sbin# telnet email-smtp.us-east-1.amazonaws.com 25
Trying 174.129.200.82...
^C
[email protected] sbin# telnet email-smtp.us-east-1.amazonaws.com 25
Trying 174.129.28.151...
^C
[email protected] sbin# telnet email-smtp.us-east-1.amazonaws.com 25
Trying 174.129.6.189...
^C
[email protected] sbin# telnet email-smtp.us-east-1.amazonaws.com 25
Trying 107.22.229.233...
^C
[email protected] sbin# telnet email-smtp.us-east-1.amazonaws.com 25
Trying 107.20.203.50...
^C
[email protected] sbin# telnet email-smtp.us-east-1.amazonaws.com 25
Trying 107.20.179.13...
^C
[email protected] sbin# telnet email-smtp.us-east-1.amazonaws.com 25
Trying 107.20.160.81...
^C
[email protected] sbin# telnet email-smtp.us-east-1.amazonaws.com 25
Trying 184.73.219.75...
^C
[email protected] sbin# telnet email-smtp.us-east-1.amazonaws.com 25
Trying 174.129.200.82...
^C
После ожидания около 30 секунд я попытался снова, на этот раз он сработал.
[email protected] 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 после заполнения формы.
Есть ли у кого-нибудь идеи? Спасибо заранее.