exim 过滤器正则表达式丢弃规则

exim 过滤器正则表达式丢弃规则

我们正在尝试丢弃所有具有匹配主题的电子邮件,主题示例:

主题:DOMAIN.COM 警告:NAME 我们尚未收到您的付款

我们正在尝试匹配任何域、警报和“我们尚未收到您的付款”

使用以下过滤器:

if
 $header_subject: matches "^(?!:\\\\/\\\\/)([a-zA-Z0-9-_]+\\\\.)*[a-zA-Z0-9][a-zA-Z0-9-_]+\\\\.[a-zA-Z]{2,11}?\\$"
 and $header_subject: contains "Alert"
 and $header_subject: contains "We have NOT received your payment"
then
 save "/dev/null" 660
endif

但是在测试时它不匹配,我已经测试了正则表达式以匹配域并且它可以工作,但是在添加附加规则时,它会停止过滤器的工作。

答案1

这将丢弃主题与“DOMAIN.COM 警报:NAME 我们尚未收到您的付款”匹配的邮件

(其中 DOMAIN.COM 可以是任何域)

if $h_subject matches "^[A-Za-z0-9-_]+\\\\.[a-zA-Z]\\\\b.+Alert.+We have NOT received your payment\\$"
then
  seen finish
endif

注意:您可以使用以下方法测试系统过滤器对交付的影响:

exim -bF test_filter <test_message

您的第一个正则表达式包含与\\$字符串结尾匹配的字符串,因此仅当域字符串位于主题末尾时它才会匹配。

相关内容