权限问题。无法从 dovecot 检索收件箱消息

权限问题。无法从 dovecot 检索收件箱消息

我在网络托管商处获得了一台 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

相关内容