为大量电子邮件账户设置自动电子邮件转发系统

为大量电子邮件账户设置自动电子邮件转发系统

假设我希望人们向我的服务器发送电子邮件,并希望将它们全部转发到不同的电子邮件地址。例如,我有以下映射:

[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。

希望有所帮助。

相关内容