我有一个使用Postfix的电子邮件的Linux服务器。 它在一个dynamic的IP,所以我使用“relayhost”参数发送传出的邮件通过SSH隧道到另一个静态IP上的服务器,从那里出去的现实世界。 从1998年左右开始,这一直很好。
我目前正在为客户开发一些软件,并根据数据库中的信息将电子邮件发送给该客户组织中的不同人员。 对于我最初的testing,我创build了所有的电子邮件地址,如ptomblin+client1@{mydomain}.com,工作正常,并发送所有的电子邮件给我的假人。 但是现在我正在使用一个实时数据库,所有的电子邮件地址都是针对客户机构中的真实人员的。 我不是特别想发送电子邮件给那些告诉他们他们要求的系统访问已经configuration的,所以我想要一个方法来redirect到该客户的域的所有电子邮件到我的电子邮件地址或文件。
如果我理解正确,那么您希望将所有发往example.com的邮件传递到您的邮件地址或文件,而不是转发到relayhost中指定的服务器:
第1步:将example.com添加到main.cf中的mydestination ,以便发送到example.com的邮件在本地交付。
第2步:为example.com设置一个catchall并将所有电子邮件发送到您的邮件地址或文件。 你可以使用postfix pcre来实现这个function。
展开第2步
使用postfix pcre只是其中一种方法。 根据garisson的这个教程 :
创build一个名为aliases-pcre的文件,内容如下:
/@example\\.com$/ mylocaluser
将以下行添加到main.cf(如果main.cf位于/ etc / postfix中):
alias_database = hash:/etc/postfix/aliases alias_maps = hash:/etc/postfix/aliases, pcre:/etc/postfix/aliases-pcre
重新启动后缀
现在,所有发送到*@example.com的邮件都应该转到mylocaluser邮箱/ maildir。
再次,这只是一个例子。 您可以使用任何最适合您需求的其他方法。 我倾向于使用pcre很多,因为它允许regexp有点复杂。
但是,以上将无法正常工作,因为你需要虚拟域名。
这是一个最简单的示例configuration:
(main.cf) alias_database = hash:/etc/aliases local_recipient_maps = relayhost = myotherserver.example.com virtual_alias_maps = pcre:/etc/postfix/aliases-pcre virtual_alias_domains = example.com mydestination = localhost
文件/etc/postfix/aliases-pcre
/@example\.com$/ somelocaluser
好吧, 埃里克让我靠近正确的道路 ,但不是那里。 这就是我所做的:
在/etc/postfix/main.cf中:
virtual_alias_domains = example.com virtual_alias_maps = regexp:/etc/postfix/virtual_alias
在/ etc / postfix / virtual_alias中
/@example\.com/ ptomblin
一个postfix reload后来postfix reload ,我离开了比赛。 (顺便说一句,你不需要在正则expression式文件上做后处理,只有哈希)