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

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

我已经使用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 

当我telnet到端口25和110(PF和Dovecottesting)。 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) 
  • 所以基本上两个进程都不能写入邮件目录。

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

我已经玩弄了uid和gids,但是修正其实是在/dovecot/conf.d/10-master.conf

已经得到postfix / SMTP将传入的电子邮件传递到用户文件夹:

我有用户和组设置为VMA,而它应该被设置为使用后缀用户/组。 毕竟,如果postfix可以写入文件/目录,那么它必须工作。

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

一旦这个改变,服务重新启动,一切正常 – 包括POP3,IMAP,postfixadmin和squirrelmail。

您可能需要将“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 

在我的演员中,这个问题是由于SELinux 。 我通过sudo nano /etc/sysconfig/selinux解决了这个问题,然后设置了SELINUX=disabled 。 这在发展中是可以接受的。 一个更完整的解决scheme将是build立一个SELinux规则,允许postfixdovecot在开始生产之前启用SELinux