Postfix

Postfix From: cron 作業的地址是否符合 RFC?

  • January 28, 2022

我有一個配置為通過本地網路郵件中繼發送 Postfix 的 Ubuntu 18.04 伺服器。

只有在生成消息時,cron它才會在From:標頭中包含以下內容:

From: root@relayclient.example.com (Cron Daemon)

來自伺服器的所有其他消息都符合預期:

From: root@relayclient.example.com

這導致中繼 DKIM 簽名出現問題,並且似乎不符合 RFC 5322。我對3.4附錄 A.5的閱讀是,地址很可能應該是:

From: <root@relayclient.example.com> (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:          admin@example.net

cat /etc/mailname:

relayclient.example.com

請注意,規範還包括註釋

括號中的字元串被視為註釋,只要它們不出現在“引用字元串”中,如第 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 後面的括號中包含收件人的名稱作為註釋。由於未指定評論中資訊的含義,因此實現應該使用郵箱的全名地址形式,而不是舊形式,來指定與郵箱關聯的顯示名稱。此外,由於某些遺留實現解釋了註釋,因此通常不應在地址欄位中使用註釋以避免混淆此類實現。

引用自:https://serverfault.com/questions/1090902