如何应对 VPS 上同时只打开一个 SMTP 套接字的情况?

如何应对 VPS 上同时只打开一个 SMTP 套接字的情况?

我拥有一个 VPS,用于托管大约 30 个域名。每个域名上我都有几个电子邮件帐户。总共有 150 多个帐户。在过去的几周里,我注意到有时(一天几次,主要是在高峰时段)有几封(从 1 封到多达 10 封)电子邮件未发送,而是被推迟了。邮件日志中有一条消息“连接被拒绝”。一段时间后,它们最终被成功发送。有些在 5 分钟后发送,有些在 2-3 小时后发送,但都发送了。

我是一名网页设计师,具有相当的编程知识,但遗憾的是在 Linux(Centos7)方面经验较少。

在自己无法找到问题后,我联系了我的 VPS 托管公司。他们说他们确实限制了所有 VPS 能够每次只打开一个 SMTP 套接字。他们这样做是为了防止垃圾邮件发送者将他们的 IP(或整个 IP 范围)列入黑名单。他们建议我切换到专用服务器或寻找其他主机。由于专用服务器的价格是 VPS 价格的几倍,而且我真的没有必要切换到专用服务器(我托管 30 个小型网站,如前所述),我正在尝试找到解决此问题的方法。

目前,我强制重新发送的延期电子邮件

后队列-f

命令。但我需要执行此命令手动发送,并且次数与队列中的延期电子邮件次数相同。更不用说需要不断监控队列中的延迟电子邮件。显然这不是解决我的问题的方法。

我尝试安排crone一个命令每 5 分钟定期执行一次postqueue,但第一次执行后,我得到了类似 Unknown command postqueue 之类的错误command not found...我猜这与环境变量有关,但这超出了我的知识范围。此外,如果队列中有 10 封延迟邮件,则每次cron执行只会发送一封。因此,最后一封邮件将在 50 分钟后发送,这仍然不是一个很好的解决方案。我需要一个 cron 来运行类似这样的程序每 5 分钟运行一次 crone(或其他)

while (there are deferred emails in the queue)
{
    postqueue -f
}

又出现了另一个问题:如果电子邮件因为其他原因(而不是“连接被拒绝”)而被延迟,该怎么办?例如,目标主机目前无法访问……那么这个 cron 将永远无法完成……!?!这个 cron 解决方案的总体性能如何?

您遇到过类似的问题吗?我该如何忍受 VPS 上的 SMTP 套接字限制?我应该找另一个主机还是改用专用主机?

这可能相关:我在我的 VPS 上使用 centos 7,并使用 Plesk 面板进行域管理。

任何帮助都非常感谢。谢谢!

编辑:

cron我设法用这个命令安排了一个

/sbin/postqueue -f

每 5 分钟运行一次(0,5,10,15,20,25,30,35,40,45,50,55 * * * *)。但是,如上所述,这仍然不是一个完美的解决方案。

相关内容