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

如何通过Sieve将含中日韩字符集的垃圾邮件移至指定文件夹?

用Sieve过滤中日韩字符集垃圾邮件的可行方案

我太懂这种头疼了——那种无正文、主题随机跳的中日韩垃圾邮件,SpamAssassin确实很难抓准,毕竟它更依赖传统的垃圾邮件特征。不过用Sieve实现拦截绝对可行,大概率是你之前的规则没踩对关键点。下面给你几个经过验证的方案,一步步来解决:

核心思路:抓准中日韩字符的本质特征

这类垃圾邮件要么直接包含中日韩字符,要么会在邮件头里声明对应的字符集,我们从这两个方向入手:

1. 直接匹配邮件主题/正文中的中日韩字符

利用Unicode字符属性匹配,不管邮件用什么编码,只要出现汉字、假名、韩文就触发规则。这是最精准的方式,因为它直接识别字符本身:

require ["fileinto", "regex", "subject", "body"];

# 匹配主题或正文中的中日韩核心字符
if anyof(
  regex :subject "[\p{Han}\p{Hiragana}\p{Katakana}\p{Hangul}]",
  regex :body "[\p{Han}\p{Hiragana}\p{Katakana}\p{Hangul}]"
) {
  fileinto "Junk/CJK-Spam"; # 替换成你实际要移动的文件夹名称
  stop;
}
  • \p{Han} 覆盖简体/繁体汉字
  • \p{Hiragana}/\p{Katakana} 覆盖日文假名
  • \p{Hangul} 覆盖韩文

2. 匹配邮件头中的中日韩字符集声明

有些垃圾邮件正文为空,但会在Content-Type头里明确标注中日韩编码(比如GB2312、Shift_JIS),针对这种情况可以单独写规则:

require ["fileinto", "regex", "header"];

# 匹配常见的中日韩字符集编码
if regex :header "Content-Type" "(gb2312|gbk|gb18030|shift_jis|euc-kr|utf-16)" {
  fileinto "Junk/CJK-Spam";
  stop;
}

这个规则能抓到那些刻意隐藏正文但漏了字符集声明的垃圾邮件。

3. 结合「无正文」特征强化规则(推荐)

既然你提到这类邮件无正文,我们可以把这个特征和中日韩字符结合,大幅降低误判率:

require ["fileinto", "regex", "subject", "body", "header"];

# 先筛选出正文内容极少的邮件(小于10个字符,可根据需求调整)
if body :content "text/plain" :count "lt" 10 {
  # 再检查是否含中日韩特征
  if anyof(
    regex :subject "[\p{Han}\p{Hiragana}\p{Katakana}\p{Hangul}]",
    regex :header "Content-Type" "(gb2312|gbk|shift_jis|euc-kr)"
  ) {
    fileinto "Junk/CJK-Spam";
    stop;
  }
}

这样既不会误拦正常的短内容中日韩邮件,又能精准命中目标垃圾邮件。

关键注意事项

  • 确保你的邮件服务器(比如Dovecot)启用了Sieve的regex扩展,大部分主流服务器默认支持,但如果规则无效,可以检查服务器配置。
  • 测试阶段建议先把fileinto替换成keep,或者移动到临时文件夹观察3-5天,确认没有误判再正式启用。
  • 如果还有漏网之鱼,可以补充检查邮件头的其他异常特征,比如缺少Message-ID、发件人域名无MX记录等,进一步强化规则。

内容的提问来源于stack exchange,提问作者Nick

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 08:33:31