将所有本地邮件发送到单个外部电子邮件

将所有本地邮件发送到单个外部电子邮件

我正在尝试使用 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 的虚拟别名配置会覆盖它。

相关内容