web-dev-qa-db-ja.com

Postfix Dovecot sasl設定の何が問題になっていますか?

http://www.postfix.org/SASL_README.html#server_dovecot_comm descriptionで指定されているようにpostfixとdovecotを構成して、sasl認証をアクティブにしました。

残念ながら、接尾辞はすべての接続を拒否し、ログに次のエラーが表示されます

postfix/smtpd[5238]: fatal: no SASL authentication mechanisms

Ubuntu LTS10.04を使用しています。

ぐるぐる回って、明確な診断を説明せずにこのあいまいなエラーを報告する多くの人々を見ました。問題が鳩小屋側にあるのか、接尾辞側にあるのかは明らかではありません。

[〜#〜] update [〜#〜]postconfで取得したpostfixsasl設定| grep -e "^ smtpd。* sasl"

smtpd_recipient_restrictions = 
    permit_mynetworks,
    permit_sasl_authenticated,
    reject_unauth_destination,
    check_client_access hash:/etc/postfix/access,
    reject_rbl_client bl.spamcop.net,
    reject_rbl_client sbl-xbl.spamhaus.org,
    reject_rbl_client korea.services.net
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_tls_security_options = noanonymous
smtpd_sasl_type = dovecot

Wittelnet localhost 25に接続しようとすると、上記のメッセージで接続がすぐに閉じられます。コメントアウトsmtpd_sasl_auth_enable = yesは、saslを無効にし、接続は正常に完了します。

dovecot -nで取得されたDovecot構成

# 1.2.9: /etc/dovecot/dovecot.conf
# OS: Linux 2.6.32-41-generic i686 Ubuntu 10.04.4 LTS 
log_timestamp: %Y-%m-%d %H:%M:%S 
protocols: imaps
ssl_cert_file: /home/xxxx/cacert/xxxx.net/server.crt
ssl_key_file: /home/xxxx/cacert/xxxx.net/server.key
verbose_ssl: yes
login_dir: /var/run/dovecot/login
login_executable: /usr/lib/dovecot/imap-login
mail_privileged_group: mail
mail_location: maildir:~/Maildir
mbox_write_locks: fcntl dotlock
auth default:
  mechanisms: plain login
  passdb:
    driver: pam
  userdb:
    driver: passwd
  socket:
    type: listen
    client:
      path: /var/spool/postfix/private/auth
      mode: 432
      user: postfix
      group: postfix

Xxxxで隠された実数値

root@xxxx:/etc/postfix# stat /var/spool/postfix/private/auth 
  File: «/var/spool/postfix/private/auth»
  Size: 0           Blocks: 0          IO Block: 4096   socket
Device: 801h/2049d  Inode: 6817165     Links: 1
Access: (0660/srw-rw----)  Uid: (  111/ postfix)   Gid: (  120/ postfix)
Access: 2012-08-10 16:47:06.000000000 +0200
Modify: 2012-08-10 16:46:09.000000000 +0200
Change: 2012-08-10 16:46:09.000000000 +0200

[〜#〜] update [〜#〜]:変更するとエラーが削除されます smtpd_tls_auth_only =いいえ に smtpd_tls_auth_only =はい。これで、リモートホストからローカルメールボックスへのメールを受信できます。

接続できるようにするには、STARTTLSに接続するようにMUAを構成する必要があります。 SSL/TLSで接続しようとすると、接続がハングします。 STARTTLSを使用すると、接続は確立されますが、匿名であるため、メールリレーが拒否されます。これを有効にしたかったのです。これがsyslogに表示されるものです。

postfix/smtpd[7715]: connect from unknown[192.168.2.17]
postfix/smtpd[7715]: setting up TLS connection from unknown[192.168.2.17]
postfix/smtpd[7715]: Anonymous TLS connection established from unknown[192.168.2.17]: TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)

[〜#〜] update [〜#〜]postfixサーバーを介してメールを中継しようとしたときのdovecotauth_debug出力。これはおそらく接尾辞構成の問題です。

postfix/smtpd[8186]: connect from unknown[192.168.2.17]
postfix/smtpd[8186]: setting up TLS connection from unknown[192.168.2.17]
postfix/smtpd[8186]: Anonymous TLS connection established from unknown[192.168.2.17]: TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)
dovecot: auth(default): new auth connection: pid=8186
dovecot: auth(default): client in: AUTH#0111#011PLAIN#011service=smtp#011nologin#011lip=192.168.2.3#011rip=192.168.2.17#011secured#011resp=<hidden>
home dovecot: auth-worker(default): pam(yyyy,192.168.2.17): lookup service=dovecot
home dovecot: auth-worker(default): pam(yyyy,192.168.2.17): #1/1 style=1 msg=Password: 
home dovecot: auth(default): client out: OK#0111#011user=yyyy
postfix/smtpd[8186]: NOQUEUE: reject: RCPT from unknown[192.168.2.17]: 554 5.7.1 <[email protected]>: Relay access denied; from=<[email protected]> to=<[email protected]> proto=ESMTP helo=<[192.168.2.17]>
postfix/smtpd[8186]: disconnect from unknown[192.168.2.17]

これは、postfixがdovecotと適切に通信することを意味し、dovecotはトランザクションの最後にOk)を返すため、認証が機能すると思います。

ローカルアカウントへの送信は機能し、MUAは期待どおりにTLSを使用します。したがって、残っている唯一の問題は、認証されたユーザーのリレーを許可することです。と思った

smtpd_recipient_restrictions =
    permit_mynetworks,
    permit_sasl_authenticated,
    reject_unauth_destination

postfixのドキュメントを読んだ後は十分でしょう。

[〜#〜] solution [〜#〜]:コメントアウトすると、smtpd_sender_restrictionパラメータリレーが可能でした。疑わしい議論を一つずつコメントアウトして見つけました。何がメールリレーをブロックしているのかわかりません。

smtpd_sender_restrictions =
    permit_mynetworks,
    reject_sender_login_mismatch,
    reject_unauth_destination,
    reject_unauth_pipelining,
    reject_unknown_sender_domain
   regexp:/etc/postfix/forbid_from
2
chmike

私は自分で問題を解決しました。

リレーが失敗する原因となるパラメータは

smtpd_sender_restrictions = ..., reject_unauth_destination, ...

削除されると、sasl認証済みユーザーのリレーが可能になりました。

1
chmike

おそらく、いくつかの質問でこれをトラブルシューティングできます。

  • Dovecotは実行されていますか?
  • IMAP/POPクライアントで認証できますか?
  • /var/spool/postfix/private/authで利用可能なソケットはありますか?
  • ソケットはpostfixユーザーが読み取り/書き込み可能ですか?

これらの質問のいずれかに対する答えが「いいえ」の場合、問題が見つかりました。答えがすべて「はい」の場合は、doveconf -nを投稿してください

2
dotplus