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

我正在尝试使用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
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

我的等/别名:

# See man 5 aliases for format
postmaster:    root

我的/ etc / postfix / virtual:

@localhost.localdomain        someone@somewhere.com

我怎样才能让它运转起来?我不希望任何本地邮件到达本地,他们都应该去someone@somewhere.com.

我尝试了以下评论中建议的解决方案:将*:someone@somewhere.com放在/ etc / aliases中.但没有奏效:

test@desktop1204test:~$sudo newaliases
test@desktop1204test:~$cat /etc/aliases
# See man 5 aliases for format
postmaster:    root
*: someone@somewhere.com
test@desktop1204test:~$sudo newaliases 
test@desktop1204test:~$sudo service postfix restart
 * Stopping Postfix Mail Transport Agent postfix                                                     [ OK ] 
 * Starting Postfix Mail Transport Agent postfix                                                     [ OK ] 
test@desktop1204test:~$echo "Body" | mail -s "Test Postfix To Root $(date)" root
test@desktop1204test:~$tail /var/log/mail.err 
test@desktop1204test:~$tail /var/log/mail.log 
......
Sep  4 22:46:12 desktop1204test postfix/master[7224]: daemon started -- version 2.9.6, configuration /etc/postfix
Sep  4 22:46:23 desktop1204test postfix/pickup[7227]: 859AFF6A8: uid=1000 from=<test>
Sep  4 22:46:23 desktop1204test postfix/cleanup[7235]: 859AFF6A8: message-id=<20130904204623.859AFF6A8@desktop1204test.localdomain>
Sep  4 22:46:23 desktop1204test postfix/qmgr[7228]: 859AFF6A8: from=<test@desktop1204test.localdomain>, size=431, nrcpt=1 (queue active)
Sep  4 22:46:23 desktop1204test postfix/local[7237]: 859AFF6A8: to=<root@desktop1204test.localdomain>, orig_to=<root@desktop1204test>, relay=local, delay=0.02, delays=0.02/0/0/0, dsn=2.0.0, status=sent (delivered to mailbox)
Sep  4 22:46:23 desktop1204test postfix/qmgr[7228]: 859AFF6A8: removed
test@desktop1204test:~$
最佳答案
(这个问题在AskUbuntu回答了Pasi Suominen,非常感谢他!)

这可以通过虚拟正则表达式完成(/ etc / postfix / virtual-regexp)

/.+@.+/ someone@somewhere.com

然后在main.cf中:

virtual_maps = hash:/etc/postfix/virtual, regexp:/etc/postfix/virtual-regexp

和mapfile:

postmap /etc/postfix/virtual-regexp

这应该是所有本地邮件的技巧(否则你必须在虚拟上指定所有地址)

转载注明原文:电子邮件 – 将所有本地邮件发送到单个外部电子邮件 - 代码日志