我在网络托管商处获得了一台 VPS 服务器,其操作系统为 CentOS 6.6。因为我有多个域供不同的人使用,所以该服务器将充当多个角色:
- 名称服务器(使用 BIND)(有效!)
- 多个域的网站托管服务(使用 Apache/MySQL)(有效!)
- 多个域的邮件服务器(使用 postfix、dovecot、vimbadmin 和 roundcube)(问题)
- 每个网站的 FTP 服务器(尚未安装)
我使用互联网上的手册/howto 文档来帮助我安装所有角色,因为我的 Linux 技能并不是那么出色;)。为多个域安装和配置邮件服务器时(手动:https://rtcamp.com/tutorials/mail/server/postfix-dovecot-ubuntu/)一切顺利。可以发送消息,但/var/vmail/
无法从邮件文件夹 ( ) 中检索邮件。我使用 roundcube 网站作为网络邮件环境。
/var/logs/maillog
文件中的错误信息
dovecot: imap([email protected]): Error: open(/var/vmail/address.com/account/dovecot.index.log) failed: Permission denied (euid=5000(vmail) egid=5000(vmail) missing +r perm: /var/vmail/address.com/account/dovecot.index.log, euid is not dir owner)
dovecot: imap([email protected]): Error: file_dotlock_create(/var/vmail/address.com/account/dovecot-uidlist) failed: Permission denied (euid=5000(vmail) egid=5000(vmail) missing +w perm: /var/vmail/address.com/account, euid is not dir owner)
文件夹/文件的权限 ( ls -l
)
-rw-rwx---. 1 vmail vmail 248 Feb 7 15:52 dovecot.index.log
-rw-rw----. 1 vmail vmail 24 Feb 7 16:32 dovecot.mailbox.log
-rw-rwx---. 1 vmail vmail 51 Feb 7 15:52 dovecot-uidlist
-rw-rwx---. 1 vmail vmail 8 Feb 7 16:32 dovecot-uidvalidity
-r--rwxr--. 1 vmail vmail 0 Feb 7 15:51 dovecot-uidvalidity.54d62668
文件夹/文件的权限 ( ls -Z
)
-rw-rwx---. vmail vmail unconfined_u:object_r:var_t:s0 dovecot.index.log
-rw-rw----. vmail vmail unconfined_u:object_r:var_t:s0 dovecot.mailbox.log
-rw-rwx---. vmail vmail unconfined_u:object_r:var_t:s0 dovecot-uidlist
-rw-rwx---. vmail vmail unconfined_u:object_r:var_t:s0 dovecot-uidvalidity
-r--rwxr--. vmail vmail unconfined_u:object_r:var_t:s0 dovecot-uidvalidity.54d62668
这些权限是在我创建新邮箱后由 dovecot 应用程序设置的。
一些额外的搜索引导我找到了setenforce
命令。输入setenforce 0
命令时,我可以从 roundcube 应用程序检索邮件。再次将其设置为禁止我检索邮件。
但这是怎么回事?为什么我可以从 roundcube 应用程序发送消息而没有任何问题,但使用setenforce 1
.与 ' ' 属性有关吗unconfined_u
?
[2015-02-09] 需要额外调试
使用该grep -i AVC /var/log/audit/audit.log
命令进行调试会显示以下行(这只是 tail -n-19...)
type=AVC msg=audit(1423466977.294:254776): avc: denied { write } for pid=13124 comm="imap" name="$myaccount$" dev=dm-0 ino=149839 scontext=system_u:system_r:dovecot_t:s0 tcontext=unconfined_u:object_r:var_t:s0 tclass=dir
type=AVC msg=audit(1423466977.294:254777): avc: denied { read write } for pid=13124 comm="imap" name="dovecot-uidlist" dev=dm-0 ino=149846 scontext=system_u:system_r:dovecot_t:s0 tcontext=unconfined_u:object_r:var_t:s0 tclass=file
type=AVC msg=audit(1423467003.011:254782): avc: denied { read } for pid=13139 comm="imap" name="$myaccount$" dev=dm-0 ino=149839 scontext=system_u:system_r:dovecot_t:s0 tcontext=unconfined_u:object_r:var_t:s0 tclass=dir
type=AVC msg=audit(1423467003.011:254783): avc: denied { read } for pid=13139 comm="imap" name="$myaccount$" dev=dm-0 ino=149839 scontext=system_u:system_r:dovecot_t:s0 tcontext=unconfined_u:object_r:var_t:s0 tclass=dir
type=AVC msg=audit(1423467003.035:254784): avc: denied { read } for pid=13139 comm="imap" name="$myaccount$" dev=dm-0 ino=149839 scontext=system_u:system_r:dovecot_t:s0 tcontext=unconfined_u:object_r:var_t:s0 tclass=dir
type=AVC msg=audit(1423467003.035:254785): avc: denied { read } for pid=13139 comm="imap" name="$myaccount$" dev=dm-0 ino=149839 scontext=system_u:system_r:dovecot_t:s0 tcontext=unconfined_u:object_r:var_t:s0 tclass=dir
type=AVC msg=audit(1423467003.093:254786): avc: denied { read } for pid=13139 comm="imap" name="tmp" dev=dm-0 ino=415518 scontext=system_u:system_r:dovecot_t:s0 tcontext=unconfined_u:object_r:var_t:s0 tclass=dir
type=AVC msg=audit(1423467003.093:254787): avc: denied { write } for pid=13139 comm="imap" name="cur" dev=dm-0 ino=415516 scontext=system_u:system_r:dovecot_t:s0 tcontext=unconfined_u:object_r:var_t:s0 tclass=dir
type=AVC msg=audit(1423467003.093:254788): avc: denied { read write } for pid=13139 comm="imap" name="dovecot.index.log" dev=dm-0 ino=149840 scontext=system_u:system_r:dovecot_t:s0 tcontext=unconfined_u:object_r:var_t:s0 tclass=file
type=AVC msg=audit(1423467003.093:254789): avc: denied { read } for pid=13139 comm="imap" name="dovecot.index.log" dev=dm-0 ino=149840 scontext=system_u:system_r:dovecot_t:s0 tcontext=unconfined_u:object_r:var_t:s0 tclass=file
type=AVC msg=audit(1423467003.093:254790): avc: denied { write } for pid=13139 comm="imap" name="$myaccount$" dev=dm-0 ino=149839 scontext=system_u:system_r:dovecot_t:s0 tcontext=unconfined_u:object_r:var_t:s0 tclass=dir
type=AVC msg=audit(1423467003.094:254791): avc: denied { write } for pid=13139 comm="imap" name="$myaccount$" dev=dm-0 ino=149839 scontext=system_u:system_r:dovecot_t:s0 tcontext=unconfined_u:object_r:var_t:s0 tclass=dir
type=AVC msg=audit(1423467003.094:254792): avc: denied { read write } for pid=13139 comm="imap" name="dovecot-uidlist" dev=dm-0 ino=149846 scontext=system_u:system_r:dovecot_t:s0 tcontext=unconfined_u:object_r:var_t:s0 tclass=file
type=AVC msg=audit(1423467003.206:254793): avc: denied { read } for pid=13139 comm="imap" name="tmp" dev=dm-0 ino=415518 scontext=system_u:system_r:dovecot_t:s0 tcontext=unconfined_u:object_r:var_t:s0 tclass=dir
type=AVC msg=audit(1423467003.207:254794): avc: denied { write } for pid=13139 comm="imap" name="cur" dev=dm-0 ino=415516 scontext=system_u:system_r:dovecot_t:s0 tcontext=unconfined_u:object_r:var_t:s0 tclass=dir
type=AVC msg=audit(1423467003.207:254795): avc: denied { read write } for pid=13139 comm="imap" name="dovecot.index.log" dev=dm-0 ino=149840 scontext=system_u:system_r:dovecot_t:s0 tcontext=unconfined_u:object_r:var_t:s0 tclass=file
type=AVC msg=audit(1423467003.207:254796): avc: denied { read } for pid=13139 comm="imap" name="dovecot.index.log" dev=dm-0 ino=149840 scontext=system_u:system_r:dovecot_t:s0 tcontext=unconfined_u:object_r:var_t:s0 tclass=file
type=AVC msg=audit(1423467003.207:254797): avc: denied { write } for pid=13139 comm="imap" name="$myaccount$" dev=dm-0 ino=149839 scontext=system_u:system_r:dovecot_t:s0 tcontext=unconfined_u:object_r:var_t:s0 tclass=dir
type=AVC msg=audit(1423467003.208:254798): avc: denied { write } for pid=13139 comm="imap" name="$myaccount$" dev=dm-0 ino=149839 scontext=system_u:system_r:dovecot_t:s0 tcontext=unconfined_u:object_r:var_t:s0 tclass=dir
type=AVC msg=audit(1423467003.208:254799): avc: denied { read write } for pid=13139 comm="imap" name="dovecot-uidlist" dev=dm-0 ino=149846 scontext=system_u:system_r:dovecot_t:s0 tcontext=unconfined_u:object_r:var_t:s0 tclass=file
答案1
你可以将SElinux设置为permissive模式并尝试一下是否有效?
sudo setenforce permissive
SElinux 政策似乎是错误的。该政策应该是:
drwx------. vmail vmail system_u:object_r:mail_spool_t:s0 example.org
您可以通过以下方式正确设置策略
sudo semanage fcontext -a -t mail_spool_t "/var/vmail(/.*)?"
sudo restorecon -Rv /var/vmail