web-dev-qa-db-ja.com

Dovecot(Postfix付き)構成で、auth-userdbにアクセスすると接続が拒否される

...これはタイトルで説明するのが難しいものでした。この説明は問題を強調する必要があります。

環境

  • 私はWorkaround.org tutorial に従ってpostfix、dovecot(およびいくつかの追加プラグイン)スタックをインストールしていました。
  • Ubuntu 12.04マシンでの実行(Vagrant/Chefを備えたVM)
  • Dovecot v2.0.19
  • Postfix v2.9.6

会議ファイル

10マスター

....
service auth {    
unix_listener auth-userdb {
  mode = 0644
  user = vmail
  group = vmail
}
...

編集-追加の構成情報(一部重複)

service auth {
# auth_socket_path points to this userdb socket by default. It's typically
# used by dovecot-lda, doveadm, possibly imap process, etc. Its default
# permissions make it readable only by root, but you may need to relax these
# permissions. Users that have access to this socket are able to get a list
# of all usernames and get results of everyone's userdb lookups.
unix_listener auth-userdb {
  mode = 0644
  user = vmail
  group = vmail
}

# 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
user = dovecot
}

auth-sql

userdb {
  driver = static
  args = uid=vmail gid=vmail home=/var/vmail/%d/%n allow_all_users=yes
}

ls -la/var/run/dovecot/auth-userdb

srw-r--r-- 1 vmail vmail 0 Jun 20 13:04 /var/run/dovecot/auth-userdb

Postfix master.cf

dovecot    unix  -      n       n       -       -       pipe
   flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/dovecot-lda -d ${recipient}

問題

チュートリアルをかなり忠実に実行し、いくつかの小さな変更のみを行いました。 「メール配信のテスト」に到着してecho test | mail [email protected]を実行しました

find /var/vmailに何も表示されていないため、メールは届きませんでした。

サーバーのsyslogに次のエラーが表示されます。

postfix/pickup[16842]: 019023A06AB: uid=1000 from=<vagrant>
postfix/cleanup[19542]: 019023A06AB: message-id=   <20130620140358.019023A06AB@mail-server-berkshelf>
postfix/qmgr[16843]: 019023A06AB: from=<[email protected]>, size=382, nrcpt=1 (queue active)
dovecot: lda: Debug: Loading modules from directory: /usr/lib/dovecot/modules
dovecot: lda: Debug: Module loaded: /usr/lib/dovecot/modules/lib90_sieve_plugin.so
dovecot: lda: Error: userdb lookup: connect(/var/run/dovecot/auth-userdb) failed: Connection refused
dovecot: lda: Fatal: Internal error occurred. Refer to server log for more information.
postfix/pipe[19545]: 019023A06AB: to=<[email protected]>, relay=dovecot, delay=1.2, delays=0.04/0.01/0/1.1, dsn=4.3.0, status=deferred (temporary failure)

「接続が拒否されました」というエラーは、私が攻撃しているエラーのはずです。ここで何が起こっているのかを理解するために多くの場所を検索しましたが、役立つものは何も見つかりませんでした。

誰かが何らかのリードや洞察を提供できますか?解決策は素晴らしいですが、私はいくつかの新しいアイデアを受け入れて試してみたいと思っています。

5
Adam

接続拒否エラーは確かに問題です。 UNIXソケットで拒否された接続は、それほど直感的ではありませんが、ソケットをリッスンしていないことを示しています(通常、プロセスが停止しているか、アドレスとして指定されたファイルがソケットではなかった)。許可のためにdovecotがリスニングのためにソケットを開くことができない場合を除き、これは許可の問題であってはなりません。

Dovecotとpostfixを停止し、/var/run/dovecot/auth-userdbにあるソケットファイルを削除して、postfixとdovecotを再起動してみてください(ユーザーdovecotが/var/run/dovecotに対する権限を持つように実行されていることを確認してください)。通常、これでこの種の問題が修正されます。

NetstatはUNIXドメインソケットも表示します。その出力をチェックし(netstat -nvlap | lessを使用してパスまたはdovecotを検索)、dovecotがリッスンしていることを確認します。

3
Falcon Momot