如何丢弃来自 Postfix 和 Procmail 的 twoo.com 传入邮件

How to trash twoo.com incoming mail from Postfix and Procmail

这些该死的人订阅了我不想要的他们该死的服务。 我首先尝试按照电子邮件中的 link 退订。 要取消订阅,我必须登录...即使我知道 psw 也不想这样做。

所以我决定在服务器中屏蔽它们

/etc/postfix/body_checks

/^(.*) twoo.com/ DISCARD
/^(.*) twoomail.com/ DISCARD

/etc/postfix/header_checks

/^(.*) twoo.com/ DISCARD
/^(.*) twoomail.com/ DISCARD

那没有用,所以我用这些指令创建了 /home/me/.procmailrc

:0HB:
* ^twoo.com
/dev/null

:0HB:
* ^twoomail.com
/dev/null

/etc/procmailrc 包含使用来自 /home/user/.procmailrc 的过滤器的指令(有效)

无法理解为什么我仍然在 /home/me/Maildir/Inbox

中收到他们的邮件

如评论中所述,您需要确保您的正则表达式与您希望它匹配的文本完全匹配。

Postfix(可选)将 PCRE 用于正则表达式,因此您应该能够在许多在线正则表达式帮助站点之一进行测试; http://regex101.com/ is a popular one, but there are many more. (Here is a demo: https://regex101.com/r/gU7gD7/1)

Procmail 的正则表达式语法有些不同;如果您能找到提供 egrep(又名 ERE)正则表达式语法的工具,那将非常接近您可以在 Procmail 中使用的工具。

特别是,/(.*) twoo.com/ 要求在 twoo.com 之前有一个 space。此外,点需要转义,一旦删除 space,所有 ^(.*) 都是不必要的。当然,当子字符串是可选的时,可以很容易地在单个正则表达式中指定。

/twoo(mail)?\.com/ DISCARD

类似地,^ 锚点要求在 Procmail 中的行首进行匹配,这将阻止行中其他任何地方的匹配。只需删除它。

:0HB
* twoo(mail)?\.com
/dev/null

一如既往,写入 /dev/null 时不应使用锁定 -- 为什么要防止两个进程同时丢弃它们的数据?另见 http://www.iki.fi/era/procmail/mini-faq.html#locking

但是,如果您可以使 Postfix 规则生效,那么这应该是不必要的。在 MTA 级别阻止比接受邮件然后删除它要好得多。