我正在尝试使用 Google 的 SMTP 服务器将所有本地邮件发送到一个外部电子邮件(我按照以下步骤操作这个很好的教程)。
使用 Google 的 SMTP 服务器,因为我能够使用来自 mailutils 的邮件将邮件发送到外部地址。
本地邮件重定向到外部电子邮件不起作用。从我的帐户测试向 root 发送邮件时使用:
echo "Body" | mail -s "Test Postfix To Root" root
- 我从未收到过该消息
- /var/log/mail.err 中没有出现任何新内容
- 这出现在 /var/log/mail.log 中
Sep 4 18:48:06 desktop1204test postfix/pickup[5535]: C9326EE26: uid=1000 from=
Sep 4 18:48:06 desktop1204test postfix/cleanup[5702]: C9326EE26: message-id=
Sep 4 18:48:06 desktop1204test postfix/qmgr[5534]: C9326EE26: from=, size=401, nrcpt=1 (queue active)
Sep 4 18:48:06 desktop1204test postfix/local[5704]: C9326EE26: to=, orig_to=, relay=local, delay=0.03, delays=0.02/0/0/0, dsn=2.0.0, status=sent (delivered to mailbox)
Sep 4 18:48:06 desktop1204test postfix/qmgr[5534]: C9326EE26: removed
我的/etc/postfix/main.cf
:
inet_interfaces = loopback-only
mynetworks = loopback-only
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
## I commented the below two lines out, as they conflicted with the accepted answer
####virtual_alias_domains = localhost.localdomain
####virtual_alias_maps = hash:/etc/postfix/virtual
relayhost = [smtp.gmail.com]:587
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous
smtp_tls_CAfile = /etc/postfix/cacert.pem
smtp_use_tls = yes
我的etc/aliases
:
# See man 5 aliases for format
postmaster: root
我的/etc/postfix/virtual:
@localhost.localdomin [email protected]
我该如何让它工作?我不希望任何本地邮件到达本地,它们都应该发往[email protected]
。
答案1
这可以通过虚拟正则表达式 (/etc/postfix/virtual-regexp) 来实现
/.+@.+/ [email protected]
然后在main.cf中:
virtual_maps = hash:/etc/postfix/virtual, regexp:/etc/postfix/virtual-regexp
和映射文件:
postmap /etc/postfix/virtual-regexp
这应该可以解决所有本地邮件的问题(否则您必须指定虚拟的所有地址)
答案2
对于那些想要正常地向其他域发送邮件(例如在仅发送空客户端上)并将邮件远程发送到系统帐户的用户,您可以创建/etc/postfix/virtual-regexp
。在其中,将所有没有真实收件箱的系统帐户映射到另一个帐户:
/^\(root\|postmaster\|postfix|etc\)@domain\.example$/ [email protected]
或者映射所有未知真实收件箱的帐户(不要缩进if
):
if /@domain\.example$/
!/^\(person\|anotherperson\|peeps\)@/ [email protected]
endif
这是一个很多如果您的myorigin
设置/etc/postfix/main.cf
与您的实际收件箱域(例如的子域)不同,mail.domain.example
那么您可以更轻松地匹配所有内容,如下所示:
/@mail\.domain\.example$/ [email protected]
正如其他人所说,不要运行postmap
此文件,/etc/postfix/virtual-regexp.db
如果存在则删除。
通过添加来使用新映射
local_recipient_maps =
virtual_alias_maps = regexp:/etc/postfix/virtual-regexp
到/etc/postfix/main.cf
。
我还添加了
root: [email protected]
并/etc/aliases
运行该newaliases
命令,但我认为 Postfix 的虚拟别名配置会覆盖它。