关于PigeonHole/Dovecot中Sieve Spamtest扩展结合rspamd的配置疑问及邮件头含义咨询
PigeonHole/Dovecot中Sieve Spamtest扩展结合rspamd的配置疑问及邮件头含义咨询
我来帮你拆解下这些疑问,一步步讲清楚:
一、X-Spamd-Result邮件头各部分含义
先看你给出的这个邮件头:
X-Spamd-Result: default: False [-1.10 / 15.00];
每个字段的作用是这样的:
default:这是rspamd默认使用的符号组名称,简单说就是rspamd用来归类核心规则的分组标识。除非你手动修改了rspamd的符号组配置,否则这个值基本不会变。False:这代表rspamd对该邮件的判定结果——不是垃圾邮件。如果邮件得分超过了你设置的阈值(就是后面的15.00),这里会变成True,表示被判定为垃圾邮件。[-1.10 / 15.00]:前面的-1.10是该邮件的实际垃圾得分(负数表示偏向正常邮件),后面的15.00是你在rspamd里设置的垃圾邮件判定阈值。
二、你的Sieve Spamtest配置问题
你的配置思路是对的,但有个关键问题需要修正:
你当前的正则里写死了default: False,但False是会变化的(垃圾邮件会变成True),这会导致Sieve无法正确识别垃圾邮件的得分。
修正后的配置建议
方案1:兼容判定结果的变化
把正则里的False改成匹配True|False,这样不管rspamd判定结果是啥,都能正确捕获分数:
sieve_spamtest_status_type = score sieve_spamtest_status_header = X-Spamd-Result: default: (True|False) \[(-?[[:digit:]]+\.[[:digit:]]+) / [[:digit:]]+\.[[:digit:]]+\] sieve_spamtest_max_header = X-Spamd-Result: default: (True|False) \[-?[[:digit:]]+\.[[:digit:]]+ / ([[:digit:]]+\.[[:digit:]]+)\]
方案2:更健壮的通用匹配(推荐)
如果你担心以后可能修改rspamd的符号组名称(比如把default改成别的),可以用[^:]+来匹配任意符号组名称,让配置更灵活:
sieve_spamtest_status_type = score sieve_spamtest_status_header = X-Spamd-Result: [^:]+: (True|False) \[(-?[[:digit:]]+\.[[:digit:]]+) / [[:digit:]]+\.[[:digit:]]+\] sieve_spamtest_max_header = X-Spamd-Result: [^:]+: (True|False) \[-?[[:digit:]]+\.[[:digit:]]+ / ([[:digit:]]+\.[[:digit:]]+)\]
这样配置后,不管rspamd的判定结果是True还是False,或者符号组名称有没有修改,Sieve都能正确提取到邮件的得分和阈值。
备注:内容来源于stack exchange,提问作者user2690527
相关产品推荐
相关产品推荐

