
Ubuntu 20.04 LTS를 실행하는 최신 서버로 MTA를 이전하고 있습니다. SMTPS는 잘 작동하므로 클라이언트가 인증 후 메일을 보낼 수 있습니다. 그러나 로컬 배달을 위해 원격 MTA에서 메일을 보낼 때 postfix로 인해 실패합니다 fatal: no SASL authentication mechanisms
.
Dec 28 12:22:03 smtp postfix/smtpd[63402]: connect from unknown[1.2.3.4]
Dec 28 12:22:03 smtp postfix/smtpd[63402]: warning: xsasl_cyrus_server_get_mechanism_list: no applicable SASL mechanisms
Dec 28 12:22:03 smtp postfix/smtpd[63402]: fatal: no SASL authentication mechanisms
Dec 28 12:22:04 smtp postfix/master[63342]: warning: process /usr/lib/postfix/sbin/smtpd pid 63402 exit status 1
Dec 28 12:22:04 smtp postfix/master[63342]: warning: /usr/lib/postfix/sbin/smtpd: bad command startup -- throttling
유사한 문제에 관한 기존 질문이 여기에 있습니다. 하지만 이번에는 다릅니다:
- SASL은 saslauthd를 통해 LDAP 디렉토리에 대해 인증하면서 제대로 작동합니다. 따라서 SASL용 플러그인 설치가 누락되지 않습니다.
- 인증은 SMTPS를 통해 연결할 때 잘 작동합니다. 일반 SMTP 포트 25에서는 실패합니다.
netcat으로 SMTP 연결을 테스트할 때 서버의 HELO 문자열을 보내기 전에 연결이 닫힙니다. 그래서 저는 이것이 smtpd_client_restrictions
다음 과 관련이 있다는 것을 알아냈습니다./etc/postfix/main.cf:
smtpd_client_restrictions =
permit_sasl_authenticated
# postgrey:
check_policy_service inet:localhost:10023
이는 인증된 발신자의 발신 메일이 그레이리스팅 대상이 되는 것을 방지하기 위해 필요합니다.
대신에/etc/postfix/main.cfSASL은 다음과 같이 구성됩니다.
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous,noplaintext
smtpd_sasl_tls_security_options = noanonymous
broken_sasl_auth_clients = yes
여기의 2행과 3행은 암호화되지 않은 SMTP에서 일반 텍스트 로그인을 방지하는 데 필요하지만 클라이언트가 STARTTLS를 통해 TLS를 시작한 후 또는 클라이언트가 SMTPS를 통해 연결하는 경우 이를 허용합니다. 모든 인증이 TLS로 암호화된 SMTPS를 통과하도록 강제하기 위해 STARTTLS 시나리오를 삭제할 수 있으며 SMTPS에 대해서만 master.cf를 통해 SASL을 활성화할 수 있습니다. 그러나 기존 사용자는 설정을 전혀 조정할 수 없습니다.
답변1
내가 알 수 있는 한, 문제의 원인은 다음과 같습니다.
smtpd_sasl_security_options = noanonymous,noplaintext
saslauthd를 통해 LDAP 디렉토리에 대해 인증하는 SASL과 결합됩니다. 이로 인해 PLAIN 및 LOGIN이 로그인 방법으로만 사용 가능해졌습니다. 여기 로 인해 둘 다 비활성화되었습니다 noplaintext
. 사용 가능한 SASL 방법이 없을 때 postfix가 인증을 제공하지 않기를 원합니다.
테스트 목적으로나는 할 수 있었다고치다다른 로그인 방법을 추가하면 됩니다./etc/postfix/sasl2/smtpd.conf:
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN CRAM-MD5
이러한 방식으로 SMTP는 원격 MTA를 위해 SMTP에서 들어오는 연결을 수락했습니다.그러나 이는 해결책이 아닙니다.현재로서는 실제 클라이언트가 인증을 위해 선택하는 로그인 방법이 있지만 성공할 것으로 예상되지는 않습니다. 보다http://www.postfix.org/SASL_README.htmlsaslauthd와 함께 사용할 Cyrus SASL 설정에 대한 추가 정보는 다음을 참조하세요.
그래서 계속 검색하다가 분명히 잘못 읽었던 또 다른 옵션을 발견하여 구성 전송을 건너뛰었습니다 smtpd_tls_auth_only
. 이 부울 옵션은 인증에 TLS가 필요한지 여부를 제어합니다. 이는 no
기본적으로 설정되므로 암호화되지 않은 SMTP에 대해 SASL 인증이 설정됩니다. 이 옵션을 yes
in 으로 전환한 후main.cffile SMTP가 다시 잘 작동하고 있습니다.
답변2
master.cf 파일에서 이 줄의 주석 처리가 제거된 것을 발견했습니다.
-o smtpd_tls_auth_only=yes