Pleskを利用したサーバでメールサーバを構築して運用していたところ、多くのユーザからメールの受信ができない(たまにできる)との声が突然あがってきました。
環境
Parallels Plesk 12.0.18
症状
ユーザが送受信を行うと、Outlook,Thunderbirdなどのメールクライアントで以下のようなエラーが表示されました。
ERROR:
Unable to connect to your IMAP server.
You may have exceeded the maximum number of connections to this server.
Unable to connect to your IMAP server.
You may have exceeded the maximum number of connections to this server.
や
Error reading from network: cause: connection closed by foreign host
サーバのメールログを確認すると、一例として以下のような記述があります。
courier-pop3d: Maximum connection limit reached for ::ffff:10.0.0.1
原因
PleskとCourier-IMAPは、ユーザが同時に大量のセッションをオープンすることがないように、デフォルトで受信接続数を制限しています。
この制限によって、NAT環境内の複数のコンピュータから、Courier-IMAP/Courier-POP3サーバに接続する際に同時のセッションと見なされて影響が発生してしまいます。
解決策
Plesk上での設定
[Home]>[Tools $ Settings]>[Mail Server Settings]
に移動し、[Maximum number of connections per IP address]に適切な値を設定します。
CLI上での設定
この制限を解除して、許可する受信接続の数を引き上げるには、IMAP/POP3の設定ファイルを変更します。
各構成ファイルは以下のパスになります。
IMAP構成ファイル:/etc/courier-imap/imapd
POP3構成ファイル:/etc/courier-imap/pop3d
変更前にバックアップをとります。
[root@test]# cp -a /etc/courier-imap/imapd{,.backup}←imapdのバックアップ作成
[root@test]# cp -a /etc/courier-imap/pop3d{,.backup}←pop3dのバックアップ作成
IMAP用に以下の設定を置き換えます。
[root@test]# sed -i 's/^MAXDAEMONS=40/MAXDAEMONS=80/g' /etc/courier-imap/imapd←最大接続数を40から80に変更 [root@test]# sed -i 's/^MAXPERIP=4/MAXPERIP=40/g' /etc/courier-imap/imapd←同一IPアドレスからの最大接続数を4から40へ変更
POP3用に以下の設定を置き換えます。
[root@test]# sed -i 's/^MAXDAEMONS=40/MAXDAEMONS=80/g' /etc/courier-imap/pop3d←最大接続数を40から80に変更 [root@test]# sed -i 's/^MAXPERIP=4/MAXPERIP=40/g' /etc/courier-imap/pop3d←同一IPアドレスからの最大接続数を4から40へ変更
Courier-IMAP/Courier-POP3サービスを再起動して適用
[root@test]# /etc/init.d/courier-imapd restart [root@test]# /etc/init.d/courier-imaps restart [root@test]# /etc/init.d/courier-pop3d restart

