我试图告诉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
答案 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
),但有时会收到消息,但有时我会收到退回消息。
为了让它工作,我还必须:
从其他帐户发送测试邮件。 Gmail似乎会丢弃从同一邮箱/地址发送的邮件,因为它认为存在邮件循环。从其他帐户发送测试邮件,甚至从运行postfix的主机中使用以下内容。
echo "test to foo@example.com" | sendmail foo@example.com
为转发邮件的主机添加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