exim 或 dovecot 插件或过滤器将主体预览放到标题中

exim 或 dovecot 插件或过滤器将主体预览放到标题中

是否有任何过滤器可以让我在邮件标头中同时包含纯文本或 HTML 文本正文摘要(预览)?就像 SpamAssassin 处理垃圾邮件一样(它插入带有内容预览部分的 X-Spam-Report 标头),但更灵活/可配置,并且适用于所有类型的邮件,而不仅仅是垃圾邮件。

我想以 Gmail 的方式显示邮件列表,这样主题后面就是文本正文的第一行(如果正文是 HTML,则此文本行应删除 HTML 标签等)。虽然可以通过许多相当复杂的 IMAP 查询来实现这一点,但我更愿意保持简单,例如获取标头值。

或者,也许 spamassassin 本身可以为此进行配置?

答案1

如果您可以配置 SpamAssassin 以将预览放入其垃圾邮件报告中,则使用 exim 的 ACL 系统将该预览放入每封邮件中,而不仅仅是垃圾邮件中。我的意思是不要根据分数放入报告,而是将报告放入每封邮件中,并且只拒绝如果分数高于您的最高阈值。下面是我如何操作的一个例子:

  # Always add X-Spam-Score and X-Spam-Report headers
  # using SA system-wide settings (user "exim")
  # no matter if over threshold or not.
  warn    condition      = ${if >{$message_size}{500K}{no}{yes}}
          !authenticated = *
          spam           = exim:true
          add_header     = X-Spam-Score: $spam_score
          add_header     = X-Spam-Report: $spam_report
          message        = X-Spam-Score: $spam_score\n\
                           X-Spam-Report: $spam_report

  # Add X-Spam-Flag if spam is over system-wide threshold
  warn    condition      = ${if >{$message_size}{500K}{no}{yes}}
          !authenticated = *
          message        = X-Spam-Flag: Yes
          spam           = exim
          add_header     = X-Spam-Flag: Yes

  # Reject spams with score over 6
  deny    condition      = ${if >{$message_size}{500K}{no}{yes}}
          !authenticated = *
          message        = This message scored $spam_score points.  Rejected.
          spam           = exim:true
          condition      = ${if >{$spam_score_int}{60}{1}{0}}

对于您来说,您需要在 local.cf 中添加 _ PREVIEW _ display 标志来创建名为 X-Spam-Content-Preview 的标头:

add_header all Content-Preview _PREVIEW_

然后配置您的应用程序来查找并显示该标题。

相关内容