Rspamd 抱怨 Mime-Version 标头

我收到了由 Discourse 创建的电子邮件(包括这一封和我自己的邮件),其中包含以下邮件头:

Mime-Version: 1.0

而 rspamd 因此给出了 0.5 分的负面垃圾邮件评分。:frowning:

我认为该邮件头应写成如下形式:

MIME-Version: 1.0

告诉他们他们是错的,他们应该修复他们的工具。

1.2.2. 语法表示法 本规范使用增广巴科斯-诺尔范式(ABNF)[RFC5234] 表示法来形式化定义消息的语法。字符将通过十进制值(例如,%d65 表示大写字母 A,%d97 表示小写字母 a)或不区分大小写的字面值(用引号括起来,例如,“A” 表示大写或小写的 A)来指定。

我认为同样的规则也适用于标头 Message-ID,其中 ID 字符也应为大写。否则,该标头也会得分较低。

即使他们(rspamd)因这一期望而可能违反标准,这也可能是合理的。如果更多正常邮件采用这种语法,而垃圾邮件大多采用另一种语法,那么以此方式进行过滤或许是可行的。

刚在 rspamd 中添加了该问答:

恕我直言,将“常用于垃圾邮件”作为负面评价依据是颠倒黑白的,因为这并未考虑该特性在“整体”中的普遍使用情况。

鉴于每个 Discourse 安装都使用了 MimeId 变体,显然它们在“正常邮件”中也同样被广泛使用。我很希望能看到相关数据。

当然,他们声称自己并非 RFC 验证器是正确的,但这自动意味着他们将自己置于一个事实上的替代标准制定机构的角色,这可能更糟糕。

糟糕的是,我们作为这些实例的用户或管理员,夹在中间,无法判断谁是对的。

此外,始终可以区分“做得刚好正确”和“做得更出色”。我常有这样的经历:在与外部系统进行技术沟通时,必须保持灵活性。它们往往并非 100% 正确地实现,或者至少未按我所理解的标准方式实现。因此,在标准周围总会存在一些灰色的灵活空间。

对我来说,看起来是较大的参与者在遵循这些规则编写这些标头:

  • 如果是缩写,则全部使用大写字母
  • 如果是单词,则首字母大写,其余小写

按照这种模式,MIMEID 是合理的,MessageVersion 也是如此。

这符合标准中关于不区分大小写的规定,它只是一个小小的提示,表明它比 RFC 更“标准化”。据我理解,在 Discourse 创建邮件时遵循同样的做法并无坏处。