我已经配置了 postfix 来从 PostgreSQL 读取别名映射(virtual_alias_maps = pgsql:/etc/postfix/pgsql-virtual-alias-maps.cf
),我配置的每个域都有一个通配符/全部捕获规则。
可以创建更具体的别名以将电子邮件重定向到新的电子邮件(例如外部提供商),但我不知道如何告诉 postfix(告诉 dovecot)为特定电子邮件地址存储电子邮件。
我发现的每个在线教程都假设我想将电子邮件重定向到系统上的某个真实用户,我不想要在我的系统上添加几百个新用户。我想我有虚拟用户。
只是为了进一步澄清,这些重定向是我想要实现的。(我已经尝试在别名中使用用户名而不是完整的电子邮件地址,但没有用,电子邮件没有存储,所以肯定还有更多问题):
[email protected] -> [email protected]
[email protected] -> user2 (SMTP user's mailbox)
@domain.com -> catchall (SMTP user's mailbox)
@domain.email -> catchall (SMTP user's mailbox)
@domain.net -> [email protected]
[email protected] -> [email protected]
[... and a few hundred more ...]
该解决方案还必须适用于 unicode 电子邮件地址,我已经对 Postfix 愚蠢的 LATIN1 PGSQL 驱动程序感到非常恼火,该驱动程序在任何地方都没有提及,当字符集不是 LATIN1 时,它甚至不会转换为 punycode。
如果您需要任何其他详细信息,请告诉我。
答案1
真的需要 PostgreSQL 后端来处理别名吗?使用 Berkeley DB 就相当简单了
virtual_alias_maps = hash:/etc/postfix/virtual
在此示例中,.com
和.net
是内部的,而.org
是外部的:
[email protected] [email protected]
[email protected] user2
[email protected] user2
@example.com catchall
@example.net catchall
将地址和目的地视为简单的对,摆脱复杂的链,例如:
[email protected] --> [email protected] --> user2