![在 Linux 上通过命令行发送邮件,对于两个不同的服务器上的域,会产生不同的结果](https://linux22.com/image/668342/%E5%9C%A8%20Linux%20%E4%B8%8A%E9%80%9A%E8%BF%87%E5%91%BD%E4%BB%A4%E8%A1%8C%E5%8F%91%E9%80%81%E9%82%AE%E4%BB%B6%EF%BC%8C%E5%AF%B9%E4%BA%8E%E4%B8%A4%E4%B8%AA%E4%B8%8D%E5%90%8C%E7%9A%84%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%B8%8A%E7%9A%84%E5%9F%9F%EF%BC%8C%E4%BC%9A%E4%BA%A7%E7%94%9F%E4%B8%8D%E5%90%8C%E7%9A%84%E7%BB%93%E6%9E%9C.png)
我已经将 Postfix 以及所有相应的服务器文件配置为在两个不同的服务器上相同。它们是在不同时间配置的 - 但文件和设置是匹配的,因此/etc/postfix/main.cf
、/etc/hosts
、/etc/hostname
、/etc/resolv.conf
等等/etc/mailname
都匹配。
不同之处在于,每当我通过命令行使用邮件命令从其中一个单元发送邮件时,我都会从每个单元获得不同的结果,并且我无法弄清楚有什么不同或这个变量从邮件命令中提取的位置。
主机 1 (来自 /var/log/mail.log):
uid=1000 from=<operations>
主机 2(来自 /var/log/mail.log):
uid=1000 [email protected]
无论出于什么原因,第二台主机都会在其后附加主机名。但顶级主机却将其保留为空,因此它使用我在 Postfix 中设置的 myorigin 变量,并且按预期工作。
这里有些东西不匹配 - 就像我说的,我的所有文件都是相同的,但只是为了比较,我在下面发布了我的 postconf -n(它在每个主机上都是相同的,所以没有必要粘贴两次 - 我已经用 Notepad ++ 对它们进行了区分)。
alias_database = hash:/etc/aliases
alias_maps = hash:/etc/aliases
append_dot_mydomain = no
biff = no
config_directory = /etc/postfix
inet_interfaces = all
inet_protocols = all
mailbox_command = procmail -a "$EXTENSION"
mailbox_size_limit = 0
mydestination = mail.example.com, localhost.localdomain, localhost
myhostname = mail.example.com
mynetworks = 10.0.0.0/8 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
myorigin = /etc/mailname
readme_directory = no
recipient_delimiter = +
relayhost = smtp-relay.gmail.com
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination
smtpd_tls_cert_file = /etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file = /etc/ssl/private/ssl-cert-snakeoil.key
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtpd_use_tls = yes
答案1
我搞明白了。无论出于什么原因,似乎我的 /etc/mailname 没有得到处理,即使它与其他服务器相同 - 并且文件甚至具有相同的 MD5sum - Postfix 配置也没有接受它。我还注意到我在一个系统上使用 mailutils(一个无法正常工作并在事后安装了 Postfix 的系统),另一个系统使用 bsd-mailx。我在尝试更改 /etc/mailname 之前交换了它,但似乎没有什么不同,但无论如何,我还是记下来以防万一。无论如何,我将我的 /etc/mailname 更改为一个虚假值,如 test,然后执行 sudo postfix reload 和 sudo service postfix restart,然后将其切换回我想要的值(contoso.com),然后执行相同的两个命令来刷新配置和服务,瞧,它按预期工作。感谢所有帮助。
答案2
划掉它 - 我错过了你在原始帖子中所说的 /etc/mailname...但我想重新启动 postfix 可能仍然相关。
检查 /etc/mailname 中是否有此文件。这将影响您的出站邮件名称。
root@purgatory:/home/me# cat /etc/hostname
purgatory.corp
root@purgatory:/home/me# cat /etc/mailname
aaaaaapurgatory.corp
postfix/qmgr[33605]: C8FEF2461048: from=<[email protected]>, size=367, nrcpt=1 (queue active)
编辑 /etc/mailname 后,请务必重新启动 postfix。