如何从Postfix和Procmail中删除twoo.com收到的邮件

时间:2015-07-30 21:44:58

标签: regex postfix-mta spam procmail

这些f *人已经订阅了我自己不需要的f *服务。 我首先尝试按照电子邮件中的链接取消订阅。 要取消订阅,我必须登录...即使我知道psw也不想这样做。

所以我决定在服务器中阻止它们

/等/后缀/ body_checks

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

/等/后缀/ 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

收到他们的邮件

1 个答案:

答案 0 :(得分:1)

正如评论中已经指出的那样,您需要确保您的正则表达式与您希望它匹配的文本完全匹配。

Postfix(可选)将PCRE用于正则表达式,因此您应该能够在其中一个在线正则表达式帮助站点上进行测试; http://regex101.com/是一个受欢迎的,但还有更多。 (这是一个演示:https://regex101.com/r/gU7gD7/1

Procmail的正则表达式语法略有不同;如果你能找到一个提供egrep(又名ERE)正则表达式语法的工具,那将非常接近你可以用于Procmail的工具。

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

/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级别阻止比接受消息然后删除它要好得多。