Postfix/Dovecot环境下扫描邮件附件特定词汇的服务端开源方案咨询
Postfix/Dovecot环境下扫描邮件附件特定词汇的服务端开源方案咨询
嗨,我完全get到你的需求——在现有的Postfix/Dovecot邮件系统里,要能深入扫描docx、PDF这类附件里的特定关键词,一旦命中就给发件人返回自定义退信,试过Amavis和Rspamd没找到合适的路子,又不想自己从零写milter,想找现成的开源工具对吧?
我给你推荐几个经过实际验证的方案,都是能直接适配你的环境的:
MIMEDefang:这绝对是最适合你场景的工具之一,它是专门为Postfix打造的开源milter,核心就是用来处理邮件的MIME结构、附件内容。
- 它能自动拆解邮件,提取出docx、PDF这类附件,然后你可以调用成熟的文本转换工具(比如
pdftotext处理PDF,pandoc或者antiword处理docx)把附件转成纯文本。 - 接着你可以在MIMEDefang的过滤规则脚本里,用简单的
grep匹配关键词,或者写更复杂的正则逻辑。一旦匹配到,直接设置邮件为拒绝状态,还能自定义退信的提示内容,完全符合你的需求。 - 它和Postfix的集成非常成熟,文档也很全,很多生产环境的邮件服务器都在用这个做内容和附件的精细化过滤。
- 它能自动拆解邮件,提取出docx、PDF这类附件,然后你可以调用成熟的文本转换工具(比如
SpamAssassin + 附件提取插件:虽然SpamAssassin主打反垃圾邮件,但它的扩展性很强,能通过自定义规则和插件实现附件内容扫描:
- 你可以启用
ExtractText这类插件,它能自动提取PDF、docx等附件的文本内容,把这些内容加入到SpamAssassin的扫描池里。 - 然后你可以在SpamAssassin的规则文件里,针对目标关键词写自定义规则,给匹配到的邮件设置极高的分数,再让Postfix把这类高分邮件直接拒掉并返回退信。这个方案的好处是如果你的环境已经在用SpamAssassin,不需要额外加太多新组件。
- 你可以启用
Postfix内容过滤器+开源脚本:如果不想用复杂的milter,你可以利用Postfix自带的
content_filter机制,搭配现成的开源扫描脚本:- 先通过
postconf配置把邮件导向自定义的过滤器脚本,脚本可以用ripmime这类工具拆解邮件、提取附件,再调用文本转换工具处理附件内容,最后做关键词匹配。 - 网上有不少现成的Shell/Python脚本示例,你可以直接拿来修改适配你的关键词需求,然后让脚本返回结果给Postfix,决定是放行还是退信。
- 先通过
另外补充下你提到的两个工具:其实Amavis和Rspamd不是不能做,可能是配置没到位?比如Amavis可以调用SpamAssassin的规则来扫描附件内容,Rspamd的extractor模块也能提取附件文本并配合regex规则匹配,但如果你折腾半天没搞定,前面说的MIMEDefang确实是更直接、更容易上手的选择。
备注:内容来源于stack exchange,提问作者Mark
相关产品推荐
相关产品推荐

