Maildir フォルダ、仮想ユーザー メール フォルダの所有者と権限に関する Postix または Dovecot デバッグ ログ

Maildir フォルダ、仮想ユーザー メール フォルダの所有者と権限に関する Postix または Dovecot デバッグ ログ

Maildir と、所有者と権限が存在するフォルダーに関する完全なチュートリアルが見つかりません。もしすでに見つけた場合は、ぜひ共有してください。

とにかく、Postfix、Dovecot ログ、またはその他のツールを使用して Maildir 構成に関連するエラー出力を取得する方法があるかどうか疑問に思っています (このフォルダーの所有者が間違っているか、権限が不足しているか、作成されていない場合など)。

フォルダーと設定を送ってくださいとおっしゃると思いますが、今後の他のケースのためにこれをデバッグする方法を知りたいのです。

私が本当に知りたいのは、例えば、私の仮想ユーザーには/home/user/domain/usermail/Maildirがあるということです。

ホーム、ユーザー、ドメイン、ユーザーメール、Maildir の権限と所有者は何を持っていなければならないか

私が最も気にかけているのは、フォルダーのアクセス許可に関連する問題をデバッグする方法を学ぶことだということを覚えておいてください。

そして、dovecot.conf には次の記述があります:

 verbose_ssl=yes
 mail_debug=yes
 auth_debug=yes
 auth_verbose=yes

そしてmaster.cfのpostfix confの次の行

smtp    inet    n       -       n       -       -       smtpd -v
submission inet n       -       n       -       -       smtpd -v

ところで、drwxr-s--- の権限はユーザーメール フォルダーで大丈夫ですか?

答え1

仮想ユーザーの場合は、システム ユーザー アカウントを作成し、そのアカウントにメールを所有させてから、Postfix と Dovecot でそのユーザーの UID と GID を設定する必要があります。

私の関連部分は次のとおりですdovecot.conf:

userdb {
  driver = static
  args = uid=8 gid=12 home=/var/spool/mail/%n
}

mail_location = maildir:~
mail_uid = 8
mail_gid = 12

userdb は、ユーザー名とパスワードだけを含む非常にシンプルな passwd のようなファイルで、他のすべてはuserdb {...}上記の実際のブロックにハードコードされています。そのため、UID と GID、およびユーザーの「ホーム」は、/var/spool/mail使用されたログインで開始されます (事前に passwd ファイルで定義されていると仮定します。そうでない場合はアクセスが拒否されます)。

mail_locationメールは maildir 形式であり、~(home) にあることを伝えます。これは、上記の userdb から取得した「ホーム」パスに対応します。 mail_gid/uidメールの所有権を、メールを所有する対応するシステム ユーザーに設定します。これは、Postfix でも同じであるはずです。

接尾辞main.cf:

virtual_mailbox_base = /var/spool/mail
virtual_mailbox_maps = hash:/etc/postfix/vmailboxes
virtual_uid_maps = static:8
virtual_gid_maps = static:12

Dovecot と同じベース ディレクトリですが、 に/etc/postfix/vmailboxesは という構文だけがある<mail user account> <mail directory>/ため、たとえば が含まれている場合、serverfault serverfault/に受信されたすべてのメールserverfault@domainが に保存されることを Postfix に指示します。/var/spool/mail/serverfaultこれは、ユーザー名でログインしたときに Dovecot がメールを検索する場所に対応しますserverfault

virtual_uid/gid_mapsメールの所有権を、事前に選択/作成したシステム ユーザーに設定します。これは Dovecot と同じである必要があります。

エラーを表示するために必要なログ記録の特定のオプションについては知りませんが、仮想メール フォルダーのアクセス許可を間違えると、特別な設定をしなくても Dovecot がログに記録され始めます (dovecot.conf にログ記録関連のオプションはありません)。

Mar 07 12:54:04 sanctuary dovecot[2175]: imap(username): Error: chdir(/var/spool/mail/username/) failed: Permission denied (euid=8(mail) egid=12(mail) missing +x perm: /var/spool/mail/username, dir owned by 0:0 mode=0700)
Mar 07 12:54:04 sanctuary dovecot[2175]: imap(username): Error: chdir(/var/spool/mail/username) failed: Permission denied
Mar 07 12:54:04 sanctuary dovecot[2175]: imap(username): Error: opendir(/var/spool/mail/username) failed: Permission denied (euid=8(mail) egid=12(mail) missing +r perm: /var/spool/mail/username)
Mar 07 12:54:04 sanctuary dovecot[2175]: imap(username): Error: opendir(/var/spool/mail/username) failed: Permission denied (euid=8(mail) egid=12(mail) missing +r perm: /var/spool/mail/username)
Mar 07 12:54:04 sanctuary dovecot[2175]: imap(username): Error: stat(/var/spool/mail/username/tmp) failed: Permission denied (euid=8(mail) egid=12(mail) missing +x perm: /var/spool/mail/username, dir owned by 0:0 mode=0700)
Mar 07 12:54:04 sanctuary dovecot[2175]: imap(username): Error: stat(/var/spool/mail/username/tmp) failed: Permission denied (euid=8(mail) egid=12(mail) missing +x perm: /var/spool/mail/username, dir owned by 0:0 mode=0700)
Mar 07 12:54:04 sanctuary dovecot[2175]: imap(username): Error: stat(/var/spool/mail/username/tmp) failed: Permission denied (euid=8(mail) egid=12(mail) missing +x perm: /var/spool/mail/username, dir owned by 0:0 mode=0700)
Mar 07 12:54:09 sanctuary dovecot[2175]: imap(username): Error: chdir(/var/spool/mail/username/) failed: Permission denied (euid=8(mail) egid=12(mail) missing +x perm: /var/spool/mail/username, dir owned by 0:0 mode=0700)
Mar 07 12:54:09 sanctuary dovecot[2175]: imap(username): Error: chdir(/var/spool/mail/username) failed: Permission denied
Mar 07 12:54:09 sanctuary dovecot[2175]: imap(username): Error: stat(/var/spool/mail/username/.Sent Messages/tmp) failed: Permission denied (euid=8(mail) egid=12(mail) missing +x perm: /var/spool/mail/username, dir owned by 0:0 mode=0700)
Mar 07 12:54:09 sanctuary dovecot[2175]: imap(username): Error: stat(/var/spool/mail/username/tmp) failed: Permission denied (euid=8(mail) egid=12(mail) missing +x perm: /var/spool/mail/username, dir owned by 0:0 mode=0700)
Mar 07 12:54:09 sanctuary dovecot[2175]: imap(username): Error: stat(/var/spool/mail/username/.Sent Messages/tmp) failed: Permission denied (euid=8(mail) egid=12(mail) missing +x perm: /var/spool/mail/username, dir owned by 0:0 mode=0700)
Mar 07 12:54:09 sanctuary dovecot[2175]: imap(username): Error: stat(/var/spool/mail/username/tmp) failed: Permission denied (euid=8(mail) egid=12(mail) missing +x perm: /var/spool/mail/username, dir owned by 0:0 mode=0700)
Mar 07 12:54:10 sanctuary dovecot[2175]: imap(username): Error: stat(/var/spool/mail/username/.Sent Messages/tmp) failed: Permission denied (euid=8(mail) egid=12(mail) missing +x perm: /var/spool/mail/username, dir owned by 0:0 mode=0700)
Mar 07 12:54:10 sanctuary dovecot[2175]: imap(username): Error: stat(/var/spool/mail/username/tmp) failed: Permission denied (euid=8(mail) egid=12(mail) missing +x perm: /var/spool/mail/username, dir owned by 0:0 mode=0700)

権限が間違っている状態でメールを送信しようとすると、Postfix でも同じことが起こります。

Mar 07 12:56:45 sanctuary postfix/virtual[2736]: warning: maildir access problem for UID/GID=8/12: create maildir file /var/spool/mail/username/tmp/1425729405.P2736.sanctuary: Permission denied
Mar 07 12:56:45 sanctuary postfix/virtual[2736]: warning: perhaps you need to create the maildirs in advance
Mar 07 12:56:45 sanctuary postfix/virtual[2736]: E752F186: to=<username@sanctuary>, relay=virtual, delay=0.05, delays=0.03/0.01/0/0.01, dsn=4.2.0, status=deferred (maildir delivery failed: create maildir file /var/spool/mail/username/tmp/1425729405.P2736.sanctuary: Permission denied)

答え2

dovecot-ldaメールを Maildir に配信するために を使用していると想定します。IIRC ではdovecot-lda、不足している権限に関する詳細情報が表示されます。

dovecot-ldadovecot のグローバル ログ機能にアクセスできません。そのため、ログをdovecot-lda個別に設定する必要があります。したがって、dovecot 設定で「protocol lda {」を探し、必要に応じてパラメータを変更する必要がありますlog_pathinfo_log_pathここにファイルを置く場合、それらは dovecot-lda によって書き込み可能である必要があり、syslog を使用する場合 (つまり、パラメータを空のままにする場合)、/dev/log の権限を変更する必要があります。

dovecot wiki に詳細が記載されています:http://wiki2.dovecot.org/LDA

ところで、ローカル メール配信の問題を調べたい場合、postfix で SMTP と送信の詳細ログは必要ありません。

関連情報