适用于较大文件夹的快速 imap 服务器

适用于较大文件夹的快速 imap 服务器

我正在寻找一个可以处理较大文件夹的快速 imap 服务器。比如说每个文件夹可以处理 20,000-100,000 封电子邮件。

目前我正在使用 dovecot,打开一个文件夹需要 10 秒,并且 imap 服务器上的 HD 灯疯狂闪烁。

我使用 alpine 作为客户端,默认情况下它只列出最新的邮件,因此我的客户端在打开邮箱时不会尝试传输所有内容。这可以从我滚动时它必须加载下一页的主题行(我第一次滚动到那里)中看出。

我在 XFS 上使用 maildir。

编辑:我之所以问这个问题,是因为从总体上看,数据并不多。如果这是在 SQL 数据库中,那么获取最新 40 条消息的主题行将不是处理一个包含 40,000 封电子邮件的文件夹需要 10 秒钟。唯一需要的数据是:

SELECT date, from, subject FROM emails ORDER BY date DESC LIMIT 40;

有任何想法吗?

答案1

从性能上看,Dovecot 实际上相当不错。Dovecot 的性能调优 wiki 页面有一些技巧和窍门可以进一步提高性能。如果可能的话,将索引和邮件目录放在不同的磁盘上是一个不错的开始。您还可以考虑切换到 Dovecot 的dbox 存储格式

答案2

也许您可以尝试使用数据库引擎来存储消息,而不是使用 Maildir/Maildir++ 邮箱。这可以通过以下方式完成数据库邮件

我不知道 dbmail 在生产环境中的可靠性如何,但由于您已经实现了虚拟化,因此您可以在另一台 VM 上进行设置以进行测试,并查看它在您的环境中的表现。

以下是 dbmail 架构的概述:

替代文本
(来源:数据库邮件网站

答案3

你没有提到服务器规格……你使用了多少内存、处理器、网卡/交换机是千兆的?如果你看看服务器,你能知道什么被最大化了吗?如果是驱动器吞吐量,你改变服务器软件不会有太大效果

我一直在通过网络克隆系统,当我知道我的系统能够达到 50 MB/s 的突发速度时,千兆交换机上的两个系统仅能以大约 15 MB/s 的速度传输数据,这让我感到很困惑。结果发现是磁盘在终端系统上造成了瓶颈(我将驱动器放入第二个 IDE 通道并执行直接 DD,获得了相同的传输速度)。

您可能需要检查处理器/磁​​盘/网络使用情况以及交换机,看看其中是否有任何问题。如果不是这些问题,您可以寻找使用单独磁盘、将邮箱分离到不同主轴来提高吞吐量的方法,检查是否可以使用硬件 RAID 镜像获得更好的吞吐量(我不确定您可以从磁盘获得多少读取时间的提升),或者可能转移到具有较低延迟和更大缓存的更高性能硬盘。

答案4

因为你正在使用 dovecot,所以我假设你已经在使用它了索引功能? 我不知道有什么东西 (至少是免费的东西) 比 dovecot 更快。

相关内容