在我的服务器上,我希望 Postfix 成为 MTA,接受邮件并应用这样的虚拟邮箱映射(当然使用我的域名而不是 example.org):
在/etc/postfix/main.cf中:
virtual_mailbox_maps = hash:/etc/postfix/virtual
在/etc/postfix/虚拟:
[email protected] mymailbox/
然后,邮件将由 Dovecot(作为 MDA)“传递”到 /var/mail/vhosts/username 中的用户目录。因此,我按照 Dovecot-Wiki 中的方式配置了 Postfix 和 Dovecot:http://wiki2.dovecot.org/LDA并按照下面的说明将以下内容添加到 /etc/postfix/master.cf 中:
dovecot unix - n n - - pipe flags=DRhu user=vmail:vmail argv=/usr/local/libexec/dovecot/dovecot-lda -f ${sender} -d ${recipient}
我遇到的问题是,Postfix 似乎通过虚拟映射来验证传入的电子邮件([电子邮件保护]已送达,[电子邮件保护]不是),但 Postfix 不会发送映射结果(“mymailbbox”)进行传递,而是发送原始地址(“[电子邮件保护]“)。
我的第一个想法是,有另一个变量,我可以在 master.cf 中使用它来代替 ${recipient}(您可以通过“man pipe”查找它们),但我没有找到任何似乎可以满足我要求的变量。
所以我的问题是:是否可以同时使用 Postfix 中的虚拟映射和 Dovecot 的传送?如果不行,是否有可能在 Dovecot 中像在 Postfix 中一样轻松地进行虚拟邮箱映射?
提前致谢!
答案1
尝试使用以下参数设置你的 dovecot LDA:
argv=/usr/libexec/dovecot/deliver -f ${sender}
-d ${user}@${nexthop} -a ${recipient} -n -m ${extension}
我使用它来支持本地部分的扩展(如[email protected]
)。您可能想尝试${mailbox}
代替${user}@${nexthop}
。查看man 8 pipe
所有可能的替换。
顺便说一句:我将其用于有效的虚拟映射,将多个域的电子邮件地址映射到虚拟邮箱。在 dovecot 端,我使用相同的表(通过 dovecot 的 SQL 配置)对每个虚拟邮件用户进行身份验证。不确定您是否可以通过这种方式将虚拟邮件地址映射到真实系统用户。
答案2
如果您使用 Dovecot 作为 MDA,则 postfix 中的所有 virtual_mailbox 设置都将被忽略,因为这些设置仅适用于提供的虚拟 (8) 传递代理。