Ubuntu Server 22.04 Postfix / Dovecotエラー:postfix / smtpd致命的:SASL認証メカニズム

Ubuntu Server 22.04 Postfix / Dovecotエラー:postfix / smtpd致命的:SASL認証メカニズム

Ubuntuの公式ガイドに従ってください。Postfixのインストールと設定、私が走るとき

telnet localhost 25

わかりました。

Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Connection closed by foreign host.

得たログを見ると

$ sudo tail /var/log/mail.err
Dec  7 11:38:17 <host> postfix/smtpd[8477]: fatal: no SASL authentication mechanisms

上記の例は、仮想マシンで実行されているがクラウド上のサーバーからドメインにリモートで実行さtelnetれていても、同じシナリオが発生します。 (私は何が起こっているのかを理解しやすくするために、仮想マシンでプロセスを複製してみました。)

以前の投稿と新しい投稿、ブログ、記事の両方を読んで考えることができるすべての設定を試しましたが、エラーは続きます。私は何が間違っているのか分かりません。私の設定:

/etc/postfix/main.cf

# See /usr/share/postfix/main.cf.dist for a commented, more complete version


# Debian specific:  Specifying a file name will cause the first
# line of that file to be used as the name.  The Debian default
# is /etc/mailname.
#myorigin = /etc/mailname

smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
biff = no

# appending .domain is the MUA's job.
append_dot_mydomain = no

# Uncomment the next line to generate "delayed mail" warnings
#delay_warning_time = 4h

readme_directory = no

# See http://www.postfix.org/COMPATIBILITY_README.html -- default to 3.6 on
# fresh installs.
compatibility_level = 3.6



# TLS parameters
smtpd_tls_cert_file = /etc/ssl/certs/server.crt
smtpd_tls_key_file = /etc/ssl/private/server.key
smtpd_tls_security_level = may

smtp_tls_CApath=/etc/ssl/certs
smtp_tls_security_level = may
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache


smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination
myhostname = <host>
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination = <host>, <host>.local, <host>, localhost.localdomain, localhost
relayhost =
mynetworks = 127.0.0.0/8 [::1]/128 [::ffff:127.0.0.0]/104 [::1]/128 192.168.30.0/24
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
inet_protocols = all
home_mailbox = Maildir/
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_local_domain =
smtpd_sasl_security_options = noanonymous,noplaintext
smtpd_sasl_tls_security_options = noanonymous
broken_sasl_auth_clients = yes
smtpd_sasl_auth_enable = yes
smtpd_recipient_restrictions = permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination
smtp_tls_note_starttls_offer = yes
smtpd_tls_loglevel = 4
smtpd_tls_received_header = yes

/etc/dovecot/conf.d/10-master.conf

service auth {
  unix_listener auth-userdb {
    #mode = 0666
    #user = 
    #group = 
  }

  # Postfix smtp-auth
  unix_listener /var/spool/postfix/private/auth {
    mode = 0660
    user = postfix
    group = postfix
  }

  # Auth process is run as this user.
  #user = $default_internal_user
}

公式ガイドに従って作成したVMのSSLファイルセキュリティ - 証明書。私のクラウドサーバーでLet's encrypt / Certbotファイルを使用しようとしています。私はそれらを次に追加します/etc/dovecot/conf.d/10-ssl.conf文書

ssl_cert = </etc/ssl/certs/server.crt
ssl_key = </etc/ssl/private/server.key

設定が変更されるたびにPostfixサービスとDovecotサービスを再起動しました。サービスの説明:

サフィックス

● postfix.service - Postfix Mail Transport Agent
     Loaded: loaded (/lib/systemd/system/postfix.service; enabled; vendor preset: enabled)
     Active: active (exited) since Thu 2023-12-07 12:26:07 UTC; 9min ago
       Docs: man:postfix(1)
    Process: 3362 ExecStart=/bin/true (code=exited, status=0/SUCCESS)
   Main PID: 3362 (code=exited, status=0/SUCCESS)
        CPU: 1ms

dic 07 12:26:07 <host> systemd[1]: Starting Postfix Mail Transport Agent...
dic 07 12:26:07 <host> systemd[1]: Finished Postfix Mail Transport Agent.

ピジョンロフト

● dovecot.service - Dovecot IMAP/POP3 email server
     Loaded: loaded (/lib/systemd/system/dovecot.service; enabled; vendor preset: enabled)
     Active: active (running) since Thu 2023-12-07 12:26:08 UTC; 12min ago
       Docs: man:dovecot(1)
             https://doc.dovecot.org/
   Main PID: 3372 (dovecot)
     Status: "v2.3.16 (7e2e900c1a) running"
      Tasks: 5 (limit: 2220)
     Memory: 3.1M
        CPU: 44ms
     CGroup: /system.slice/dovecot.service
             ├─3372 /usr/sbin/dovecot -F
             ├─3373 dovecot/anvil
             ├─3374 dovecot/log
             ├─3375 dovecot/config
             └─3381 dovecot/stats

dic 07 12:26:08 <host> systemd[1]: Starting Dovecot IMAP/POP3 email server...
dic 07 12:26:08 <host> dovecot[3372]: master: Dovecot v2.3.16 (7e2e900c1a) starting up without any protocols (core dumps disabled)
dic 07 12:26:08 <host> systemd[1]: Started Dovecot IMAP/POP3 email server.

フォローするトラブルシューティングセクションを参照してください。多くの置換を試しましたが、何も機能せず、ログには作業可能な詳細はありません。

問題はすでに長すぎる、たくさん試してみたのでもう作成したくないので、コメントで質問してください。必要に応じて関連情報を追加するように編集します。おそらく私は非常に基本的なものを見逃しているようです。

答え1

優れたサフィックスのデフォルト値を使用することをお勧めします。公式ガイドに従って、最小限(および説明を含む)構成を作成するのが最善です。上記のパラメータのデフォルト値は次のとおりです。

postconf -d | grep -E "smtpd_sasl.*security_options"

smtpd_sasl_security_options = noanonymous
smtpd_sasl_tls_security_options = $smtpd_sasl_security_options

答え2

Ubuntuガイド

人々は期待しただろうUbuntu公式ガイド次のようにしてくださいS結果を与えるテスト可能時間、それがガイドが提示される方法だからです。

終わった後S時間、テストに失敗して混乱していたので、ここでも質問が投稿されました。

ただし、次のようなことが発生しますS起こらないだろう:

ガイドはこの構成を次のように提供します。S:

...
sudo postconf -e 'smtpd_sasl_security_options = noanonymous,noplaintext'
...

気づくnoplaintext

するとツアーガイドが言った。「初期設定結果」:

...
smtpd_sasl_security_options = noanonymous
...
smtpd_tls_auth_only = no

気づくいいえ noplaintextそしてsmtpd_tls_auth_only = noこれに含まれていないものSpostfixデフォルト設定ファイル(バージョン3.6.4)にはありません。

したがってtelnet、設定されている場合は、ガイドが提案したようにテストしても機能しませんnoplaintext。これは、通信が安全に行われなければならず、telnetSSLがサポートされていないという意味だからです。

~からwww.postfix.org/SASL_README

より複雑なポリシーではプレーンテキストメカニズムを許可しますが、TLS暗号化接続を介してのみ許可されます。

/etc/postfix/main.cf:
       smtpd_sasl_security_options = noanonymous, noplaintext
       smtpd_sasl_tls_security_options = noanonymous

テスト:

  • smtpd_sasl_security_options = noanonymous次のように接続するとtelnet機能します。

    telnet <domain> 25
    
  • smtpd_sasl_security_options = noanonymous,noplaintext接続してtelnet 動作しません

  • withsmtpd_sasl_security_options = noanonymous,noplaintextsmtpd_tls_auth_only = yesconnect with の両方をopenssl使用できます。

    openssl s_client -starttls smtp -connect <domain>:25
    
  • とつながってsmtpd_sasl_security_options = noanonymous,noplaintextいるsmtpd_tls_auth_only = noopenssl 動作しません


全体として、Ubuntuガイドは少なくともUbuntu Server 22.04の場合、次のように破損しています。S起こらないだろうだから時間失敗するでしょう。


これらすべてはガイドフォーラムで承認されており、リンクの下に書き直す必要があります。フォーラムでこの記事を改善するのに役立ちます。(アクセスするにはアカウントを作成する必要があります)。ある貢献者が言った内容は次のとおりです。

問題の説明

Telnetを使用すると、メカニズムが適用されます。つまり127.0.0.1 25、プレーンテキストなのでフィルタリングされます。この2つだけを有効にするように求められます(注)、他のメカニズムは使用できません。したがって、致命的なエラーが発生します。postfixsmtpd_sasl_security_options = noanonymous,noplaintextPLAINLOGINdovecotauth_mechanismsSASLno SASL authentication mechanisms

ただし、接続するとMTAとの暗号化された接続があるため、両方が許可されていることがわかりopenssl s_client -connect 127.0.0.1:25 -starttls smtpます。とは匿名ではないため、フィルタリングされるメカニズムはありません。PLAINLOGINsmtpd_sasl_tls_security_options = noanonymousPLAINLOGINpostfix

このnoplaintextディレクティブは、資格情報がプレーンテキストに漏洩しないように聞こえるので、混乱する可能性があります。しかし、TLSを介して使用するように設計されています。つまりPLAINLOGIN実際のプレーンテキストが送信されないことを意味します。

現在のベストプラクティス

現在のベストプラクティスに従うには、ガイドを更新する必要があると思います。 SASL認証はTCP / 25で有効にしないでください。TCP / 465およびTCP / 587でのみ有効にする必要があります。便利なTLSを使用するMTA間(サーバー間)通信のためにポート25を残すのが最善です。ユーザーがTLSと認証(SASL)を実行するsmtps(TCP / 465)/サブミット(TCP / 587)ポートを使用するようにするのが最善です。許可するのが最善です。 )義務的である。残念ながら、書き換える時間はありません。

関連情報