使用 exim systemfilter 删除特定的收发邮件而不退回邮件

使用 exim systemfilter 删除特定的收发邮件而不退回邮件

我想使用系统过滤器忽略来自和发送到特定域的电子邮件,规则如下:

如果 ("$message_body:, $h_to:, $h_reply_to:, $sender_address" 包含 "example.com") 则失败 endif

但是这种过滤的弊端是它会导致发送方发送失败,这是我们不希望看到的。

我们不希望全局禁用退回邮件,因此是否可以简单地删除我们的规则检测到的任何 FAIL 和投递失败的消息?

请给我一些建议。此致

答案1

您可以将其“保存”到 /dev/null。此后无需进行其他处理,因为 Exim 会将其视为“重要交付”。

if ("$message_body:, $h_to:, $h_reply_to:, $sender_address" contains "example.com") then save /dev/null endif

该手册包含更多信息

也许还值得一提的是RFC 5321

“正如下面第 7.8 节和第 7.9 节所述,在实践中允许在不通知发件人的情况下丢弃邮件。但是,这样做非常危险,违反了长期以来的传统和社区对邮件要么投递要么退回的期望。如果静默消息被滥用,很容易破坏人们对互联网邮件系统可靠性的信心。因此,只有在高度确信邮件是严重欺诈或其他不当行为的情况下,才应考虑静默消息。”

答案2

最准确的答案是,它将删除电子邮件并且不再处理它以供放出或进入: if ("$message_body:, $h_to:, $h_reply_to:, $sender_address" contains "example.com") then save /dev/null finish endif

或者

如果(“$message_body:, $h_to:, $h_reply_to:, $sender_address”包含“example.com”)则看到完成endif

相关内容