电子邮件组地址,例如undisclosed-recipients:;
或是有效的寻址形式,根据a group:<[email protected]>,<[email protected]>;
RFC 5322,例如示例见附录 A.1.3在 Sendmail 中,这称为“列表语法”。最小工作示例(适用于 Bash):
echo "Date: $(date --rfc-2822)
From: <[email protected]>
To: a group:<[email protected]>,<[email protected]>;
" | sendmail -t
但是,尝试提交带有空组的消息会导致错误List:; syntax illegal for recipient addresses
。最小示例:
echo "Date: $(date --rfc-2822)
From: <[email protected]>
To: undisclosed-recipients:;
Bcc: [email protected]
" | sendmail -t
返回
undisclosed-recipients:;... List:; syntax illegal for recipient addresses
如何配置 Sendmail 以使其在通过 提交消息时支持空的 RFC 5322 组地址sendmail -t
?
答案1
查看了 Sendmail 的源代码后,我的结论是,为了让 Sendmail 正确支持(或者说忽略)空组,需要更改源代码。
空组地址例如To: foo:;
应该被忽略,就像To: (foo)
或To:
或''
(即什么都没有)。通过调试我发现这不是问题submit.cf
。Cf 规则永远不会应用于空地址。在 中parseaddr.c
,parseaddr->prescan
对空地址返回 NULL,但对 不返回:;
。这可以通过向 提交消息来显示sendmail -t -d20.1
。
解决方法是:
- 使用
(foo)
而不是foo:;
- 使用“impudent”(*) 重写 + 丢弃,如用户所示在在phpBB:列表:;收件人地址的语法非法(存档于 https://archive.is/rQJ8X)(代码未经测试)
(*)引用原作者