Postfix From: 地址是否符合 cron 作业的 RFC 标准?

Postfix From: 地址是否符合 cron 作业的 RFC 标准?

我有一台 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 格式(而不是旧版格式)来指定与邮箱关联的显示名称。此外,由于一些旧版实现会解释注释,因此通常不应在地址字段中使用注释,以避免混淆此类实现。

相关内容