我有一台 Ubuntu 18.04 服务器,其中的 Postfix 配置为通过本地网络邮件中继发送。
仅当生成消息时,cron
其标题才包含以下内容From:
:
From: [email protected] (Cron Daemon)
来自服务器的所有其他消息均符合预期:
From: [email protected]
这导致了中继 DKIM 签名的问题,似乎不符合 RFC 5322。我读到3.4和附录 A.5最有可能的地址应该是:
From: <[email protected]> (Cron Daemon)
但是,我可能误解了 RFC,并且还存在其他一些问题。
这是当前配置,它几乎只是包创建的默认“卫星”配置postfix
:
postconf -n
:
alias_database = hash:/etc/aliases
alias_maps = hash:/etc/aliases
append_dot_mydomain = no
biff = no
compatibility_level = 2
inet_interfaces = loopback-only
inet_protocols = ipv4
mailbox_size_limit = 0
mydestination = $myhostname, relayclient.example.com, localhost.example.com, localhost
myhostname = relayclient.example.com
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
myorigin = /etc/mailname
readme_directory = no
recipient_delimiter = +
relayhost = 192.0.2.85
smtp_tls_security_level = may
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
cat /etc/aliases
:
# See man 5 aliases for format
postmaster: root
root: [email protected]
cat /etc/mailname
:
relayclient.example.com
答案1
请注意,规范还包括评论:
括号内的字符串被视为注释,只要它们不出现在“引号字符串”中,如第 3.2.4 节所定义。注释可以嵌套。
本规范中有多个位置可以自由插入注释和 FWS。为了适应该语法,为可以出现注释和/或 FWS 的位置定义了一个额外的“CFWS”标记。
EBNF(我省略了不相关的标记):
address = mailbox / group
mailbox = name-addr / addr-spec
name-addr = [display-name] angle-addr
angle-addr = [CFWS] "<" addr-spec ">" [CFWS] / obs-angle-addr
display-name = phrase
FWS = ([*WSP CRLF] 1*WSP) / obs-FWS
ctext = %d33-39 / ; Printable US-ASCII
%d42-91 / ; characters not including
%d93-126 / ; "(", ")", or "\"
obs-ctext
ccontent = ctext / quoted-pair / comment
comment = "(" *([FWS] ccontent) [FWS] ")"
CFWS = (1*([FWS] comment) [FWS]) / FWS
注意,comment
标记包含文字括号,CFWS 可以是此注释(周围有空格)或空格本身。括号中的这部分出现在标记的末尾angle-addr
,此处允许注释。所以这(Cron Daemon)
是一个CFWS
,“评论或折叠空白”令牌,因此所拼写的地址完全符合规范。
addr-spec
另外,关于裸体,还有一条特别的说明comment
:
注意:一些旧版实现使用简单格式,其中 addr-spec 不带尖括号,但将收件人姓名作为注释包含在 addr-spec 后面的括号中。由于注释中的信息含义未指定,因此实现应使用邮箱的全名-addr 格式(而不是旧版格式)来指定与邮箱关联的显示名称。此外,由于一些旧版实现会解释注释,因此通常不应在地址字段中使用注释,以避免混淆此类实现。