로컬 배달을 위해 원격 MTA에서 들어오는 SMTP에서 Postfix가 실패합니다.

로컬 배달을 위해 원격 MTA에서 들어오는 SMTP에서 Postfix가 실패합니다.

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 인증이 설정됩니다. 이 옵션을 yesin 으로 전환한 후main.cffile SMTP가 다시 잘 작동하고 있습니다.

답변2

master.cf 파일에서 이 줄의 주석 처리가 제거된 것을 발견했습니다.

-o smtpd_tls_auth_only=yes

관련 정보