Postfixログの警告:「NNN制限は無視されました。SASLはサポートされていません」しかし、SASLをサポートしています

Postfixログの警告:「NNN制限は無視されました。SASLはサポートされていません」しかし、SASLをサポートしています

私はpostfix + dovecot + pgsqlを持っています。すべてが期待どおりに動作します。最近スパムを防ぐために、設定のいくつかを変更しました。これで、ログに次のものが表示されます。

localhost postfix/smtpd[2299]: warning: restriction `reject_authenticated_sender_login_mismatch' ignored: no SASL support 

localhost postfix/smtpd[2299]: warning: restriction `reject_unauthenticated_sender_login_mismatch' ignored: no SASL support 

localhost postfix/smtpd[2299]: warning: restriction `reject_authenticated_sender_login_mismatch' ignored: no SASL support 

localhost postfix/smtpd[2299]: warning: restriction `reject_unauthenticated_sender_login_mismatch' ignored: no SASL support 

しかし!

$ postconf -a
cyrus
dovecot

そして

$ ldd /usr/sbin/postfix | grep sasl
    libsasl2.so.3 => /usr/lib/libsasl2.so.3 (0x00007f9508e75000)

私の記憶が正しい場合は、「pacman」を介してpostfixをインストールしました。

警告が表示される理由と回避策は何ですか?

アップデート1:

sudo postconf | grep -i smtpd_sasl

smtpd_sasl_auth_enable = yes
smtpd_sasl_authenticated_header = no
smtpd_sasl_exceptions_networks =
smtpd_sasl_local_domain =
smtpd_sasl_path = private/auth
smtpd_sasl_security_options = noanonymous, noplaintext
smtpd_sasl_service = smtp
smtpd_sasl_tls_security_options = noanonymous
smtpd_sasl_type = dovecot

アップデート2:

その後、master.cf私はこれを見つけました:

 smtp      inet  n       -       n       -       -       smtpd
       -o smtpd_sasl_auth_enable=no

これが理由なのでしょうか?

アップデート3:

返品:

submission inet n       -       y       -       -       smtpd
    -o syslog_name=postfix/submission
    -o smtpd_tls_security_level=encrypt
    -o smtpd_enforce_tls=yes
    -o smtpd_sasl_auth_enable=yes
    -o smtpd_sasl_type=dovecot
    -o smtpd_sasl_path=private/auth
    -o smtpd_sasl_security_options=noanonymous
    -o milter_macro_daemon_name=ORIGINATING
    -o smtpd_sasl_local_domain=$myhostname
    -o smtpd_client_restrictions=permit_sasl_authenticated, reject
    -o smtpd_recipient_restrictions=permit_sasl_authenticated, reject

答え1

まず、メールの送受信に同じIPアドレス(スマートホストと呼ばれる)を使用するとします。

この場合、メッセージは通常、ポート587で送信するために直接送信されますが、ポート25で受信されます。

これはなぜ重要ですか?これは、postfixがポートを使用して接続を処理する方法を識別するためです。

SMTPサーバーの実際のログを見てみましょう。最初のログはポート25接続で発生します。

Nov 26 07:33:45 box postfix/smtpd[128819]: connect from host86-157-106-5.range86-157.btcentralplus.com[86.157.106.5]
Nov 26 07:35:01 box postfix/smtpd[128819]: warning: restriction `reject_authenticated_sender_login_mismatch' ignored: no SASL support
Nov 26 07:35:02 box postfix/smtpd[128819]: NOQUEUE: reject: RCPT from host86-157-106-5.range86-157.btcentralplus.com[86.157.106.5]: 554 5.7.1 Service unavailable; Client host [86.157.106.5] blocked using zen.spamhaus.org; https://www.spamhaus.org/query/ip/86.157.106.5; from=<[email protected]> to=<[email protected]> proto=ESMTP helo=<desktop>
Nov 26 07:35:13 box postfix/smtpd[128819]: disconnect from host86-157-106-5.range86-157.btcentralplus.com[86.157.106.5] ehlo=2 starttls=1 auth=0/1 mail=1 rcpt=0/1 quit=1 commands=5/7

これで、同じIPアドレスから接続するには、ポート587を使用します。

Nov 26 07:40:53 box postfix/smtpd[130170]: disconnect from unknown[185.218.234.97] ehlo=1 mail=1 rcpt=0/1 rset=1 quit=1 commands=4/5
Nov 26 07:43:12 box postfix/submission/smtpd[130244]: connect from host86-157-106-5.range86-157.btcentralplus.com[86.157.106.5]
Nov 26 07:43:31 box postfix/submission/smtpd[130244]: warning: host86-157-106-5.range86-157.btcentralplus.com[86.157.106.5]: SASL plain authentication failed:
Nov 26 07:43:36 box postfix/submission/smtpd[130244]: disconnect from host86-157-106-5.range86-157.btcentralplus.com[86.157.106.5] ehlo=2 starttls=1 auth=0/1 quit=1 commands=4/5

すべての接続に対して同じAUTH PLAINコマンドを使用します。プレーンテキストの検証

何が起こったのか。

まず、理想的な世界では、認証方法がサポートされていると仮定して、クライアントは独自にAUTH PLAINを送信し、サーバーから応答334を受け取ります。その後、クライアントは認証情報を送信します。

ただし、AUTH PLAINを使用すると、同じ行に認証文字列を追加して、1つのコマンドですべてを送信できます。この場合、334行を放棄してすぐに認証に進みます。

250 SMTPUTF8
ehlo desktop
250-box.timothydutton.co.uk
250-PIPELINING
250-SIZE 134217728
250-VRFY
250-ETRN
250-AUTH PLAIN LOGIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250-DSN
250 SMTPUTF8
auth plain <base64 string with email address and wrong password>
535 5.7.8 Error: authentication failed:
quit
221 2.0.0 Bye
closed

上記は実際にはポート587の2番目の接続試行から得られました。

ただし、ポート25は電子メールの受信に使用されるためです。 SASLは使用されません。ポート25のすべての接続がそのサーバーに属するアドレスであるrcptのみを許可するようにサーバーを構成する必要があります。これにより、サーバーがオープンリレーとして機能するのを防ぎます。

したがって、何が起こっているのかは、サーバーがAUTH PLAINコマンドの追加情報を処理し、これが間違っていると言うことです。ただし、実際にはこのポートで認証を使用していないため、重要ではありません。

最初の例の応答では、サーバーは他の防御機能が動作していることがわかります。

注:私は接続の例を示すために使用されるサーバーを所有しています。

関連情報