我们运行包含 30k 个电子邮件帐户 (Maildir) 的邮件服务器,并使用 Dovecot imap 服务器。我们的 IO 负载很高,尤其是当用户开始搜索大型 IMAP 文件夹时。有什么方法可以阻止按 BODY 搜索?我需要允许按 HEADERS(主题、发件人/收件人)搜索。
我在配置/文档中找不到任何相关内容。
答案1
这是不可能的。IMAP 中的搜索不是可选的,并且没有兼容的服务器可以避免搜索。我知道有人修改了源代码来做到这一点,但通常导致更糟糕的负载因为客户端会回退到批量下载。
Dovecot 有加速搜索的方法。如果可以的话,看看这个。
答案2
这是一个老帖子,但面临同样的问题,想分享我的解决方案。
我为 dovecot 2.2.21 做了这件事,对我来说似乎工作得很好。在 lib-storage/mail-search.c 中,我注释掉了两个 *have_body = true 赋值。到目前为止,除了显然不在邮件正文中搜索之外,没有任何副作用。搜索文本仍将在标题中搜索。如果需要搜索正文(即预期结果),但实际上不想在正文中搜索,而只想在标题中搜索,那么 have_body = true 可以被 have_text = true 替换。
假设您正在重建与当前安装的版本相同的版本,要替换的库是 libdovecot-storage。
附注:我总是建议我的用户使用适当的电子邮件主题,以便进行充分的搜索。即使在正文中搜索,只有一个单词“问题”的主题也没有多大帮助。