SMTP 503 5.5.1 오류: 인증이 활성화되지 않음

로컬 Postfix SMTP를 사용 중인데 다음 오류가 발생합니다:

503 5.5.1 Error: authentication not enabled

DISCOURSE_SMTP_ADDRESS: mail.xxx.net
DISCOURSE_SMTP_PORT: 587
DISCOURSE_SMTP_USER_NAME: resources@xxx.net
DISCOURSE_SMTP_PASSWORD: password123?
DISCOURSE_SMTP_ENABLE_START_TLS: true # (선택 사항, 기본값 true)
DISCOURSE_SMTP_OPENSSL_VERIFY_MODE: none
DISCOURSE_SMTP_AUTHENTICATION: “plain”

마지막 두 옵션은 최후의 수단으로 추가했지만 효과가 없었습니다.

Docker 컨테이너 내부에서 openssl이나 swaks와 같은 모든 테스트 도구에서는 SMTP 서버가 정상적으로 작동합니다.


root@resources-app:/# swaks --to resources@xxx.net --server mail.xxx.net:587 -tls
=== Trying mail.xxx.net:587...
=== Connected to mail.xxx.net.
<-  220 mail.xxx.net ESMTP Postfix (Ubuntu)
 -> EHLO resources-app
<-  250-mail.xxx.net
<-  250-PIPELINING
<-  250-SIZE 10240000
<-  250-VRFY
<-  250-ETRN
<-  250-STARTTLS
<-  250-ENHANCEDSTATUSCODES
<-  250-8BITMIME
<-  250-DSN
<-  250-SMTPUTF8
<-  250 CHUNKING
 -> STARTTLS
<-  220 2.0.0 Ready to start TLS
=== TLS started with cipher TLSv1.3:TLS_AES_256_GCM_SHA384:256
=== TLS no local certificate set
=== TLS peer DN="/CN=*.xxx.net"
 ~> EHLO resources-app
<~  250-mail.xxx.net
<~  250-PIPELINING
<~  250-SIZE 10240000
<~  250-VRFY
<~  250-ETRN
<~  250-ENHANCEDSTATUSCODES
<~  250-8BITMIME
<~  250-DSN
<~  250-SMTPUTF8
<~  250 CHUNKING
 ~> MAIL FROM:<root@resources-app>
<~  250 2.1.0 Ok
 ~> RCPT TO:<resources@xxx.net>
<~  250 2.1.5 Ok
 ~> DATA
<~  354 End data with <CR><LF>.<CR><LF>
 ~> Date: Tue, 03 Aug 2021 11:04:12 +0000
 ~> To: resources@xxx.net
 ~> From: root@resources-app
 ~> Subject: test Tue, 03 Aug 2021 11:04:12 +0000
 ~> Message-Id: <20210803110412.593268@resources-app>
 ~> X-Mailer: swaks v20181104.0 jetmore.org/john/code/swaks/
 ~>
 ~> This is a test mailing
 ~>
 ~>
 ~> .
<~  250 2.0.0 Ok: queued as 1C4ED8AA
 ~> QUIT
<~  221 2.0.0 Bye
=== Connection closed with remote host.

이 오류는 postfix 설정 파일에 smtp_sasl_auth_enable = yes가 없음을 의미할 수 있습니다. postconf -n의 출력 결과는 무엇이며, 해당 문자열이 포함되어 있나요? 포함되어 있지 않다면 /etc/postfix/main.cf의 주석을 해제하거나 편집한 후 결과를 다시 알려 주세요.

저는 다음 설정을 사용하고 있습니다:
smtp_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous noplaintext
smtpd_tls_security_level = encrypt
smtpd_use_tls = yes

위 두 옵션은 서로 모순된다고 생각합니다. 이 설정이 제대로 작동하려면 Discourse에서 올바른 인증 방법을 설정해야 합니다.

이해가 됩니다. 저는 SASL을 사용하지 않으므로 해당 옵션을 설정해 보안을 강화했습니다.
사용 가능한 메서드는 어떤 것들이 있나요?
또한 SASL이 왜 필수인가요? 이전에 비활성화했을 때 Nextcloud나 Thunderbird 같은 다른 모든 애플리케이션에서 SMTP가 정상적으로 작동했습니다.

SASL은 원격 서버로 이메일을 전송할 때만 필요하지만, 이 서버는 로컬에서만 작동합니다.

감사합니다

제 이해가 틀렸을 수도 있지만, postfix가 실행 중인 호스트와 Docker 컨테이너는 논리적으로 분리되어 있으므로 sasl이 필요하다고 생각합니다.

postfix의 보안 강화(hardening) 수준을 낮춰보시고 어떤 설정이 가장 잘 작동하는지 확인해 보시는 건 어떨까요?

이 파일은 해당 설정들이 어떻게 구성되어 있는지 파악하는 데 도움이 될 것입니다.

discourse/config/discourse_defaults.conf at main · discourse/discourse · GitHub

그 기본값 파일에는 모든 가능한 값이 포함되어 있지 않은 것 같아서, 더 안전한 옵션이 있는지 궁금했습니다. 나중에 코드/라이브러리를 확인해 보겠습니다.

보안 옵션을 제거해도 여전히 해결되지 않습니다.
discourse-doctor를 다시 실행하기 전에 launcher app rebuild를 실행해야 하나요?

감사합니다

d에 주목하세요.

Discourse에는 실제로 smtp로 시작하는 매개변수만 필요하고, smtpd는 필요하지 않습니다.

저는
smtp_sasl_auth_enable = yes

이것만 있고 다른 제한 사항은 없습니다…