Postfix дает сбой при входящей SMTP-доставке от удаленных MTA для локальной доставки

Postfix дает сбой при входящей SMTP-доставке от удаленных MTA для локальной доставки

Я переношу MTA на новые серверы под управлением Ubuntu 20.04 LTS. 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 работает нормально, аутентифицируется по каталогу LDAP через saslauthd. Таким образом, нет отсутствующей установки плагина для SASL.
  • Аутентификация работает хорошо при подключении через SMTPS. Она просто не работает на обычном SMTP-порту 25.

При тестировании SMTP-подключения с помощью netcat соединение закрывается до отправки 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, но принимают его после того, как клиент запустил TLS через STARTTLS или в случае подключения клиента через SMTPS. Я вижу, что сценарий STARTTLS можно было бы удалить, чтобы заставить всю аутентификацию проходить через зашифрованный TLS SMTPS, и я мог бы включить SASL через master.cf только для SMTPS. Но существующие пользователи вообще не должны изменять свои настройки.

решение1

Насколько я могу судить, проблема возникла из-за

smtpd_sasl_security_options = noanonymous,noplaintext

в сочетании с аутентификацией SASL против LDAP-каталога через saslauthd. Это приводит к тому, что PLAIN и LOGIN становятся единственными доступными методами входа. Они оба отключены из-за noplaintextэтого. Я хочу, чтобы postfix не предлагал никакой аутентификации, когда нет доступных методов SASL.

Для целей тестированияя могисправитьэто путем добавления еще одного метода входа в систему/etc/postfix/sasl2/smtpd.conf:

pwcheck_method: saslauthd
mech_list: PLAIN LOGIN CRAM-MD5

Таким образом, SMTP принимал входящие соединения по SMTP для удаленных MTA.Однако это не решение.на данный момент существует метод входа, который реальные клиенты выберут для аутентификации, хотя не ожидается, что он когда-либо будет успешным. См.http://www.postfix.org/SASL_README.htmlдля получения дополнительной информации о настройке Cyrus SASL для использования с saslauthd.

Итак, я продолжил поиски и наткнулся на другой параметр, который я, очевидно, неправильно понял и поэтому пропустил передачу конфигурации: smtpd_tls_auth_only. Этот логический параметр контролирует, требуется ли TLS для аутентификации. Он установлен noпо умолчанию, таким образом, заставляя аутентификацию SASL быть настроенной для незашифрованного SMTP. После переключения этого параметра на yesвmain.cfФайл SMTP снова работает нормально.

решение2

Я обнаружил, что исправление заключается в раскомментировании этой строки в файле master.cf

-o smtpd_tls_auth_only=yes

Связанный контент