我意识到这可能更适合 StackOverflow.com,但由于我不太擅长开发,我担心这些答案可能过于以开发人员为中心。不过,我希望尽可能提供一些细节,并且采用简化版本。
我想了解是什么让邮件服务器更快或能够处理更大的队列。例如,qmail 吹嘘自己速度非常快,但是我最近遇到了一些商业邮件服务器,它们在处理电子邮件数量方面远超 qmail(例如:队列大小超过 50,000 封没什么大不了的),但在速度上却与之匹敌。(抱歉,我不想透露名字)
我目前所知道的(如果我错了请纠正我):
速度:
SMTP 协议可用于在同一网络连接中发送多封电子邮件,从而节省建立和拆除套接字连接的时间。它们还将针对特定域的电子邮件分组在一起,并通过同一连接发送这些电子邮件。
多线程交付
队列大小:
- 将消息分解到多个目录中(例如:/var/qmail/queue/mess/{0..20}/)
- 正在使用的文件系统(我听说 XFS 更擅长处理大量较小的文件而不是巨大的文件)
答案1
使用基于 epoll/事件的系统而不是仅仅使用多线程也可以使邮件服务器更高效(想想传统 apache 设置与 nginx 之间的区别)。
如果您愿意冒着服务器可靠性的风险,您可以在写入假脱机目录或将其托管在 ramdisk 中时避免 fsyncing。如果您理智且负责任 - 您会选择使用电池备份缓存的 raid。
如果您的邮件服务器具有非平凡的路由/策略逻辑 - 您可以考虑[预]编译它,而不是解释每条消息的规则。