[Dovecot] “用户+IP 连接数超过最大值”解决方案 [错误对策]

大家好,
我是系统解决方案部门的Naka,我经常不吃午饭,这样晚上就可以出去吃饭了。

使用电子邮件客户端工具(Thunderbird)连接到邮件服务器时发生错误,连接断开(即连接不稳定)。

如果您查看服务器端日志, 来自用户+IP 的最大连接数已超出  可能会看到与 Dovecot 相关的错误日志,其中显示

Dovecot 错误“ 用户+IP 连接数超过最大值  介绍了如何解决

假定错误环境

■邮件服务器:操作系统
AlmaLinux 9.x

■邮件服务器:中间件
postfix.x86_64 2:3.5.9-24.el9 @appstream
dovecot.x86_64 1:2.3.16-10.el9 @appstream

■客户端连接方式:
IMAP

■ 电子邮件客户端工具
Thunderbird(Windows 环境)

可能出现的错误情况

由于连接错误,电子邮件客户端工具(Thunderbird)与邮件服务器(Postfix/Dovecot)的连接已终止。

这种情况正在产生直接影响,电子邮件服务器用户正在失去连接,因此我们需要迅速采取行动。

■作者已确认 Thunderbard 错误

连接错误:
连接超时:无其他信息

如何查看邮件服务器日志

$ less /var/log/maillog 10月1日 19:00:00 example-host dovecot[xxxx]: imap-login: 已断开连接:用户+IP 连接数超过最大值 (mail_max_userip_connections=10): user=<电子邮件地址>, method=PLAIN, rip=xxx.xxx.xxx.xxx, lip=xxx.xxx.xxx.xxx, TLS, session=<xxxxx>

错误原因

我已将日志内容拆分并添加了说明。

日志文本 评论
10月1日 19:00:00 example-host dovecot[xxxx]: 发生日期和时间、主机名、错误来源(Dovecot)
imap-login:已断开连接: 问题描述:IMAP登录已断开。
用户+IP 连接数超过最大值 错误信息翻译:此用户的 IP 地址已超过最大连接数。
(mail_max_userip_connections=10):  (与错误相关的当前配置参数及其值)
允许同一用户从同一 IP 地址同时建立的最大连接数
user=<电子邮件地址>,method=PLAIN,rip=xxx.xxx.xxx.xxx,lip=xxx.xxx.xxx.xxx,TLS,session=<xxxxx> 已断开连接的用户信息(电子邮件地址)和连接信息(IP 地址等)

关于此错误,服务器端(Dovecot)的日志文本提供了有关情况的详细信息,包括参数。

日志消息显示:“用户 IP 地址到目标电子邮件地址的连接数已超过最大值,因此登录已断开。”

相关参数“ (mail_max_userip_connections=10): 接下来列出的是
允许同一用户从同一 IP 地址建立的最大并发连接数设置指定10最大值设置为

因为“从同一 IP 地址到同一用户的连接数”超过了此值 (10)似乎发生了错误,现有连接已断开,

解决方案

在这种情况下,我们使用的是 IMAP 连接,因此我们将编辑 20-imap.conf,这是 Dovecot 的 IMAP 配置。

更正或增加参数“mail_max_userip_connections”的值,使其超过预期的连接数。

之后,我重新加载了 Dovecot 配置,更新后的参数也生效了,解决了我的问题。

■1.备份20-imap.conf

在进行任何更改之前,请先制作一个带有日期信息的备份。

您有可能不小心保存时删除了所有内容,所以最好保留一份备份以防万一。
(如果只是临时使用,放在 /tmp 目录下就可以了。)

$ sudo cp -p /etc/dovecot/conf.d/20-imap.conf /etc/dovecot/conf.d/20-imap.conf.`date +%Y%m%d` $ ls -l /etc/dovecot/conf.d/20-imap.conf* *检查输出

提示:CentOS-Base.repo.`date +%Y%m%d`

反引号(`)用于将命令结果视为字符串。
在该字符串中,`data` 命令用于显示日期和时间,并指定格式(年、月、日)。

这样很方便,因为无需查看日历即可进行备份,文件名以执行命令时的日期和年份结尾。

旁白:“备份能加载吗?”→“不能加载。”

在 Dovecot 的默认配置中,“!include conf.d/*.conf”设置被写入“/etc/dovecot/dovecot.conf”。

$ less /etc/dovecot/dovecot.conf ~接近末尾~ !include conf.d/*.conf

此设置会加载 conf.d 下每个拆分项的配置文件。

只会读取符合“*.conf”条件的文件,因此不会读取以日期结尾的备份文件。

■2. 修改 dovecot.conf 文件中参数的步骤

在我的环境中,默认值(10)被注释掉了并直接应用。
因此,我通过修改或添加代码来设置新值。

这次,我们增加了一个“50”的设置,以便可以看到与默认值的区别。

$ sudo vi /etc/dovecot/conf.d/20-imap.conf ~省略~ protocol imap { ~省略~ #mail_max_userip_connections = 10 mail_max_userip_connections = 50 *附加说明}

■3. 检查差异

检查编辑后的 ​​20-imap.conf 与备份之间的差异确认添加和修改是否符合预期

$ diff /etc/dovecot/conf.d/20-imap.conf //etc/dovecot/conf.d/20-imap.conf.`date +%Y%m%d`

■4. 向 Dovecot 反射的步骤(重新加载设置)

我将使用 `systemctl reload` 命令来应用更改。
我会在执行前后检查系统状态,以确保系统状态没有问题。

systemctl status dovecot systemctl reload dovecot systemctl status dovecot

■5. 检查连接

请使用您的邮件客户端工具(Thunderbard)连接。
如果一段时间后您能建立稳定连接且无错误,则问题应该已经解决。

■完成

至此,Dovecot 的“来自用户+IP 的最大连接数已超出”错误已解决。

提前采取预防措施

此外,即使当前没有发生错误,但“每个 IP 地址每个用户的并发连接数”预计
,则建议预先设置一个更大的值以防止发生错误

采取预防措施时无需调整任何其他参数;与解决方案方法中的设置相同即可。

如果您使用单个电子邮件地址接收系统通知和其他邮件,则并发连接数可能会增加。
在构建服务器时,最好一开始就设置一个稍大的值。

最后

这是一个基本要点——“查看日志,检查参数,并采取行动”——但写这篇文章让我再次意识到它的重要性。

错误本身可能很简单,但由于它影响到邮件服务器用户,所以很容易引起恐慌。不过,
如果您检查并调查相关信息,这个问题可以很快解决,因此保持冷静至关重要,尤其是在紧急情况下。

我希望这篇文章能为读者提供一些有用的知识和信息。
感谢您读到这里。

参考信息

身份验证 | Dovecot 官方文档
https://doc.dovecot.org/2.3/configuration_manual/authentication/

如果您觉得这篇文章对您有帮助,请点个“赞”!
4
加载中...
4票,平均分:1.00/14
1,550
X Facebook Hatena书签 口袋

这篇文章的作者

关于作者

里面

以中级员工的身份加入 Beyond 公司,
目前在系统解决方案部门工作。
我持有 LPIC-3 304 和 AWS SAA 认证。