CentOS 5.5にPostfixがインストールされています。デフォルト設定でlocal配信エージェントを使用したいが、-Maildir directoryスタイルのメールボックスでメールを保存したい。
(デフォルトとして)保存するメールボックスを次の場所に設定すると、
mail_spool_directory = /var/spool/mail/
そして、私は手動でmaildirを作成するので、次のようになります。
[root@dx2200 /]# ls -lah /var/spool/mail/
total 32K
drwxrwxr-x 4 root mail 4.0K Mar 15 15:01 .
drwxr-xr-x 13 root root 4.0K Mar 15 14:33 ..
drwxr-xr-x 5 root root 4.0K Mar 15 14:52 marshra
drwxr-sr-x 5 pedro mail 4.0K Mar 15 15:01 pedro
[root@dx2200 /]#
[root@dx2200 /]# ls -lah /var/spool/mail/pedro/
total 40K
drwxr-sr-x 5 pedro mail 4.0K Mar 15 15:01 .
drwxrwxr-x 4 root mail 4.0K Mar 15 15:01 ..
drwxr-sr-x 2 pedro mail 4.0K Mar 15 15:01 cur
drwxr-sr-x 2 pedro mail 4.0K Mar 15 15:01 new
drwxr-sr-x 2 pedro mail 4.0K Mar 15 15:03 tmp
[root@dx2200 /]#
次に、ローカルユーザーpedro
にメールを送信しようとすると、メッセージが配信されず、/var/log/maillog
は次のように言います。
Mar 15 15:11:00 dx2200 postfix/local[4266]: warning: maildir access problem for UID/GID=1014/1014: error writing message: Permission denied
Mar 15 15:11:00 dx2200 postfix/local[4266]: warning: perhaps you need to create the maildirs in advance
Mar 15 15:11:00 dx2200 postfix/local[4266]: 8D5D11310056: to=<[email protected]>, orig_to=<pedro>, relay=local, delay=0.04, delays=0.02/0.01/0/0.01, dsn=5.3.0, status=bounced (maildir delivery failed: error writing message: Permission denied)
virtual配信エージェントで同様の問題があり、virtual_mailbox_base
を/var/spool/vmail
からホームディレクトリ/home/vmail
に変更すると問題が解決しました。 local配信エージェントでもそれを行う必要がありますか? AND IF SO-/var/spool
にメールを保存できないのはなぜですか?
編集:コメントに従って完全に書き直された回答
この問題は、SELinuxに関連している可能性があります。実行できます。 sestatus
が有効か無効かを確認します。
Maildir配信の場合、postfixは対応するユーザーに変更されるため、宛先ディレクトリーはユーザーが書き込み可能である必要があります。これはすでに事実であるようです。プライバシー上の理由から、chmod -R o-rwx /var/spool/mail/*
をお勧めします
完全を期すために:mboxファイルを使用する場合、スプールディレクトリは、chmod -R g+rwX /var/spool/mail
を使用して取得するmail
グループによって書き込み可能である必要があります。
私はこれとまったく同じ問題をCentOS 7で抱えていました。 SELinuxをオフにしたところ、うまくいきました。したがって、問題は確かにSELinuxです。
強制タイプを確認するには:getenforce
完全にオフにするには、次のように入力します:setenforce 0
あなたの許可:
drwxr-sr-x 2 pedro mail xxxx cur,new,tmp
pedro(あなた)だけが書き込み、mail(サーバー)は読み取りのみできます。
chmod 700
間違った権限を持つサブディレクトリの下のユーザーディレクトリで同じエラーが発生しました。たとえば、「user1」のホームディレクトリは/home/subdir/user1
でした。また、subdirには「その他」の実行権限がありませんでした。
chmod 755 /home/subdir
私のために問題を修正しました。ユーザーディレクトリには、依然として「700」権限が付与されています。
拒否された権限がユーザーのディレクトリではなく、その上のディレクトリにあったため、エラーメッセージは誤解を招くものでした。
/ homeディレクトリの拡張ACLに対処できないpostfixまで同じ問題を追跡しました。
ACLエントリは、ユーザーが特定のグループに所属することにより、ユーザーがACLエントリを明示的にリストしてトラバースできるようにしました。しかし、私はposixを手放すためだけにo = xをリストに追加する必要がありました。