Sendmail支持空组地址(AKA列表语法)

电子邮件组地址, undisclosed-recipients:;a group:<[email protected]>,<[email protected]>; 是根据RFC 5322进行寻址的有效forms, 例如参见附录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 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 -t提交消息时,如何将Sendmailconfiguration为支持空的RFC 5322组地址?

在看了Sendmail的源代码之后,我的结论是,为了使Sendmail支持(或者更确切地说,忽略)空组,需要更改源代码。

空组地址,如To: foo:; 应该简单地忽略,就像To: (foo)To:或者'' (即没有)。 通过debugging,我发现这不是一个与submit.cf问题。 Cf规则从不应用于空地址。 在parseaddr.cparseaddr->prescan对于空地址返回NULL,但不是:; 。 这可以通过向sendmail -t -d20.1提交消息来sendmail -t -d20.1

解决方法是:

  • 使用(foo)而不是foo:;
  • 在phpBB:List中使用“impundent”(*)重写+丢弃,如用户所示: 语法对收件人地址非法 (存档在https://archive.is/rQJ8X )(代码未经testing)

(*)引用原作者