我想在我的服务发送的电子邮件的页脚中提供单击“取消订阅”链接。
显然,许多垃圾邮件扫描程序都会扫描电子邮件,并会按照电子邮件中找到的任何链接来扫描其内容是否存在恶意软件。到目前为止我使用过的解决方法:
这样,用户通常只需要在表单上单击一下,他们就会收到“您已取消订阅”消息。如果他们禁用了 JS,他们仍然可以手动提交确认表。
现在的问题是,某些扫描仪(例如Office365的ATP)会打开页面,并在其中执行JS。通过执行 JS,他们提交表单并导致用户自动取消订阅。
我考虑过在自动提交 JS 逻辑中添加检查:
但这些看起来都是脆弱的方法,充其量只是黑客攻击,随着电子邮件扫描仪改变策略,它们必然会被破坏。
我相信这个问题在我之前困扰过很多人。除了放弃单击功能之外,是否还有已知的合理解决方法?
PS。我添加了对 RFC 8058 的支持,但用户仍然会单击页脚中的链接。
这是M³AAWG(消息传递、恶意软件和移动反滥用工作组)持续争论的话题。这是一团糟,没有简单的解决方案。听起来您所做的一切都是正确的,但有些反垃圾邮件系统有点过于激进。
最大的问题是,您能做的任何事情也可能被滥用职权的营销人员或垃圾邮件发送者完成。
我听过的最好的建议就是为操作设置一个计时器。为在发送后 5 分钟内取消订阅的用户添加验证码,然后删除验证码。 (不要为您的 RFC 8058 List-Unsubscribe-Post 链接实现此功能。)
我最喜欢的下一个建议是在消息中添加金丝雀链接。这对于人类读者来说应该是不可见的。如果遵循,它会恢复该 IP 最近的点击活动,并暂时禁止该 IP 触发操作。我也喜欢你的想法,只要确保如果禁用Javascript,用户在单击确认按钮后仍然可以取消订阅。
我的一部分(警告,我是一名反垃圾邮件研究员)
想要这些误报。希望这能让我的同事们明白,他们的工作做得很糟糕,而且这些升级将会继续发生在他们身上。从你的角度来看,你可以推卸责任(尽管在此过程中你会失去一些订阅者)。
垃圾邮件检测系统必须小心避免订阅管理链接(至少在坏人开始将其有效负载伪装成 unusbscribe 链接之前)。
https://www.npmjs.com/package/express-useragent 在这种情况下非常有帮助。