Centos Postfix/Dovecot - 迁移升级后的权限问题

Centos Postfix/Dovecot - 迁移升级后的权限问题

我们正在从旧的 Centos 5.5 系统迁移到新的 Centos 6.4 服务器。postfix 版本看起来相同,但 Dovecot 已从 1.x 升级到 2.x。它使用 MySQL 存储邮件帐户详细信息,并使用 pfadmin 进行管理。

我已使用 rsync 将/var/vmail文件夹从旧服务器复制到新服务器。我已安装 postfix 和 dovecot,pfadmin 和 mysql 均在运行。但我对该文件夹的权限存在重大问题/var/vmail

来自var/文件夹:

drwxrwx---. 34 vmail vmail 4096 May 28 10:03 vmail

/etc/passwd

postfix:x:89:89::/var/spool/postfix:/sbin/nologin
dovecot:x:97:97:Dovecot IMAP server:/usr/libexec/dovecot:/sbin/nologin
dovenull:x:498:499:Dovecot's unauthorized user:/usr/libexec/dovecot:/sbin/nologin
mysql:x:27:27:MySQL Server:/var/lib/mysql:/bin/bash
vmail:x:125:12::/var/vmail:/usr/sbin/nologin

dovecot.conf 中的相关行

first_valid_uid = 125
last_valid_uid = 150
mail_location = maildir:/var/vmail/%d/%u
mail_privileged_group = mail
mbox_write_locks = fcntl

当我远程登录到端口 25 和 110(用于 PF 和 Dovecot 测试)时,smtp 会话正常,而 pop3 会话崩溃。

maillog 有线索 - 以下是 Postfix 生成的内容:

warning: maildir access problem for UID/GID=150/12: create maildir
file /var/vmail/thedomain.com/[email protected]/tmp/1369997999.P1913.IS-20698: 
Permission denied

对于 Dovecot:

dovecot: pop3([email protected]): Error: file_dotlock_create
(/var/vmail/thedomain.com/[email protected]/dovecot-uidlist) 
failed: Permission denied (euid=125(vmail) egid=125(vmail) missing +w 
perm: /var/vmail/thedomain.com/[email protected], euid is not dir owner)
  • 因此基本上两个进程都无法写入邮件目录。

我如何才能获得所有在线权限?

答案1

我已经调整了 uid 和 gid,但实际上修复是在 /dovecot/conf.d/10-master.conf 中

使用 postfix/SMTP 将收到的电子邮件发送到用户文件夹:

我已将用户和组设置为 vmail,而应将其设置为使用 postfix 用户/组。毕竟,如果 postfix 可以写入文件/目录,那么它上班。

service auth {
 unix_listener auth-userdb {
 mode = 0660
 user = postfix
group = postfix
}

一旦更改并重新启动服务,一切都会正常工作 - 包括 POP3、imap、postfixadmin 和 squirrelmail。

答案2

您可能需要将“postfix”添加到 /etc/group 中的“vmail”组。然后查看您的 dovecot/conf.d/10-mail.conf 文件。您需要确保 mail_uid 和 mail_gid 设置为“vmail”,并且都取消注释。

conf.d/10-mail.conf:mail_uid = vmail
conf.d/10-mail.conf:mail_gid = vmail

答案3

在我的角色中,这个问题是由于 造成的SELinux。我通过sudo nano /etc/sysconfig/selinux和 然后设置解决了这个问题。这在开发过程中是可以接受的。更完整的解决方案是在投入生产之前SELINUX=disabled设置一条SELinux规则,允许postfixdovecot启用。SELinux

相关内容