![Postfix:将所有本地发送的电子邮件转发到外部地址](https://linux22.com/image/649728/Postfix%EF%BC%9A%E5%B0%86%E6%89%80%E6%9C%89%E6%9C%AC%E5%9C%B0%E5%8F%91%E9%80%81%E7%9A%84%E7%94%B5%E5%AD%90%E9%82%AE%E4%BB%B6%E8%BD%AC%E5%8F%91%E5%88%B0%E5%A4%96%E9%83%A8%E5%9C%B0%E5%9D%80.png)
我有一台服务器,用于从 PHP 发送电子邮件,但不接收任何电子邮件。我的域 MX 记录指向不同的邮件服务,并且我已将 Postfix 配置为不处理任何 FQDN 电子邮件。我想将任何本地电子邮件(邮政局长错误、cronjob 通知等)发送到单个外部电子邮件地址[电子邮件保护]。
我在这里发现了几个不同的问题试图解决这个问题(这里和这里最值得注意的是),但它们似乎也会重定向所有出站电子邮件,例如[电子邮件保护]和[电子邮件保护]送至[电子邮件保护]也。
一个似乎有效的解决方案是分别写出@localhost,@localhost.localdomain和@cookweb1的虚拟别名[电子邮件保护]但肯定有更优雅、更通用的解决方案?以下是我的/etc/postfix/main.cf(错误地将所有邮件转发至[电子邮件保护]):
myhostname = cookweb1
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination = cookweb1, localhost.localdomain, localhost
relayhost =
mynetworks = loopback-only
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = loopback-only
virtual_maps = hash:/etc/postfix/virtual, regexp:/etc/postfix/virtual-regexp
/etc/postfix/虚拟是空的。这里/etc/postfix/virtual-regexp(均已生成邮编图):
/.+@.+/ [email protected]
答案1
当你说本地递送的电子邮件,我假设你的意思是电子邮件已发送到域 @localhost、@localhost.localdomain 和 @cookweb1。因为您已经在参数中列出了所有这些域mydestination
,所以您必须在 alias_maps 中设置 catchall,而不是在虚拟中。
主配置文件
alias_maps = regexp:/etc/postfix/local-catch
virtual_maps =
文件 /etc/postfix/local-catch
/.+/ [email protected]
笔记:virtual_maps 已弃用并替换为虚拟别名域和虚拟别名映射。