如何為Postfix建立具有足夠權限的Maildir目錄?

如何為Postfix建立具有足夠權限的Maildir目錄?

我有 CentOS 5.5,上面安裝了 Postfix。我想用當地的具有預設設定的投遞代理,但我希望它儲存郵件郵件目錄目錄風格郵箱。

當我將郵箱設定為儲存(預設)時:

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_mailbox_base交付代理,從主目錄更改/var/spool/vmail為主目錄/home/vmail確實有幫助。我也必須這麼做嗎當地的送貨代理?如果是這樣- 為什麼我不能儲存郵件/var/spool

答案1

編輯:答案根據評論完全重寫

該問題可能與 SELinux 有關。您可以執行egsestatus來檢查它是啟用還是停用。

對於maildir傳遞,postfix更改為相應的用戶,因此目標目錄需要用戶可寫入。情況似乎已經如此。出於隱私原因,我建議chmod -R o-rwx /var/spool/mail/*

只是為了完整性:如果使用 mbox 文件,則 spool 目錄需要可由mail您透過使用 取得的群組寫入chmod -R g+rwX /var/spool/mail

答案2

允許 SELinux 策略以命令列形式寫入

semanage permissive -a postfix_local_t 

答案3

我在子目錄下的使用者目錄中遇到了相同的錯誤,該子目錄具有錯誤的權限。例如,「user1」的主目錄是/home/subdir/user1。並且 subdir 對「其他」沒有執行權限。

chmod 755 /home/subdir

為我解決了這個問題。使用者目錄仍具有“700”權限。

這個錯誤訊息具有誤導性,因為被拒絕的權限不是在使用者的目錄上,而是在其上方的目錄上。

答案4

您的權限:

drwxr-sr-x 2 pedro mail xxxx cur,new,tmp

只有 pedro(你)可以寫,mail(伺服器)只能讀。

  1. 將使用者更改為郵件,
  2. chmod 700
  3. 再試一次

相關內容