dovecot收信許可權問題(已解決)
又來麻煩各位了。。。。
CentOS5.3+Postfix,採用dovecot做pop3。現在出了一個小問題,郵件能夠正常發送,但在客戶端用OE收信的時候卻收不到郵件,去伺服器看了下dovecot的log日誌,是許可權的問題,如下:
dovecot: Aug 18 14:33:09 Info: pop3-login: Login: user=<test1@test.cn>, method=PLAIN, rip=192.168.1.97, lip=192.168.1.12
dovecot: Aug 18 14:33:09 Error: POP3(test1@test.cn): open(/var/mailbox/test.cn/test1/Maildir/cur/1250576277.V803I1002f4M162054.mail.test.cn:2,) failed: Permission denied
dovecot: Aug 18 14:33:09 Error: POP3(test1@test.cn): Couldn't init INBOX: Internal error occurred. Refer to server log for more information.
dovecot: Aug 18 14:33:09 Info: POP3(test1@test.cn): Mailbox init failed top=0/0, retr=0/0, del=0/0, size=0
我去該用戶的目錄里看了一下,.../Maildir/cur/中有一封新郵件,但該郵件的所有者是postfix,其他組和用戶的許可權都是空,我手動將該郵件的許可權改了一下,改成其他組和用戶都有read and write的許可權,此時再在客戶端用OE收取,可以正常收信了。但再發一封時問題依舊,新郵件的許可權仍然只是針對Postfix用戶。我想了很久,也google了,沒有找到解決問題的辦法,不知道該在哪裡指定這個dovecot收信的許可權呢?我將/var/mailbox目錄的許可權設置為777也沒用,收到的新郵件的許可權仍然只有postfix用戶能夠訪問。。。。。麻煩大家給個思路,謝謝了!
[ 本帖最後由 mildyi0425 於 2009-8-20 10:56 編輯 ]
《解決方案》
dovecot.conf文件貼出來
《解決方案》
原帖由 ruochen 於 2009-8-19 14:07 發表 http://bbs2.chinaunix.net/images/common/back.gif
dovecot.conf文件貼出來
base_dir = /var/run/dovecot/
protocols = pop3
listen = *
log_path = /var/log/dovecotlog
disable_plaintext_auth = no
ssl_disable = yes
mail_location = maildir:/var/mailbox/%d/%n/Maildir
pop3_uidl_format=%08Xu%08Xv
auth default {
...
mechanisms = PLAIN
passdb sql {
args = /etc/dovecot/dovecot-sql.conf
}
...
userdb sql {
args = /etc/dovecot/dovecot-sql.conf
}
...
socket listen {
...
client {
path = /var/run/dovecot/auth-client
mode = 0660
user = postfix
group = postfix
}
}
}
就是以上這些,都是照著google的文章來配的,其他的沒列出來的都被註釋掉了。幫看一下,有少的地方我再貼,麻煩了~
《解決方案》
沒看到dovecot的錯誤
另外main.cf裡面的下面參數你是怎麼配置的?
virtual_mailbox_base =
[ 本帖最後由 ruochen 於 2009-8-19 16:57 編輯 ]
《解決方案》
postfix的運行用戶是什麼?
main.cf裡面的mail_owner的配置是什麼?
《解決方案》
原帖由 ruochen 於 2009-8-19 16:53 發表 http://bbs2.chinaunix.net/images/common/back.gif
沒看到dovecot的錯誤
先逐級確認(/var/mailbox/test.cn/test1/Maildir/cur/的許可權
另外main.cf裡面的下面參數你是怎麼配置的?
virtual_mailbox_base =
我去目錄看了下/var/mailbox/test.cn/test1/Maildir/cur/的許可權,每個文件夾的許可權都已經設置成777,所有用戶可讀寫,我把截圖傳上來了。
我試著手動將../test.cn/這個目錄設置為所有文件可讀寫(就是圖片中的那個File Access),可以收郵件了,但問題還是沒有解決,新郵件的許可權仍跟以前一樣,如圖
即使把許可權設置為了777,為什麼新生成的郵件的許可權還是只能postfix訪問?我的想法是能不能指定圖片中的那個file access?讓他在生成新文件的時候的許可權是對所有組可讀寫的呢?或者說為什麼dovecot收信時不是用postfix 來收信的呢?
補充一個比較菜的問題:為什麼文件夾的許可權設置為所有用戶可讀寫了,可文件夾裡面的文件許可權卻沒有跟著父目錄改變呢?道理上講新生成文件的許可權不是應該跟著父目錄的嗎?
virtual_mailbox_base目錄是沒有問題的:
virtual_mailbox_base = /var/mailbox/
virtual_mailbox_domains = mysql:/etc/postfix/mysql/mysql_virtual_domains_maps.cf
virtual_mailbox_limit = 20971520
virtual_mailbox_limit_maps = mysql:/etc/postfix/mysql/mysql_virtual_mailbox_limit_maps.cf
virtual_mailbox_limit_override = yes
virtual_mailbox_maps = mysql:/etc/postfix/mysql/mysql_virtual_mailbox_maps.cf
我這個問題是應該繼續從許可權方面考慮呢還是從配置方面考慮?我記得我前段時間在虛擬機學習測試的時候沒有出現過這個問題的,我也並沒有特別的指定過許可權。。。苦惱
[ 本帖最後由 mildyi0425 於 2009-8-19 17:33 編輯 ]
《解決方案》
原帖由 ruochen 於 2009-8-19 16:56 發表 http://bbs2.chinaunix.net/images/common/back.gif
postfix的運行用戶是什麼?
main.cf裡面的mail_owner的配置是什麼?
postfix的運行用戶就是postfix吧?這個問題沒考慮過.......有地方可以查看嗎?
main.cf裡面的mail_owner指定的是postfix:
# The mail_owner parameter specifies the owner of the Postfix queue
# and of most Postfix daemon processes. Specify the name of a user
# account THAT DOES NOT SHARE ITS USER OR GROUP ID WITH OTHER ACCOUNTS
# AND THAT OWNS NO OTHER FILES OR PROCESSES ON THE SYSTEM. In
# particular, don't specify nobody or daemon. PLEASE USE A DEDICATED
# USER.
#
mail_owner = postfix
《解決方案》
virtual_mailbox_base = /var/mailbox/
這個推薦是後面沒有 / 吧
另外你的selinux是什麼配置?
ps aux|grep postfix就可以知道運行的用戶的
《解決方案》
原帖由 mildyi0425 於 2009-8-19 17:19 發表 http://bbs2.chinaunix.net/images/common/back.gif
我去目錄看了下/var/mailbox/test.cn/test1/Maildir/cur/的許可權,每個文件夾的許可權都已經設置成777,所有用戶可讀寫,我把截圖傳上來了。
346075
我試著手動將../test.cn/這個目錄設置為所有文件可讀 ...
補充一個比較菜的問題:為什麼文件夾的許可權設置為所有用戶可讀寫了,可文件夾裡面的文件許可權卻沒有跟著父目錄改變呢?道理上講新生成文件的許可權不是應該跟著父目錄的嗎?
----那要看是以什麼用戶運行的程序寫進去的
《解決方案》
原帖由 ruochen 於 2009-8-19 17:44 發表 http://bbs2.chinaunix.net/images/common/back.gif
virtual_mailbox_base = /var/mailbox/
這個推薦是後面沒有 / 吧
另外你的selinux是什麼配置?
ps aux|grep postfix就可以知道運行的用戶的
我把 / 去掉之後試了一下,還是那樣,客戶端仍是收不到信,cur目錄中郵件的許可權也是跟以前一樣
我的selinux是直接禁用的
# ps aux | grep postfix
postfix 21439 0.0 0.1 25748 6584 ? S Aug16 0:00 /usr/sbin/httpd
postfix 21440 0.0 0.1 25884 6628 ? S Aug16 0:00 /usr/sbin/httpd
postfix 21441 0.0 0.1 25748 6584 ? S Aug16 0:00 /usr/sbin/httpd
postfix 21442 0.0 0.1 25884 6628 ? S Aug16 0:00 /usr/sbin/httpd
postfix 21443 0.0 0.1 25748 6592 ? S Aug16 0:00 /usr/sbin/httpd
postfix 21444 0.0 0.1 25748 6584 ? S Aug16 0:00 /usr/sbin/httpd
postfix 21445 0.0 0.1 25884 6628 ? S Aug16 0:00 /usr/sbin/httpd
postfix 21446 0.0 0.1 25748 6584 ? S Aug16 0:00 /usr/sbin/httpd
root 22377 0.0 0.0 8272 1436 ? Ss Aug19 0:00 /usr/libexec/postfix/master
postfix 22378 0.0 0.0 8392 1896 ? S Aug19 0:00 qmgr -l -t fifo -u
postfix 27751 0.0 0.0 8332 1396 ? S 08:10 0:00 pickup -l -t fifo -u
root 27816 0.0 0.0 3912 692 pts/1 S+ 08:32 0:00 grep postfix
還有子目錄父目錄許可權的問題,我所有的命令都是用root用戶執行的....