사용자 지정 주소로 이메일 전송 실패: "EHLO 후 연결 끊김"

카테고리에 'Custom incoming email address’가 설정되어 있습니다 – [CATEGORY]@forum.tasat.org

Gmail에서 해당 주소로 직접 이메일을 보내면 메시지는 정상적으로 처리되어 해당 카테고리에 도착합니다.

성공 시 mail-receiver 로그:

Oct 30 05:26:43 forum-mail-receiver postfix/smtpd[76028]: connect from mail-ot1-f46.google.com[209.85.210.46]
Oct 30 05:26:43 forum-mail-receiver postfix/smtpd[76028]: B5B78309A1E: client=mail-ot1-f46.google.com[209.85.210.46]
Oct 30 05:26:43 forum-mail-receiver postfix/cleanup[76035]: B5B78309A1E: message-id=<CAA0dvufnp4EsAjp9XxjjirzOvocEZn9qO1bbB2h+RhC-6GZP2w@mail.gmail.com>
Oct 30 05:26:43 forum-mail-receiver postfix/qmgr[98]: B5B78309A1E: from=<[NAME]@gmail.com>, size=3056, nrcpt=1 (queue active)
Oct 30 05:26:43 forum-mail-receiver postfix/smtpd[76028]: disconnect from mail-ot1-f46.google.com[209.85.210.46] ehlo=1 mail=1 rcpt=1 bdat=1 quit=1 commands=5
<23>Oct 30 05:26:43 receive-mail[76037]: Recipient: [CATEGORY]@forum.tasat.orgOct 30 05:26:44 forum-mail-receiver postfix/pipe[76036]: B5B78309A1E: to=<[CATEGORY]@forum.tasat.org>, relay=discourse, delay=0.57, delays=0.23/0.02/0/0.32, dsn=2.0.0, status=sent (delivered via discourse service)
Oct 30 05:26:44 forum-mail-receiver postfix/qmgr[98]: B5B78309A1E: removed

하지만 carrd.co의 랜딩 페이지에 있는 연락처 폼에서 동일한 내용으로 [CATEGORY]@forum.tasat.org에 메시지를 제출하면 처리되지 않습니다.

실패 시 mail-receiver 로그:

Oct 30 06:47:20 forum-mail-receiver postfix/smtpd[76057]: connect from a69-230.smtp-out.amazonses.com[54.240.69.230]
Oct 30 06:47:20 forum-mail-receiver postfix/smtpd[76057]: lost connection after EHLO from a69-230.smtp-out.amazonses.com[54.240.69.230]
Oct 30 06:47:20 forum-mail-receiver postfix/smtpd[76057]: disconnect from a69-230.smtp-out.amazonses.com[54.240.69.230] ehlo=1 commands=1

명백히 EHLO 명령은 "SMTP에 발신 호스트의 도메인 이름을 식별"하는 데 사용됩니다.

어디서부터 시작해야 할지 모르겠습니다. EHLO 실패의 원인은 무엇일까요? SES를 화이트리스트에 추가해야 하는 건가요..?

EHLO가 실패한 것이 아니라, postfix가 송신 측에서 EHLO를 보낸 후 연결을 끊었다고 보고하고 있습니다. 다음과 같은 상황일 수 있습니다:

[baron ~]$ telnet forum.tasat.org 25
Trying 64.176.213.39...
Connected to forum.tasat.org.
Escape character is '^]'.
220 ESMTP server
EHLO baron
250-forum-mail-receiver.localdomain
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250-DSN
250 CHUNKING
^]
telnet> quit

(로그에서 제 IP를 참조하는 유사한 메시지를 볼 가능성이 높습니다)

이것은 SES 측의 문제입니다. 포트 25로 들어오는 트래픽을 모니터링하여 연결이 끊어진 이유에 대한 단서를 찾아보거나, SES에서 로그를 확인해 보시는 것을 권장합니다.

supermathie 님 감사합니다 – 저는 carrd.co의 SES 로그에 접근할 권한이 없지만, 다른 실패 사례의 포트 25 로그를 가지고 있습니다. (어떻게 해석해야 하는지 알았으면 좋겠네요.) 여기에서 눈에 띄는 부분이 있을까요..?

SES 실패 - Discourse 메일 수신기 로그
Oct 30 16:50:11 forum-mail-receiver postfix/anvil[76091]: statistics: max connection count 1 for (smtp:159.203.42.156) at Oct 30 16:46:35
Oct 30 16:50:11 forum-mail-receiver postfix/anvil[76091]: statistics: max cache size 1 at Oct 30 16:46:35
Oct 30 17:49:01 forum-mail-receiver postfix/smtpd[76093]: connect from a69-230.smtp-out.amazonses.com[54.240.69.230]
Oct 30 17:49:01 forum-mail-receiver postfix/smtpd[76093]: lost connection after EHLO from a69-230.smtp-out.amazonses.com[54.240.69.230]
Oct 30 17:49:01 forum-mail-receiver postfix/smtpd[76093]: disconnect from a69-230.smtp-out.amazonses.com[54.240.69.230] ehlo=1 commands=1
root@forum:/var/discourse#
SES 실패 - Wireshark 포트 25 로그
No.	Time	Source	Destination	Protocol	Length	Info
11913	85.864926	54.240.69.230	64.176.213.39	TCP	74	50903 → 25 [SYN] Seq=0 Win=26883 Len=0 MSS=1460 SACK_PERM TSval=1554444054 TSecr=0 WS=128
11914	85.865305	64.176.213.39	54.240.69.230	TCP	74	25 → 50903 [SYN, ACK] Seq=0 Ack=1 Win=43440 Len=0 MSS=1460 SACK_PERM TSval=958362575 TSecr=1554444054 WS=1024
11921	85.871994	54.240.69.230	64.176.213.39	TCP	66	50903 → 25 [ACK] Seq=1 Ack=1 Win=27008 Len=0 TSval=1554444061 TSecr=958362575
12239	86.221038	64.176.213.39	54.240.69.230	SMTP	84	S: 220 ESMTP server
12245	86.227770	54.240.69.230	64.176.213.39	TCP	66	50903 → 25 [ACK] Seq=1 Ack=19 Win=27008 Len=0 TSval=1554444417 TSecr=958362931
12246	86.228748	54.240.69.230	64.176.213.39	SMTP	103	C: EHLO a69-230.smtp-out.amazonses.com
12247	86.228791	64.176.213.39	54.240.69.230	TCP	66	25 → 50903 [ACK] Seq=19 Ack=38 Win=44032 Len=0 TSval=958362939 TSecr=1554444418
12248	86.228963	64.176.213.39	54.240.69.230	SMTP	220	S: 250-forum-mail-receiver.localdomain | PIPELINING | SIZE 10240000 | VRFY | ETRN | ENHANCEDSTATUSCODES | 8BITMIME | DSN | CHUNKING
12253	86.236796	54.240.69.230	64.176.213.39	TCP	66	50903 → 25 [FIN, ACK] Seq=38 Ack=173 Win=28032 Len=0 TSval=1554444426 TSecr=958362939
12254	86.237257	64.176.213.39	54.240.69.230	TCP	66	25 → 50903 [FIN, ACK] Seq=173 Ack=39 Win=44032 Len=0 TSval=958362947 TSecr=1554444426
12257	86.243960	54.240.69.230	64.176.213.39	TCP	66	50903 → 25 [ACK] Seq=39 Ack=174 Win=28032 Len=0 TSval=1554444433 TSecr=958362947

비교를 위해:

Gmail 성공 - Wireshark 포트 25 로그
No.	Time	Source	Destination	Protocol	Length	Info
1173638	893.998102	162.142.125.93	64.176.213.39	TCP	74	27763 → 25 [SYN] Seq=0 Win=42340 Len=0 MSS=1460 SACK_PERM TSval=1729720003 TSecr=0 WS=1024
1173639	893.998341	64.176.213.39	162.142.125.93	TCP	74	25 → 27763 [SYN, ACK] Seq=0 Ack=1 Win=43440 Len=0 MSS=1460 SACK_PERM TSval=2319295245 TSecr=1729720003 WS=1024
1173667	894.015884	162.142.125.93	64.176.213.39	TCP	54	27763 → 25 [RST] Seq=1 Win=0 Len=0
1178853	897.638926	162.142.125.207	64.176.213.39	TCP	74	60246 → 25 [SYN] Seq=0 Win=21900 Len=0 MSS=1460 SACK_PERM TSval=1654559109 TSecr=0 WS=1024
1178855	897.639088	64.176.213.39	162.142.125.207	TCP	74	25 → 60246 [SYN, ACK] Seq=0 Ack=1 Win=43440 Len=0 MSS=1460 SACK_PERM TSval=461108143 TSecr=1654559109 WS=1024
1178884	897.656814	162.142.125.207	64.176.213.39	TCP	66	60246 → 25 [ACK] Seq=1 Ack=1 Win=22528 Len=0 TSval=1654559127 TSecr=461108143
1179106	897.805588	64.176.213.39	162.142.125.207	SMTP	84	S: 220 ESMTP server
1179134	897.823322	162.142.125.207	64.176.213.39	TCP	66	60246 → 25 [ACK] Seq=1 Ack=19 Win=22528 Len=0 TSval=1654559293 TSecr=461108310
1179139	897.825315	162.142.125.207	64.176.213.39	SMTP	86	C: EHLO www.censys.io
1179140	897.825350	64.176.213.39	162.142.125.207	TCP	66	25 → 60246 [ACK] Seq=19 Ack=21 Win=44032 Len=0 TSval=461108329 TSecr=1654559295
1179142	897.825495	64.176.213.39	162.142.125.207	SMTP	220	S: 250-forum-mail-receiver.localdomain | PIPELINING | SIZE 10240000 | VRFY | ETRN | ENHANCEDSTATUSCODES | 8BITMIME | DSN | CHUNKING
1179173	897.844902	162.142.125.207	64.176.213.39	SMTP	76	C: STARTTLS
1179174	897.845039	64.176.213.39	162.142.125.207	SMTP	108	S: 502 5.5.1 Error: command not implemented
1179207	897.865559	162.142.125.207	64.176.213.39	TCP	66	60246 → 25 [FIN, ACK] Seq=31 Ack=215 Win=22528 Len=0 TSval=1654559335 TSecr=461108349
1179208	897.865879	64.176.213.39	162.142.125.207	TCP	66	25 → 60246 [FIN, ACK] Seq=215 Ack=32 Win=44032 Len=0 TSval=461108370 TSecr=1654559335
1179237	897.883702	162.142.125.207	64.176.213.39	TCP	66	60246 → 25 [ACK] Seq=32 Ack=216 Win=22528 Len=0 TSval=1654559353 TSecr=461108370
1423203	1062.340039	2001:4860:4864:20::33	2001:19f0:1000:68ec:5400:4ff:fe92:8e2b	TCP	94	45423 → 25 [SYN] Seq=0 Win=65535 Len=0 MSS=1440 SACK_PERM TSval=980279080 TSecr=0 WS=256
1424699	1063.379486	2001:4860:4864:20::33	2001:19f0:1000:68ec:5400:4ff:fe92:8e2b	TCP	94	[TCP Retransmission] 45423 → 25 [SYN] Seq=0 Win=65535 Len=0 MSS=1440 SACK_PERM TSval=980280120 TSecr=0 WS=256
1426247	1064.403473	2001:4860:4864:20::33	2001:19f0:1000:68ec:5400:4ff:fe92:8e2b	TCP	94	[TCP Retransmission] 45423 → 25 [SYN] Seq=0 Win=65535 Len=0 MSS=1440 SACK_PERM TSval=980281144 TSecr=0 WS=256
1427782	1065.427579	2001:4860:4864:20::33	2001:19f0:1000:68ec:5400:4ff:fe92:8e2b	TCP	94	[TCP Retransmission] 45423 → 25 [SYN] Seq=0 Win=65535 Len=0 MSS=1440 SACK_PERM TSval=980282168 TSecr=0 WS=256
1429343	1066.451555	2001:4860:4864:20::33	2001:19f0:1000:68ec:5400:4ff:fe92:8e2b	TCP	94	[TCP Retransmission] 45423 → 25 [SYN] Seq=0 Win=65535 Len=0 MSS=1440 SACK_PERM TSval=980283192 TSecr=0 WS=256
1430904	1067.475717	2001:4860:4864:20::33	2001:19f0:1000:68ec:5400:4ff:fe92:8e2b	TCP	94	[TCP Retransmission] 45423 → 25 [SYN] Seq=0 Win=65535 Len=0 MSS=1440 SACK_PERM TSval=980284216 TSecr=0 WS=256
1433947	1069.523326	2001:4860:4864:20::33	2001:19f0:1000:68ec:5400:4ff:fe92:8e2b	TCP	94	[TCP Retransmission] 45423 → 25 [SYN] Seq=0 Win=65535 Len=0 MSS=1440 SACK_PERM TSval=980286264 TSecr=0 WS=256
1440507	1073.555346	2001:4860:4864:20::33	2001:19f0:1000:68ec:5400:4ff:fe92:8e2b	TCP	94	[TCP Retransmission] 45423 → 25 [SYN] Seq=0 Win=65535 Len=0 MSS=1440 SACK_PERM TSval=980290296 TSecr=0 WS=256
1452771	1081.619544	2001:4860:4864:20::33	2001:19f0:1000:68ec:5400:4ff:fe92:8e2b	TCP	94	[TCP Retransmission] 45423 → 25 [SYN] Seq=0 Win=65535 Len=0 MSS=1440 SACK_PERM TSval=980298360 TSecr=0 WS=256
1476480	1098.003562	2001:4860:4864:20::33	2001:19f0:1000:68ec:5400:4ff:fe92:8e2b	TCP	94	[TCP Retransmission] 45423 → 25 [SYN] Seq=0 Win=65535 Len=0 MSS=1440 SACK_PERM TSval=980314744 TSecr=0 WS=256
1511662	1122.242370	209.85.160.45	64.176.213.39	TCP	74	45424 → 25 [SYN] Seq=0 Win=65535 Len=0 MSS=1412 SACK_PERM TSval=806841994 TSecr=0 WS=256
1511663	1122.242862	64.176.213.39	209.85.160.45	TCP	74	25 → 45424 [SYN, ACK] Seq=0 Ack=1 Win=43440 Len=0 MSS=1460 SACK_PERM TSval=51132547 TSecr=806841994 WS=1024
1511715	1122.273627	209.85.160.45	64.176.213.39	TCP	66	45424 → 25 [ACK] Seq=1 Ack=1 Win=269824 Len=0 TSval=806842025 TSecr=51132547
1511825	1122.343466	64.176.213.39	209.85.160.45	SMTP	84	S: 220 ESMTP server
1511876	1122.374090	209.85.160.45	64.176.213.39	TCP	66	45424 → 25 [ACK] Seq=1 Ack=19 Win=269824 Len=0 TSval=806842125 TSecr=51132647
1511877	1122.374242	209.85.160.45	64.176.213.39	SMTP	96	C: EHLO mail-oa1-f45.google.com
1511878	1122.374276	64.176.213.39	209.85.160.45	TCP	66	25 → 45424 [ACK] Seq=19 Ack=31 Win=44032 Len=0 TSval=51132678 TSecr=806842126
1511880	1122.374429	64.176.213.39	209.85.160.45	SMTP	220	S: 250-forum-mail-receiver.localdomain | PIPELINING | SIZE 10240000 | VRFY | ETRN | ENHANCEDSTATUSCODES | 8BITMIME | DSN | CHUNKING
1511929	1122.405234	209.85.160.45	64.176.213.39	SMTP	112	C: MAIL FROM:<[REDACTED]@gmail.com> SIZE=3017
1511930	1122.405311	209.85.160.45	64.176.213.39	SMTP	102	C: RCPT TO:<[CATEGORY]@forum.tasat.org>
1511931	1122.405404	64.176.213.39	209.85.160.45	TCP	66	25 → 45424 [ACK] Seq=173 Ack=113 Win=44032 Len=0 TSval=51132709 TSecr=806842157
1511932	1122.405532	209.85.160.45	64.176.213.39	SMTP	2866	C: BDAT 3017 LAST | DATA fragment, 2784 bytes
1511933	1122.405660	209.85.160.45	64.176.213.39	SMTP/IMF	299	from: Todd Zimmerman <[REDACTED]@gmail.com>, subject: Space operas where the hero is not a "Chosen One",  (text/plain) (text/html)
1511993	1122.446635	64.176.213.39	209.85.160.45	TCP	66	25 → 45424 [ACK] Seq=173 Ack=3146 Win=41984 Len=0 TSval=51132751 TSecr=806842157
1512387	1122.715764	64.176.213.39	209.85.160.45	SMTP	94	S: 250 2.1.0 Ok | 250 2.1.5 Ok
1512445	1122.751435	209.85.160.45	64.176.213.39	TCP	66	45424 → 25 [ACK] Seq=3146 Ack=201 Win=269824 Len=0 TSval=806842503 TSecr=51133020
1512446	1122.751497	64.176.213.39	209.85.160.45	SMTP	114	S: 250 2.0.0 Ok: 3017 bytes queued as 3D37D309944
1512497	1122.782171	209.85.160.45	64.176.213.39	TCP	66	45424 → 25 [ACK] Seq=3146 Ack=249 Win=269824 Len=0 TSval=806842534 TSecr=51133055
1512499	1122.783518	209.85.160.45	64.176.213.39	SMTP	72	C: QUIT
1512500	1122.783562	64.176.213.39	209.85.160.45	TCP	66	25 → 45424 [ACK] Seq=249 Ack=3152 Win=43008 Len=0 TSval=51133087 TSecr=806842535
1512501	1122.783584	209.85.160.45	64.176.213.39	TCP	66	45424 → 25 [FIN, ACK] Seq=3152 Ack=249 Win=269824 Len=0 TSval=806842535 TSecr=51133055
1512503	1122.783969	64.176.213.39	209.85.160.45	SMTP	81	S: 221 2.0.0 Bye
1512504	1122.783994	64.176.213.39	209.85.160.45	TCP	66	25 → 45424 [FIN, ACK] Seq=264 Ack=3153 Win=43008 Len=0 TSval=51133088 TSecr=806842535
1512555	1122.814604	209.85.160.45	64.176.213.39	TCP	54	45424 → 25 [RST] Seq=3153 Win=0 Len=0

SES는 자신들만 아는 이유로 패킷 12253(FIN)에서 연결을 종료합니다.

그 이유에 대해서는 AWS에 문의하셔야 합니다.

정말 감사합니다! carrd.co 지원팀에 로그 확인을 요청했는데, 그 회사가 apparently 이웃한 별계에 있는 것 같습니다. 추가 정보를 얻기까지 시간이 좀 걸릴 것 같습니다.

음, carrd.co 측에서는 "기회주의적 TLS(opportunistic TLS)"를 사용하며, 이는 암호화되지 않은 연결로 폴백(fallback)되어야 한다고 주장한 것 외에는 어떤 지원 자료도 제공하지 않았습니다.

통과하지 못했던 메일 서버 건강 테스트 항목은 SMTP 배너가 역 DNS PTR 레코드에서 제공된 도메인과 일치하지 않는 것이었습니다. meta의 다른 게시물에서 mail-receiver.yml의 env: 섹션에 아래 내용을 추가하는 아이디어를 찾아냈습니다.

POSTCONF_smtpd_banner: forum.tasat.org ESMTP $mail_name

이로 인해 SMTP 배너 불일치 경고가 해결되었고, 수신 메일 실패 원인이 HELO 단계에서 연결이 끊기는 것에서 STARTTLS 단계에서 연결이 끊기는 것으로 바뀌었습니다.

결국 TLS를 활성화했고, 이제 연락처 폼에서 온 이메일이 정상적으로 도착합니다.

이제 프로세스가 작동하기는 하지만, 웹 폼을 통해 주제를 수집하려는 제 전체 구상에 결함이 있다는 점이 드러났습니다. 하지만 그것은 또 다른 주제로 다뤄야 할 일입니다.