今天我遇到了一个有趣的错误。我试图更新邮件列表中的地址,它向新地址发送了一封电子邮件,其中包含一个唯一的 URL,我应该访问该 URL 来确认我的请求。然而,当我点击它时,我收到一条错误消息,提示该链接已被使用,现在无效。
经过进一步调查,似乎我所在组织的电子邮件系统中的某些主机在发送邮件之前会访问其中的 URL(GET 页面),大概是为了检查链接是否指向某种病毒或其他恶意软件。显然,邮件列表的确认页面需要额外点击才能真正确认请求,因此这实际上不会更新我的订阅,但会使 URL 失效。因此,我根本无法更新我的订阅!
问题是:
在这种情况下谁错了?我应该向谁投诉?是发送只能使用一次的链接的邮件列表服务器,还是设置了扫描器来访问链接的我自己的电子邮件管理员?
我应该避免哪一种做法(或两种做法都应避免)?这两种做法似乎都有点反社会,但每种做法似乎都有其合理之处。
我可以想象自动访问并加载来自收到的电子邮件的随机 URL 会产生更严重的后果;例如,仅仅请求 URL 就可能触发一些不可逆转的操作,也许是我根本不想做的。另一方面,想要检查电子邮件是否包含恶意链接似乎并不合理,除了查看另一端的内容外,您还能如何检查这一点?
答案1
从技术上来说,在这种情况下,没有人是“错的”:电子邮件 RFC 未提及访问链接。事实上,它们并不关心链接或病毒扫描。
由于标准对此问题保持沉默,因此没有什么可违反的。
话虽如此,但你们的电子邮件系统的表现在我看来肯定不够理想。
我肯定不会在我的环境中实施这样的系统。
正常行为是评估 URL(字符串本身),而不是访问它。
这是因为电子邮件中的许多链接不是幂等的 - 一些示例:
- 您从邮件列表中获得的“是的,我想订阅这封电子邮件”链接
- 许多邮件列表消息页脚中的“快把我从这个列表中删除!”链接
- 某些公司在您忘记密码时发送的“我想重置密码”链接
- 某些电子商务平台生成的一次性下载链接
- 伪造的退订链接、嵌入的图片等,让垃圾邮件发送者知道您的电子邮件仍在运行
- 合法的 View-Tracker 链接(通常嵌入 1px 图像)