两个相同的 Postfix main.cf 文件,但从 CLI 发送邮件看起来不同

两个相同的 Postfix main.cf 文件,但从 CLI 发送邮件看起来不同

我最近一直在测试 Postfix,并将其配置为虚拟环境中的仅发送邮件客户端。我一直在几个虚拟机上尝试设置,直到让它工作起来,最后我找到了应该输入的正确值。我们的配置非常简单,我将在下面的代码中用我们正在使用的配置屏蔽或域。

# See /usr/share/postfix/main.cf.dist for a commented, more complete version


# Debian specific:  Specifying a file name will cause the first
# line of that file to be used as the name.  The Debian default
# is /etc/mailname.
#myorigin = /etc/mailname

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.

smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination
myhostname = mail.example.com
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination = mail.example, localhost.localdomain, localhost
relayhost = smtp-relay.gmail.com
mynetworks = 10.0.0.0/8 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mailbox_command = procmail -a "$EXTENSION"
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
inet_protocols = all

/etc/hostname 的内容如下

mail.example.com

/etc/hosts 的内容如下

127.0.0.1   localhost.localdomain localhost
10.x.x.x    mail.example.com    mail

# The following lines are desirable for IPv6 capable hosts
::1     localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

/etc/mailname 的内容如下

example.com

但无论出于何种原因,此配置与另一台与这些文件匹配的服务器相同,但是当我从命令行发送邮件时执行如下操作:

echo "testing email" | mail -s "test subject" [email protected]

一个服务器显示它来自[电子邮件保护],另一个表明它来自[电子邮件保护]我无论如何也无法弄清楚,而且我不确定这两个服务器之间在哪里以及哪些设置不同(我也已经重新启动它们并多次重新启动了 Postfix 服务)。

这看起来像是一个系统变量,或者正在轮询另一个配置文件。我真的很好奇,想了解这里发生了什么,任何信息都会非常有帮助。谢谢!

更新 1:包括 mail.log 比较和 postconf -n

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

Mail.log 比较

  • 邮件01:uid=1000 from=<operations>
  • 邮件02:uid=1000 [email protected]
  • mail01 上的邮件是用裸用户名(操作)提交的,因此 postfix 附加了 myorigin 使得[电子邮件保护]
  • mail02 上的邮件看起来是以完整的电子邮件地址作为发件人提交的,因此 Postfix 不会附加 myorigin。

这两个虚拟机都在为此全新创建的 Ubuntu 14.04.3 VM 上运行,并且已完全更新。我应该在哪里查找此裸用户名的配置?我检查了 /etc/passwd,但它只显示“操作”,肯定是某个文件或我在某个地方遗漏了什么 - 您有什么想法吗?

答案1

我搞明白了。无论出于什么原因,似乎我的 /etc/mailname 没有得到处理,即使它与其他服务器相同 - 并且文件甚至具有相同的 MD5sum - Postfix 配置也没有接受它。我还注意到我在一个系统上使用 mailutils(一个无法正常工作并在事后安装了 Postfix 的系统),另一个系统使用 bsd-mailx。我在尝试更改 /etc/mailname 之前交换了它,但似乎没有什么不同,但无论如何,我还是记下来以防万一。无论如何,我将我的 /etc/mailname 更改为一个虚假值,如 test,然后执行 sudo postfix reload 和 sudo service postfix restart,然后将其切换回我想要的值(contoso.com),然后执行相同的两个命令来刷新配置和服务,瞧,它按预期工作。感谢所有帮助。

相关内容