在这一幕上,我一直在撞墙。 基本上,这是破败:
我们的MXlogging指向一个前端SMTP服务器,其中包含实际路由邮件的别名。 没有别名,没有访问后端存储服务器,这是我们的客户端连接到。
我正在升级后端电子邮件服务器。 目前,为服务器上的每个电子邮件用户创build一个用户,从而创build邮箱。 在新的服务器上,通过PAM向LDAP服务器(所有这些都正常工作)validation一切。 我的目标是让Postfix自动为用户创buildMaildir目录。 这工作正常,当我有777权限的/ home目录,但由于显而易见的原因,这应该避免。 我想这样做的775权限在/ home与任何用户Postfix运行的组所有者,但我似乎无法弄清楚什么用户使用。 使用777权限,/ home / $ user / Maildir目录在邮件传递上创build。 有没有人知道我可以做到这一点没有777的权限?
我正在使用的系统是一个64位的Debian Lenny 5.07安装。
任何意见,将不胜感激。
答案取决于你的Postfix系统的configuration。 你提到pam和LDAP,所以我假设你的所有域名都是$ mydestination,或者你只使用一个域名(example.com)
使用LDAP映射而不是mysql / pgsql映射configurationvirtual_mailbox_domains可能会更容易(但逻辑完全相同)。
您创build一个单一的系统用户,没有login权限。 我将在这里假设一个用户名和一组vmail:vmail,但具体的名字并不重要。
在LDAP中,为vmail创build相对于$ HOME的邮箱path(因此maildir成为/ home / vmail / user / Maildir /)。
将您的域添加到virtual_mailbox_domains。 创build一个virtual_mailbox_maps映射,它将用户名作为input并返回username / Maildir作为输出。
组
virtual_mailbox_domains = example.com virtual_mailbox_base = /home/vmail/ virtual_mailbox_maps = ldap:/etc/postfix/ldap_virtual.cf virtual_uid_maps = static:$uid_of_vmail virtual_gid_maps = static:$gid_of_vmail #$uid_of_vmail and $gid_of_vmail are obtained from the output of #id vmail
在main.cf中。
FWIW,Postfix运行本地交付过程作为您交付给系统用户的uid / gid。
/ home的一般权限是755,所有者和组都是root,但用户可以在〜user内写入。 因此,Postfix将愉快地交付给〜user / Maildir /,但不能创build〜user。 使用虚拟用户将回避这个问题,通过授予访问所有邮箱到一个单一的uid / gid,然后只有你的pop3 / imap软件访问。 用户不能直接访问邮箱。
如果postfix(它是mail组的成员)无法写入目录,将无法完成传递。 秘密是让mail组在用户的主目录中具有读写访问权限。 775将足以让后缀进入/ home; 但是一旦存在,可能还不足以允许它在/ home / $ user中创build一个目录,因为指派的组可能不是mail ,而且所有者当然不是mail ,并且世界位最可靠地没有设置到rwx 。 所以,对于后缀,这是“没有你的汤”。
作为一种权宜之计,你总是可以将用户目录的组设置为mail ,但我真的不推荐这样做 。
更好的解决scheme是使用EXT3和EXT4提供的扩展属性 。 这将允许您定义多个组,而不只是一个。 因此,您可以使用rwx而不是rx将mail组添加到每个用户目录,绕过该问题并允许创build目录。
只是好奇,为什么不使用/var/spool/mail/$user并完成它? 使用这种安排将解决整个问题; 该目录的组是事实上的mail ,绕过整个“我需要777”的问题。 我只能猜测,你有一个需要NFS挂载用户主目录或somesuch。