我的邮件服务器托管两个不同域的电子邮件,它将其作为物理域进行响应,还处理多个虚拟电子邮件。是的,这太疯狂了,但 postfix 让我可以做到这一点。
最近,我一直在尝试添加 maildrop 支持,以便我能够根据收件人的需求过滤每个帐户上的电子邮件。
相关的 main.cf 摘录如下:
myorigin = /etc/mailname
mydestination = domain1.com, domain2.com, localhost.localdomain, localhost.localdomain, localhost
home_mailbox = Maildir/
maildrop_destination_recipient_limit = 1
mailbox_command = /usr/bin/maildrop -d ${USER}
virtual_mailbox_domains = domain3.com domain4.com
virtual_mailbox_base = /var/mail
virtual_mailbox_maps = hash:/etc/postfix/virtual/maps
virtual_alias_maps = hash:/etc/postfix/virtual/aliases
virtual_minimum_uid = 1000
virtual_uid_maps = static:vmail
virtual_gid_maps = static:vmail
virtual_transport = maildrop
正如您所猜测的,master.cf 包含一个 maildrop 传输:
maildrop unix - n n - - pipe
flags=ODRhu user=vmail:vmail argv=/usr/bin/maildrop -w 90
-d ${user}@${nexthop}
${extension} ${recipient} ${user} ${nexthop}
现在我的问题是仅限域1成功接收用户查询。如果我发送电子邮件[电子邮件保护],maildrop抱怨:
s_connect() 失败:没有此文件或目录 /usr/bin/maildrop:无法打开邮箱。
并向 domain3/domain4 发送投诉邮件:
s_connect() 失败:没有此文件或目录指定无效的用户。
毫不奇怪,/etc/mailname == domain1.com。
我相信我的问题的一部分可能是 master.cf 和 /etc/maildroprc 配置,所以我的问题有两个:
- 有没有办法配置它们,以便与我有点复杂的设置很好地配合?
- maildrop 是用于此目的的工具吗,或者是否有更好的 MTA 明确支持这种布局(如果有,我该如何使用它)?
最后,顺便说一句,如果这个问题在 serverfault/unix/ubuntu 上更合适,请随意将其移到那里。
答案1
[虚拟域部分]
-d ${user}@${nexthop}
按照建议 替换-d ${user}@${domain}
为master.cf
Postfix + Maildrop 操作指南
据我了解,您的配置${nexthop}
是一个空字符串,因此 maildrop 获取user@