Eug*_*ene 4 email email-server debian postfix
在这个问题上,我已经用头撞墙有一段时间了。基本上,这里是纲要:
我们的 MX 记录指向前端 SMTP 服务器,其中包含用于实际路由邮件的别名。没有别名,无法访问后端存储服务器,这是我们的客户端连接到的。
我正在升级后端电子邮件服务器。当前,为服务器上的每个电子邮件用户创建一个用户,从而创建邮箱。在新服务器上,一切都通过 PAM 验证到 LDAP 服务器(所有这些都正常工作)。我的目标是让 Postfix 自动为用户创建 Maildir 目录。当我拥有 777 权限的 /home 目录时,这可以正常工作,但出于明显的原因,应该避免这种情况。我想在 /home 上使用 775 权限与 Postfix 运行的任何用户的组所有者一起执行此操作,但我似乎无法弄清楚要使用哪个用户。使用 777 权限,/home/$user/Maildir 目录是在邮件传递时创建的。有谁知道我如何在没有 777 权限的情况下做到这一点?
我正在使用的系统是 64 位 Debian Lenny 5.07 安装。
任何意见,将不胜感激。
小智 6
答案取决于您的 Postfix 系统的配置方式。您提到了 pam 和 LDAP,所以我假设您在 $mydestination 中拥有所有域,或者您只使用一个域(例如,example.com)
使用 LDAP 映射而不是 mysql/pgsql 映射配置 virtual_mailbox_domains 可能更容易(尽管逻辑完全相同)。
您创建一个没有登录权限的系统用户。我将在这里假设用户名和组 vmail:vmail,但具体名称并不重要。
在 LDAP 中,为 vmail 创建相对于 $HOME 的邮箱路径(因此 maildir 变为 /home/vmail/user/Maildir/)。
将您的域添加到 virtual_mailbox_domains。创建一个 virtual_mailbox_maps 映射,它将用户名作为输入并返回用户名/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
Run Code Online (Sandbox Code Playgroud)
在 main.cf.
请参阅http://www.postfix.org/ldap_table.5.html和http://www.postfix.org/VIRTUAL_README.html了解更多信息(以及您需要在 ldap_virtual.cf 中放入的内容)。
FWIW,Postfix 将本地交付过程作为您要交付给的系统用户的 uid/gid 运行。
/home 的一般权限是 755,所有者和组都是 root,但用户可以在 ~user 内写入。因此,Postfix 会很高兴地发送到 ~user/Maildir/,但无法创建 ~user。使用虚拟用户将通过向单个 uid/gid 授予对所有邮箱的访问权限来回避这个问题,然后只能由您的 pop3/imap 软件访问。用户将无法直接访问邮箱。