postfix 2.9.6.1将所有邮件转发到外部邮件地址

时间:2013-08-16 09:45:51

标签: ubuntu postfix-mta

我试图告诉postfix所有邮件到任何地址都应该转发到外部电子邮件地址。

我的main.cf包含

的条目
smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
biff = no

# appending .domain is the MUA's job.
append_dot_mydomain = no

# Uncomment the next line to generate "delayed mail" warnings
#delay_warning_time = 4h

readme_directory = no

# TLS parameters
smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
smtpd_use_tls=yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache

# See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for
# information on enabling SSL in the smtp client.

myhostname = xshaunm-Q1532N
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
mydestination = xshaunm-Q1532N, localhost.localdomain, , localhost
relayhost = 
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
virtual_alias_domains = xshaunm-Q1532N.pvt.lan
virtual_alias_maps = hash:/etc/postfix/virtual

我的/ etc / postfix / virtual看起来如下:

(.*) testaddress@gmail.com

然后我运行以下命令

postmap / etc / postfix / virtual

重新启动postfix

/etc/init.d/postfix restart

现在,如果我运行命令

echo test | sendmail test@mydomain.com

它应该发送到testaddress@gmail.com,但由于某种原因它传递到test@mydomain.com,这是不正确的

如果我在/ etc / postfix / virtual中列出了如下的确切地址,那么它可以工作,但它需要捕获和转发数百个邮件地址,因此正则表达式会更好:

test@mydomain.com testaddress@gmail.com

2 个答案:

答案 0 :(得分:6)

终于找到了答案。

此处列出后代。

将以下行添加到main.cf文件的末尾

vi /etc/postfix/main.cf 

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

创建一个文件,列出您希望将所有邮件发送到的邮件地址

vi /etc/postfix/virtual-regexp

添加以下内容:

/.+@.+/ forwardingmailaddress@gmail.com

将其添加到postmap

postmap /etc/postfix/virtual-regexp

您需要添加一个虚拟文件。

touch /etc/postfix/virtual

现在将其添加到postmap

postmap /etc/postfix/virtual

答案 1 :(得分:6)

我在转发到我的Gmail帐户时遇到了类似的问题。我有一个运行postfix的主机,转发多个虚拟域。即使我非常确定我已正确设置配置文件(/etc/postfix/virtual/etc/postifx/main.cf),但有时会收到消息,但有时我会收到退回消息。

为了让它工作,我还必须:

  1. 从其他帐户发送测试邮件。 Gmail似乎会丢弃从同一邮箱/地址发送的邮件,因为它认为存在邮件循环。从其他帐户发送测试邮件,甚至从运行postfix的主机中使用以下内容。

    echo "test to foo@example.com" | sendmail foo@example.com
    
  2. 为转发邮件的主机添加SPF记录(运行后缀)。 SPF记录向其他计算机指示域所有者说允许中继主机为该域发送邮件。 SPF的基础知识在OpenSPF:http://www.openspf.org/Introduction。 Google在https://support.google.com/a/answer/33786

    上写了很好的文章

    TL; DR 创建包含此文字的TXT记录:v=spf1 mx include:_spf.google.com ~all