假设我希望人们向我的服务器发送电子邮件,并希望将它们全部转发到不同的电子邮件地址。例如,我有以下映射:
[email protected] => [email protected]
[email protected] => [email protected]
[email protected] => [email protected]
...
[email protected] => [email protected]
这个列表可能会增长到一个巨大的数字,我希望能够轻松地转发它们。我还想让用户轻松配置,以便他们可以自己设置映射(就像你可以轻松地在 gmail 等上设置转发一样)
我的服务器上目前有 postfix,但使用 postfix 似乎我必须编辑配置文件并一直重新加载,而且当我考虑一个巨大的列表时,它听起来不可扩展。
实现此目的的最佳方法是什么?我不一定非要使用 Postfix,如果需要,可以使用完全不同的系统来满足此目的。
答案1
Postfix 支持很多查找表您可以使用数据库查找表 ( mysql,pgsql or sqlite
) 来存储如此大的列表,并且在使用它们时无需重新加载 postfix。假设forwards
您的 postgres 数据库中有一个包含列emailaddress
和的表forwards
。
emailaddress forwards
[email protected] [email protected]
[email protected] [email protected]
[email protected] [email protected]
并且您可以配置您的 postfix 来使用它。
#/etc/postfix/main.cf
#... other main.cf contents omitted
virtual_alias_domains = myserver.net
virtual_alias_maps = pgsql:/etc/postfix/pgsql_forwards.cf
#...
的内容/etc/postfix/pgsql_forwards.cf
应该是这样的
#/etc/postfix/pgsql_forwards.cf
dbname = emaildb
hosts = db.example.net
user = emailuser
password = somerandompass
query = SELECT forwards FROM forwards where emailaddress='%s';
- 但首先要确保所有查找表都已使用你的后缀编译,方法是运行
postconf -m
。我见过许多人使用mysql
。 - 为了让您的用户能够自己设置转发,您必须向他们提供一些可以更新 postfix 使用的数据库表的 webapp。
希望有所帮助。