
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 経由で接続している場合は、それを受け入れます。STARTTLS シナリオを削除して、すべての認証を TLS 暗号化 SMTPS 経由で強制し、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
メイン.cfファイル SMTP が再び正常に動作するようになりました。
答え2
修正方法はmaster.cfファイルのこの行のコメントを解除することだと分かりました。
-o smtpd_tls_auth_only=yes