【发布时间】:2021-08-29 19:56:23
【问题描述】:
我目前正在尝试编写一个简单的 Spring 电子邮件验证微服务。我正在使用 Apache SMTPClient API 连接到 SMTP 服务器并验证电子邮件地址是否存在(连接 -> 登录 -> setSender -> setRecipient -> 注销 -> 断开连接)。连接到大多数大型电子邮件提供商(gmail、yahoo 等)时没有问题,但对于其他人来说,连接时会出现 5-20 秒的奇怪延迟。例如,使用 protonmail 我有时会等待看起来像固定的 5 秒延迟,有时我会在大约 150 毫秒后正常连接。对于其他一些较小的服务,每次我尝试连接时都会出现固定延迟。 由于我正在尽最大努力减少此类验证所需的时间,因此这是一个相当大的问题,因为在没有遇到此类问题时通常需要
我试图找出造成这种延迟的原因,但遇到了两种可能的解释:
- tarpitting - 虽然它导致的延迟适合问题,但我发送的是单个连接请求,而该机制应该防止垃圾邮件/批量电子邮件,
- 被列入黑名单 - 这也可能是原因,但一般而言,该信息被放入对我发送的其中一个 SMTP 命令的(否定)回复中。
如果有任何关于可能导致延迟的原因以及如何避免延迟的建议(如果可能的话),我将不胜感激。
【问题讨论】:
-
延迟通常是由于 rDNS 失败或超时。