这是我在 Stacks 上的第一个问题。我几乎每隔一天就会在这里阅读大量问题解决方案。因此,感谢所有贡献者。我是这里的菜鸟,所以如果我做错了什么,请留点空间。我的问题是
我正在尝试将 Postfix 服务器设置为多个域名的 SMTP 专用主机。我不允许远程连接,我只想能够使用我的 cron 脚本向各个域发送电子邮件。目前 Postfix 是默认安装,但我已添加
myhostname=example.com
现在的问题是如果我从发送电子邮件[电子邮件保护]电子邮件标头(不是发件人地址)中显示的主机是 example.com,具体标头是
Received: from example.com
我的发件人地址是正确的。请原谅,但我确实不太了解电子邮件服务器。我的收件箱由另一家托管服务提供商处理,我知道我需要添加反向 DNS 等。所以如果有人知道我应该怎么做,以便所有域都有正确的 DNS 条目和良好的 Postfix 配置,请告诉我。我希望 Postfix 使用与发件人地址相同的域名。我只需要 smtp,不需要其他任何东西。
我已经搜索过谷歌和 Stacks,但没有一个能完全回答这个问题,即使问题类似。
提前致谢,我仍然在到处阅读。
我的邮件日志中也出现了这些错误。我已将真实有效的域名替换为 MYDOMAIN,将真实系统用户名替换为 USER
Feb 14 22:53:13 li222-89 postfix/smtpd[28433]: connect from localhost[127.0.0.1]
Feb 14 22:53:13 li222-89 postfix/smtpd[28433]: 428FCA400C: client=localhost[127.0.0.1]
Feb 14 22:53:13 li222-89 postfix/cleanup[28436]: 428FCA400C: message-id=<4d59f8a8-0ab4-4aee-b6e6-6f0c9389ad7c@>
Feb 14 22:53:13 li222-89 postfix/qmgr[27293]: 428FCA400C: from=<[email protected]>, size=1047, nrcpt=1 (queue active)
Feb 14 22:53:13 li222-89 postfix/smtpd[28433]: disconnect from localhost[127.0.0.1]
Feb 14 22:53:13 li222-89 postfix/smtp[27755]: certificate verification failed for gmail-smtp-in.l.google.com: num=20:unable to get local issuer certificate
Feb 14 22:53:13 li222-89 postfix/smtp[27755]: certificate verification failed for gmail-smtp-in.l.google.com: num=27:certificate not trusted
Feb 14 22:53:13 li222-89 postfix/pickup[26953]: C3761A400D: uid=500 from=<USER>
Feb 14 22:53:13 li222-89 postfix/cleanup[28436]: C3761A400D: message-id=<[email protected]>
Feb 14 22:53:13 li222-89 postfix/qmgr[27293]: C3761A400D: from=<[email protected]>, size=3237, nrcpt=1 (queue active)
Feb 14 22:53:14 li222-89 postfix/smtp[26830]: certificate verification failed for aspmx.l.google.com: num=20:unable to get local issuer certificate
Feb 14 22:53:14 li222-89 postfix/smtp[26830]: certificate verification failed for aspmx.l.google.com: num=27:certificate not trusted
Feb 14 22:53:15 li222-89 postfix/smtp[27755]: 428FCA400C: to=<[email protected]>, relay=gmail-smtp-in.l.google.com[74.125.155.27]:25, delay=2.6, delays=0.02/0.02/0.66/1.9, dsn=2.0.0, status=sent (250 2.0.0 OK 1297741995 l9si6487318yhl.10)
Feb 14 22:53:15 li222-89 postfix/qmgr[27293]: 428FCA400C: removed
Feb 14 22:53:17 li222-89 postfix/smtp[26830]: C3761A400D: to=<[email protected]>, orig_to=<USER>, relay=aspmx.l.google.com[74.125.155.27]:25, delay=14, delays=11/0/0.44/3.1, dsn=5.1.1, status=bounced (host aspmx.l.google.com[74.125.155.27] said: 550-5.1.1 The email account that you tried to reach does not exist. Please try 550-5.1.1 double-checking the recipient's email address for typos or 550-5.1.1 unnecessary spaces. Learn more at 550 5.1.1 http://mail.google.com/support/bin/answer.py?answer=6596 hj39si8560308ibb.50 (in reply to RCPT TO command))
Feb 14 22:53:17 li222-89 postfix/cleanup[28436]: 726DFA400C: message-id=<[email protected]>
Feb 14 22:53:17 li222-89 postfix/qmgr[27293]: 726DFA400C: from=<>, size=5596, nrcpt=1 (queue active)
Feb 14 22:53:17 li222-89 postfix/bounce[28222]: C3761A400D: sender non-delivery notification: 726DFA400C
Feb 14 22:53:17 li222-89 postfix/qmgr[27293]: C3761A400D: removed
Feb 14 22:53:17 li222-89 postfix/smtp[27755]: certificate verification failed for aspmx.l.google.com: num=20:unable to get local issuer certificate
Feb 14 22:53:17 li222-89 postfix/smtp[27755]: certificate verification failed for aspmx.l.google.com: num=27:certificate not trusted
Feb 14 22:53:21 li222-89 postfix/smtp[27755]: 726DFA400C: to=<[email protected]>, relay=aspmx.l.google.com[74.125.155.27]:25, delay=3.6, delays=0.02/0.01/0.44/3.1, dsn=5.1.1, status=bounced (host aspmx.l.google.com[74.125.155.27] said: 550-5.1.1 The email account that you tried to reach does not exist. Please try 550-5.1.1 double-checking the recipient's email address for typos or 550-5.1.1 unnecessary spaces. Learn more at 550 5.1.1 http://mail.google.com/support/bin/answer.py?answer=6596 mu18si8573893ibb.7 (in reply to RCPT TO command))
Feb 14 22:53:21 li222-89 postfix/qmgr[27293]: 726DFA400C: removed
显然,它试图向 Gmail 帐户发送电子邮件,但出了点问题……真的错了。
答案1
我相信这就是你想要的。
http://www.postfix.org/ADDRESS_REWRITING_README.html#generic
例子:
/etc/postfix/main.cf:
smtp_generic_maps = hash:/etc/postfix/generic
/etc/postfix/generic:
[email protected] [email protected]
[email protected] [email protected]
@localdomain.local [email protected]
因此,如果您已经安装并配置了 postfix。
打开 main.cf 并添加上面的通用地图设置。
然后打开通用文件并添加@example.com @example2.com 或您环境所需的任何设置
这是一个哈希文件,因此当您完成运行后postmap /etc/postfix/generic
然后重新启动 postfix。
更新
看起来这实际上就是您所追求的。
编辑主 cf 文件并更改此行
smtp inet n - n - - smtpd
到:
localhost:smtp inet n - n - - smtpd
ipaddress1:smtp inet n - n - - smtpd
ipaddress2:smtp inet n - n - - smtpd -o myhostname=hostname2
.
.
.
ipaddressn:smtp inet n - n - - smtpd -o myhostname=hostname3
重启 postfix
显然,这将要求您设置多个 IP 地址,每个域一个,并设置反向 DNS 等。我相信这是唯一的方法。
答案2
Feb 14 22:53:17 li222-89 postfix/smtp[27755]: certificate verification failed for aspmx.l.google.com: num=20:unable to get local issuer certificate
Feb 14 22:53:17 li222-89 postfix/smtp[27755]: certificate verification failed for aspmx.l.google.com: num=27:certificate not trusted
如果您尝试使用 Gmail 中继邮件,则需要在 Postfix 中使用 TLS。首先,仔细检查 Postfix 是否配置了 SSL 支持(即 ldd 应返回至少一行以 libssl 开头的内容):
$ whereis -b postfix
postfix: /usr/sbin/postfix /etc/postfix /usr/libexec/postfix
$ ldd /usr/sbin/postfix
...
libssl.so.6 => /lib/libssl.so.6 (0x00111000)
...
现在我们需要找到您服务器的 CA 根证书包,它通常与 openssl 一起分发。
$ locate ca-bundle.crt
/etc/pki/tls/certs/ca-bundle.crt
编辑 Postfix main.cf 以包含用于 Gmail 身份验证的 TLS 和 SASL2。
更新证书文件与新的 Gmail 证书提供商合作。
relayhost = smtp.gmail.com:587
# your FQDN, or default value below
mydomain = example.com
# your local machine name, or default value below
myhostname = host.example.com
myorigin = $myhostname
# SASL
smtpd_sasl_path = smtpd
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_type = cyrus
smtp_sasl_auth_enable = yes
smtp_sasl_security_options = noanonymous
# TLS
smtp_sasl_tls_security_options = noanonymous
smtp_use_tls = yes
smtp_tls_CAfile = /path/to/your/ca-bundle.crt
smtp_sasl_tls_security_options = noanonymous