Amazon EC2 / SES SMTP Timeout

Mam problem podczas próby wysłania e-maili z mojej instancji EC2 przy użyciu SMTP do SES. Z jakiegoś powodu mam sporadyczne problemy z czasem, w którym nie mogę się już skontaktować z hostem SMTP. Ważne jest, aby pamiętać, że wysyłanie przez SES działa prawdopodobnie w 75% przypadków.

Zacznę od kilku szczegółów. Moje konto SES działawiększość czasu. E-mail nadawcy został zweryfikowany, a moje limity zostały zwiększone do 10 tys. Dziennie, 5 e-maili na sekundę. Mam wrażenie, że dostanę błąd związany z limitem, jeśli będzie to związane z moimi ograniczeniami. W mojej konfiguracji SMTP używam posfix w / TLS. Opublikowałem bardzo podobny post na oficjalnych forach AWS SES, ale jeszcze nie odniosłem sukcesu. Informacje dla tego posta znajdują się na dole tego posta.

Oto przykład porażki z rana. Wszystkie polecenia, które uruchomiłem poniżej, zostały uruchomione z instancji EC2, z której próbuję wysłać pocztę. Przepraszamy za nowatorski post, chcę tylko upewnić się, że uwzględnię wszystko.

Wiadomość e-mail, którą wysłałem do siebie, nie została dostarczona:

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)

A kiedy zobaczyłem błąd, próbowałem połączyć się z hostem e-mail przez port 25. Nie mogłem się połączyć:

root@intranet01 sbin# telnet email-smtp.us-east-1.amazonaws.com 25  
Trying 174.129.28.151...  
^C

Kilka minut później mój odroczony e-mail w końcu przeszedł:

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

A teraz mogę połączyć się z portem 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  
^]

Na kopnięcia postanowiłem spojrzeć na punkt końcowy hosta SES. Okazuje się, że jest to po prostu cname ELB, z rekordami A, które wskazują interfejsy w wielu 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

Próbowałem wysłać kolejną wiadomość i nie powiodło się. Tym razem zapętliłem wszystkie adresy rekordów A, które zwróciła nazwa SES. Nie mogłem połączyć się z żadnym z nich. W tym czasie próbowałem również połączyć się z moją lokalną maszyną (nie z moją instancją EC2) i działała dobrze.

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

Po odczekaniu około 30 sekund spróbowałem ponownie, tym razem zadziałało.

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>

Jak powiedziałem wcześniej, zamieściłem bardzo podobny post na forum AWS SES. Post można znaleźć poniżej.

https://forums.aws.amazon.com/thread.jspa?threadID=97736&tstart=0

Wydaje się również, że nie jestem sam, ponieważ znalazłem ten inny post na forum SES, wygląda na ten sam problem.

https://forums.aws.amazon.com/thread.jspa?threadID=91260&tstart=0

Pomyślałem, że może istnieć jakieś ograniczenie EC2 do SMTP, więc wypełniłem formularz „wysyłający e-mail z EC2”, ale wydaje mi się głupi, ponieważ korzystam z usługi Amazon, w przeciwieństwie do strony trzeciej. Jak dotąd nic nie słyszałem od Amazon po wypełnieniu formularza.

Czy ktoś ma jakieś pomysły? Z góry dziękuję.

questionAnswers(3)

yourAnswerToTheQuestion