我目前正在扩展一个具有自动回复功能的电子邮件系统。在黑暗的过去,我见过一些很棒的邮件循环,现在我正在努力避免这样的事情发生在我身上。
我已经研究了其他工具(“mailbot”、“vacation”)是如何执行此操作的,在我自己的邮件存档中查找可疑的邮件 header ,但我想知道是否还有其他内容可以添加。
此时我的流程:
- 如果发件人地址无效,则拒绝(这应该会删除带有 <> 发件人的邮件)
- 如果发件人地址符合以下其中一项,则拒绝:
'^root@', '^主机管理员@', '^邮政局长@', '^没人@', '^www@', '-要求@'
- 如果存在以下 header 之一(在空格标准化和小写之后),则拒绝:
'^优先级:垃圾$', '^优先级:批量$', '^优先级:列表$', '^列表 ID:', '^内容类型:多部分/报告$', '^x-自动生成:回复$', '^自动提交:是$', '^主题:自动回复$'
- 如果自动回复器最近已看到发件人地址,则拒绝。
- 如果发件人地址是我自己的地址,请拒绝:)
- 接受并发送自动回复,在主题前面添加
自动回复:
,将 header优先级:批量
和自动提交:是
设置为希望能够阻止某些远程邮件程序进一步传播自动回复。
我有什么遗漏的吗?
最佳答案
在迄今为止的研究中,我已经提出了这些规则。
将入站消息视为自动生成,忽略它并将发件人列入黑名单,如果...
-
Return-Path
标题是<>
或缺失/无效 -
Auto-Submitted
header 存在除“no”之外的任何值 -
X-Auto-Response-Suppress
header 存在 -
In-Reply-To
header 丢失- 注意:如果我正在阅读 RFC3834正确的是,你自己的程序应该设置这个,但到目前为止,一些自动回复器似乎忽略了这个(freshdesk.com)
发送出站消息时,请务必...
- 设置
Auto-Submitted: auto-generated
header (或auto-replied
视情况而定) - 设置您的 SMTP
MAIL FROM:
具有空地址<>
的命令- 请注意,包括 Amazon SES 在内的某些交付服务将在此处设置自己的值,因此这可能不可行
- 根据入站方建立的黑名单检查收件人,并中止向已知的自动回复者发送
- 考虑每单位时间(长如 24 小时)向给定收件人发送不超过 1 条消息
其他答案和要点的注释
- 我认为忽略
Precedence: list
消息会导致误报,至少对于我的应用的配置来说是如此 - 我认为OP的“自动提交”规则是一个拼写错误,官方标题是
Auto-Submitted
引用文献
- RFC3834
- This SO question about Precedence header有几个很好的答案
- Wikipedia Email Loop Article
- desk.com article
欢迎评论,我会更新这个答案,因为这是一个很好的问题,我希望看到一个权威的答案。
关于email - 我应该使用什么启发法来防止自动应答器 war ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5021943/