![使用 /etc/aliases 来通过本地域的 postfix 中继发送邮件](https://linux22.com/image/1113663/%E4%BD%BF%E7%94%A8%20%2Fetc%2Faliases%20%E6%9D%A5%E9%80%9A%E8%BF%87%E6%9C%AC%E5%9C%B0%E5%9F%9F%E7%9A%84%20postfix%20%E4%B8%AD%E7%BB%A7%E5%8F%91%E9%80%81%E9%82%AE%E4%BB%B6.png)
我使用的是 Ubuntu 12.04,其中 postfix 配置为卫星系统,将外发邮件转发到 Gmail。为了举例说明,我的注册域名是 example.com,我希望 root cronjobs 的错误输出能够通过邮件发送到我的实际[电子邮件保护]收件箱。我的这个中继工作正常。
但这些 root cronjobs 默认设置为发送电子邮件至[电子邮件保护]这不是真正的电子邮件地址。我的/etc/aliases
:
root: [email protected]
example.com 未列在 postfix 的 main.cf 中,mydestination
因此 postfix 认为这封邮件不是本地邮件。它绕过处理/etc/aliases
并尝试发送到[电子邮件保护]。
MAILTO=david
一种解决方法是在每个 cron 文件的顶部添加。但方法有很多。另一种解决方法是设置[电子邮件保护]作为一个真正的收件箱,转发到[电子邮件保护]。有没有更好的方法?即有没有办法中继具有本地域但仍使用 处理其收件人的电子邮件/etc/aliases
?
答案1
答案2
另一个解决方案是使用recipient_canonical_maps
postfix 的配置参数。与 相比virtual_alias_maps
,其优点是myorigin
既不需要在 中mydestination
,也不需要在 中virtual_mailbox_maps
(virtual_alias_domains
默认为)。因此,此 postfix 实例确实不是成为 的最终目的地myorigin
。
将其添加到您的main.cf
:
recipient_canonical_maps = hash:/etc/postfix/recipient_canonical
然后创建一个名为的文件/etc/postfix/recipient_canonical
并输入如下内容:
[email protected] [email protected]
最后将其哈希化。
# postmap /etc/postfix/recipient_canonical
答案3
如果 david 也是本地帐户,那么您可以让别名行仅限本地,然后设置 david 帐户来执行转发。/etc/aliases 将是:
root: david
然后,您可以使用其他 postfix 规则或 david 帐户上的 .forward 文件将邮件发送到 gmail。