You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Procmail正则标记To字段不含指定字符串的邮件?

Procmail过滤To字段不含指定内容的解决方案

Procmail默认使用POSIX扩展正则表达式,确实不支持Perl兼容正则(PCRE)里的负向前瞻((?!...))这类零宽断言语法,这就是你之前尝试无效的原因。下面给你两种可行的解决方案:

方案一:排除式规则(推荐,简洁可靠)

利用Procmail规则从上到下执行的特性,先匹配并放行To字段包含“myname”的邮件,剩下的自然就是To不含“myname”的邮件,再对这些邮件执行过滤或标记操作。

示例配置:

# 放行To字段包含myname的邮件,跳过后续处理
:0
* ^To:.*myname
CONTINUE  # 让邮件继续走后续规则,或者用 /dev/null 直接丢弃(按需选择)

# 针对To不含myname的邮件,执行过滤或标记
:0:
* ^Subject:.*Derila  # 保留你原有的主题过滤规则
filtered-mails/  # 归档到指定文件夹,替换成你的目标动作

# 如果是添加标记(比如自定义邮件头)
:0 fhw
| formail -A "X-Filter-Tag: Non-Myname-Recipient"

如果需要同时排除Cc字段包含“myname”的邮件,只需在放行规则里添加条件:

:0
* ^To:.*myname
* ^Cc:.*myname
CONTINUE

方案二:POSIX正则实现“不包含”(繁琐,仅作参考)

通过构造POSIX兼容的正则来匹配To字段中完全不出现“myname”的内容,这种写法需要逐个字符排除匹配,适合短字符串,长字符串容易出错:

:0:
* ^To:.*([^m]|m[^y]|my[^n]|myn[^a]|myna[^m])*$
# 执行你的过滤/标记动作
target-folder/

内容的提问来源于stack exchange,提问作者ff-webdesigner

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 04:16:03