10일 전부터 SMTP 이메일이 작동하지 않음 (curl은 정상; 서버에 SMTPS 없음)

안녕하세요,

제 사이트는 몇 년 동안 아무 문제 없이 운영되고 있었습니다. 그런데 갑자기 SMTP가 작동하지 않게 되었습니다. (호스트나 컨테이너에서 설정을 변경한 적은 없습니다.)

저는 SMTP(SMTPS가 아님)를 사용 중입니다. discourse 컨테이너에 들어가서 curl을 사용하여 메일 전송이 가능한지 테스트해 보았습니다:

curl smtp://mail.example.com --mail-from myself@example.com --mail-rcpt receiver@example.com --upload-file email.txt

그러나 Discourse는 메일을 보내지 않으며, 로그에는 단순히 다음과 같이 표시됩니다.

Net::ReadTimeout with #<Socket:(closed)>

호스트의 Postfix 로그에는 다음과 같은 내용이 기록되어 있습니다:

connect from unknown[172.17.0.5]
lost connection after CONNECT from unknown[172.17.0.5]
disconnect from unknown[172.17.0.5] commands=0/0

무엇이 변경되었을지 아는 분이 있을까요?

미리 감사드립니다.

GI

P.S.: 첫 번째 버전의 게시글이 실수로 잘려서 메시지 절반만 게시되었습니다. 방금 편집했습니다.

안녕하세요,

문제를 추적해 보았습니다. 결국 호스트가 모든 수신 메일(컨테이너에서 온 메일도 포함)에 7초의 지연을 부과하고 있는 것으로 밝혀졌습니다. Discourse는 기본적으로 5초 후에 타임아웃이 발생합니다.
containers/app.yml 파일에서 이를 10초로 늘렸습니다:

DISCOURSE_SMTP_OPEN_TIMEOUT: 10
DISCOURSE_SMTP_READ_TIMEOUT: 10

이제 작동합니다… 하지만 호스트의 postfix 지연을 제거하는 방법을 아시는 분이 있을까요? 설정 파일을 열심히 찾아봤는데 아무것도 찾을 수가 없네요…

GI

postscreen을 사용 중이시라면 postscreen_greet_wait와 postscreen_greet_action를 확인해 주세요.

아니면, 연결된 IP의 역방향 조회(reverse lookup)에서 DNS 타임아웃이 발생하여 이 문제가 발생했을 수 있습니다.

아! 정말 감사합니다! 정확히 그 문제였어요.

저는 도커가 일반적으로 할당하는 모든 IP 주소(172.17.0.2부터 10까지)에 대해 정적 IP 주소(가짜 호스트 이름 포함)를 추가했습니다. 그래서 제 컨테이너가 다른 IP로 시작하더라도 nslookup에서 멈추지 않기를 바랍니다.

도커가 모든 컨테이너의 IP 주소를 해석할 수 있는 방법이 있는지 궁금합니다…

다시 한번 감사합니다.