【 Dovecot 】「Maximum number of connections from user+IP exceeded 」解決方法【エラー対策】
目次
皆様こんにちは。
夜の外食を楽しむために昼食を抜きがちな、システムソリューション部所属の なか です。
メールサーバーに電子メールクライアントツール( Thunderbird )で接続していた際に、エラーが発生し切断される事象が発生(=接続が不安定になる)
サーバー側のログを見ると、 Dovecot に関するエラーログで「 Maximum number of connections from user+IP exceeded 」と出力されている事があります。
今回は、 Dovecot のエラーである「 Maximum number of connections from user+IP exceeded 」への解決及び対策方法を記載します。
エラー想定環境
■メールサーバー:OS
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 側のエラー
接続エラー
Connection timed out: no futher infomartion
メールサーバー側のログ確認方法
$ less /var/log/maillog Oct 01 19:00:00 example-host dovecot[xxxx]: imap-login: Disconnected: Maximum number of connections from user+IP exceeded (mail_max_userip_connections=10): user=<メールアドレス>, method=PLAIN, rip=xxx.xxx.xxx.xxx, lip=xxx.xxx.xxx.xxx, TLS, session=<xxxxx>
エラー原因
ログ内容を分割し、そこに解説を加えてみました。
ログ文面 | 解説 |
Oct 01 19:00:00 example-host dovecot[xxxx]: | 発生日時・ホスト名・エラー元( dovecot ) |
imap-login: Disconnected: | 事象の説明: IMAP のログインが切断されました。 |
Maximum number of connections from user+IP exceeded | エラー文面翻訳:ユーザー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(現在の設定値・IMAPでのデフォルト値)」が最大値として設定されている事を示しています。
この値(10)を超える「同一IPによる同じユーザーへの接続」が行われたのが原因となり、エラーとなって既存の接続が切断されてしまった様子です。
解決方法
今回のケースでは IMAP接続のため、 Dovecot の IMAP 用 の conf である 20-imap.conf を編集します。
当該パラメータ「 mail_max_userip_connections 」の数値を、想定接続数を超える値に修正 or 追記で対応します。
その後、 Dovecot の 設定再読み込み ( Reload )を行い、パラメータの更新を反映させる事で筆者の場合は解決しました。
■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* ※出力確認
TIps : 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 が読み込まれています。
読み込み対象は「*.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 行って反映させます。
実行前後で status を使って状態に問題がないかは確認しています。
systemctl status dovecot systemctl reload dovecot systemctl status dovecot
■5.接続確認
電子メールクライアントツール( Thunderbard )にて、接続を行ってください。
一定時間経過してもエラーが出ずに安定して接続ができれば解消された物と思われます。
■完了
以上で、Dovecotの「Maximum number of connections from user+IP exceeded 」に対する対応作業は完了となります。
事前に対策する場合
また、現在エラーが出ていない状況であっても、原因となる「1IPによる1ユーザーでの同時接続数」が設定値より大きくなる事が予想される場合。
事前に大きめの値に設定することで、エラーを発生させないように対策しておくと良いでしょう。
事前対策の際に別途他のパラメータを調整する必要はなく、解決方法と同様の設定で問題ありません。
他にも1つのメールアドレスをシステム側の通知等で利用する環境であれば、恐らく同時接続は増えていく思われます。
サーバーの構築の際には、最初から少し大きめの値に変更した方が良いでしょう。
最後に
「ログを見て、パラメータを確認して、対応する」という基本事項な内容ですが、記事を書くことで改めてその大事さを感じました。
エラー自体はシンプルな物かと思いますが、メールサーバー利用者に影響が出ているため焦ってしまいがちな状況です。
状況に関しての情報を確認・調査していけば、短時間で対応できるケースなので異常時こそ冷静でありたいものです。
この記事を読んだ方に、多少でも役に立つ知識・情報となれれば幸いです。
ここまで読んで頂きありがとうございました。
参考情報
Authentication | Dovecot 公式ドキュメント
https://doc.dovecot.org/2.3/configuration_manual/authentication/