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

Dovecot邮件服务器未配置垃圾邮件规则却自动将含List-Unsubscribe头的邮件移入Junk文件夹

Dovecot邮件服务器未配置垃圾邮件规则却自动将含List-Unsubscribe头的邮件移入Junk文件夹

这种情况真的挺闹心的——明明没手动配过任何垃圾邮件过滤规则,像GitHub这类常用的自动通知邮件,居然全被塞进Junk文件夹了。结合你给出的Dovecot配置和问题描述,我来帮你捋捋几个最可能的原因和对应的解决办法:

1. 先查Pigeonhole Sieve的默认/隐藏规则

你已经装了Pigeonhole(Dovecot自带的Sieve脚本插件),哪怕你自己没写过过滤规则,系统里说不定藏着全局默认的sieve脚本,或者用户目录下有你没注意到的隐藏规则文件。你可以这么排查:

  • 先在dovecot -n的输出里找sieve相关配置,比如有没有sieve_global_path(全局脚本路径)或者sieve = ~/.dovecot.sieve(用户级脚本)。如果有全局路径,比如/etc/dovecot/sieve/default.sieve,打开看看里面是不是写了针对List-Unsubscribe头的过滤逻辑。
  • 再去你的用户目录下翻一翻,有没有.dovecot.sieve或者.sieve这类隐藏文件,说不定是之前自动生成的,或者你不小心创建的规则。

2. 排查系统后台的SpamAssassin

Ubuntu 20.04上,Postfix默认可能会和SpamAssassin(一款开源垃圾邮件检测工具)自动集成,哪怕你没手动配置,它可能已经在后台默默运行,把带List-Unsubscribe头的邮件误判成垃圾了。可以这么验证:

  • 先查SpamAssassin是否在运行:执行systemctl status spamassassin,如果显示active (running),说明它在干活。
  • 找一封被移去Junk的GitHub邮件,查看它的原始头信息,看看有没有X-Spam-Flag: YES或者X-Spam-Score这类字段。如果有,那就是SpamAssassin把这些邮件标记成垃圾了,而Dovecot可能默认会根据这些X-Spam开头的头,自动把邮件移去Junk。
  • 如果确实是SpamAssassin的锅,你可以调整它的规则:要么把List-Unsubscribe头设为“非垃圾”特征,要么直接禁用针对这个头的评分规则。

3. 检查Dovecot的Junk邮箱自动配置

你的配置里给mailbox Junk设了special_use = \Junk,虽然这个只是标记特殊邮箱,但有些Dovecot插件可能会结合这个标记做自动分类。你再仔细看看dovecot -n的完整输出,有没有plugin块里的sieve_before、sieve_global这类配置,这些可能指向了你没注意到的全局过滤脚本。

快速测试小技巧

找一封被移去Junk的GitHub邮件,复制它的完整原始内容(包括所有头信息)存成test_email.txt,然后用sendmail手动投递到自己邮箱:

cat test_email.txt | sendmail your_username@yourdomain.com

看看这封测试邮件会不会被移去Junk。如果还是会,那肯定是服务器端的规则在搞鬼;如果不会,那可能是邮件在传输过程中被其他节点(比如GitHub的邮件服务器)加了某些特殊头,触发了过滤。

另外,你也可以临时禁用Pigeonhole的Sieve功能来验证:修改dovecot.conf,把所有和sieve相关的配置注释掉,然后重启Dovecot:

systemctl restart dovecot

再收几封GitHub通知看看,如果不再进Junk,那问题百分百出在Sieve规则上。

备注:内容来源于stack exchange,提问作者mc51

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.16 10:13:04