[大阪/横滨/德岛] 寻找基础设施/服务器端工程师!

[大阪/横滨/德岛] 寻找基础设施/服务器端工程师!

【超过500家企业部署】AWS搭建、运维、监控服务

【超过500家企业部署】AWS搭建、运维、监控服务

【CentOS的后继者】AlmaLinux OS服务器搭建/迁移服务

【CentOS的后继者】AlmaLinux OS服务器搭建/迁移服务

[仅适用于 WordPress] 云服务器“Web Speed”

[仅适用于 WordPress] 云服务器“Web Speed”

[便宜]网站安全自动诊断“快速扫描仪”

[便宜]网站安全自动诊断“快速扫描仪”

[预约系统开发] EDISONE定制开发服务

[预约系统开发] EDISONE定制开发服务

[注册100个URL 0日元] 网站监控服务“Appmill”

[注册100个URL 0日元] 网站监控服务“Appmill”

【兼容200多个国家】全球eSIM“超越SIM”

【兼容200多个国家】全球eSIM“超越SIM”

[如果您在中国旅行、出差或驻扎]中国SIM服务“Choco SIM”

[如果您在中国旅行、出差或驻扎]中国SIM服务“Choco SIM”

【全球专属服务】Beyond北美及中国MSP

【全球专属服务】Beyond北美及中国MSP

[YouTube]超越官方频道“美由丸频道”

[YouTube]超越官方频道“美由丸频道”

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

大家好。
我是 Naka,是系统解决方案部门的一名成员,为了享受晚上外出就餐的乐趣,我倾向于不吃午餐。

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

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

这次,超出用户+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环境)

预期的错误情况

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

这种情况直接影响到邮件服务器用户被断线,所以我们需要立即采取行动。

■作者确认的Thunderbard端错误

连接错误
连接超时:没有进一步的信息

如何在邮件服务器端查看日志

$ less /var/log/maillog Oct 01 19:00:00 example-host dovecot[xxxx]: imap-login: 已断开连接: 超出用户+IP 的最大连接数 (mail_max_userip_connections=10): user=<电子邮件地址> 、方法=PLAIN、rip=xxx.xxx.xxx.xxx、lip=xxx.xxx.xxx.xxx、TLS、会话=<xxxxx>

错误原因

我对日志内容进行了划分并添加了解释。

日志文本 解释
10 月 1 日 19:00:00 示例主机 dovecot[xxxx]: 发生日期和时间、主机名、错误源(dovecot)
imap 登录:已断开连接: 事件描述:IMAP登录已断开。
用户+IP 超过最大连接数 错误文本翻译:超过用户 IP 的最大连接数
(mail_max_userip_connections=10):  (当前配置参数及其与错误相关的值)
来自同一IP地址的同一用户允许的最大同时连接数
用户=<电子邮件地址>、方法=PLAIN、rip=xxx.xxx.xxx.xxx、lip=xxx.xxx.xxx.xxx、TLS、会话=<xxxxx> 断开连接对象的用户信息(电子邮件地址)和连接信息(IP等)

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

日志内容为``登录被断开,因为超出了用户IP到目标电子邮件地址的最大连接数。''

接下来
是相关参数“ (mail_max_userip_connections=10):“同一用户从同一IP地址允许的最大同时连接数”,目前最大值设置为“ 10

“使用相同 IP 与同一用户的连接”超过此值 (10) 会导致错误,并且现有连接会断开。

解决方案

在本例中,对于 IMAP 连接,编辑 20-imap.conf,它是 Dovecot 的 IMAP conf。

更正参数“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.`日期 +%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。

读取的目标是符合条件的“*.conf”,因此如果是当前备份且末尾有日期,则不会读取。

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

在作者的环境中,默认值(10)被写入并应用,并注释掉。
因此,通过修改或添加来设置新的值。

这次,我添加了设置“50”,以便您可以看到与默认值的差异。

$ sudo vi /etc/dovecot/conf.d/20-imap.conf ~省略~ 协议 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.`日期 +%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/

如果您觉得这篇文章有帮助,请点赞!
3
加载中...
3 票,平均:1.00 / 13
165
X Facebook 哈特纳书签 口袋
[2025.6.30 Amazon Linux 2 支持结束] Amazon Linux 服务器迁移解决方案

[2025.6.30 Amazon Linux 2 支持结束] Amazon Linux 服务器迁移解决方案

写这篇文章的人

关于作者

里面

2022 年加入 Beyond 职业生涯 属于
系统解决方案部门
LPIC-3 我有 304 和 AWS SAA 我的
常规饮料只有三种选择:牛奶、可乐和红茶。