さくらレンタルサーバでIMAP接続を切る方法


とてもお安く使えるさくらのレンタルサーバ、使っている企業もきっと多いことと思います。 この記事では、IMAP接続が多くて困っているというサーバ管理者の方向けに、 IMAP接続を切る方法を紹介します。

さくらレンタルサーバとIMAP

さくらのレンタルサーバはメールサーバとしても使うことができ、 POP3 でも IMAP でも接続できます。 しかし、 IMAP の接続で推奨されている接続数上限は 10 です(これはさくらインターネットに確認しました)。

利用者が自由に IMAP で接続するようになり、 接続数が 20 にもなってくると、 メール配送に遅延が生じたりします。

しかしさくらインターネットでは、 IMAP を無効化するような設定はできないので、 自分でスクリプトを書いて対処します。 (下にも書きましたが カゴヤのレンタルサーバー の 専用メールサーバープラン なら IMAP の無効化が可能です。)

IMAPを定期的に切る設定

CRON でスクリプトを実行し、 プロセスを TERMINATE していきます。

スクリプトファイルの作成

プロセスをTERMINATEするスクリプトを記述します。 さくらのレンタルサーバでは、あまりに長時間動いている処理は停止させられる場合もあるので、 1時間動いて終了する処理にします。

次のスクリプトをサーバ内で作成します。 さくらのレンタルサーバのデフォルトのシェルが csh なので、 csh で書いています。

このスクリプトは引数を1つとるようになっています。 引数は何秒おきにプロセスを TERMINATE するかを表しています。 1時間実行するため、 T という変数を使って何回処理を実行するか制御します。

繰り返し回数が決まったら、 foreach を使って指定回数プロセスを処理します。 ps -efA を実行すると IMAP 含めた 全てのプロセスが表示されます。 IMAP のデーモンらしきものが、 /usr/lib/courier-imap/bin/imapd という形で表示されますので、 そのプロセスを imapd で抽出して kill コマンドを実行します。 その後、 sleep で指定秒数待機します。

CRON 設定

さくらのコントロールパネルから CRON の設定をします。

実行コマンドを記述します。 先ほどのスクリプトを、 ホームディレクトリから見て cron/imap_killer.sh に保存したとします。 このとき /bin/csh /home/xxxxx/cron/imap_killer.sh 3 と記述すれば、 3秒毎に IMAP プロセス を TERMINATE する 実行コマンド になります。

そして実行時刻を設定します。 単純に毎時間実行したいのであれば、 時間を * と記述します。 たとえば奇数時間だけ実行したい場合は 時間のところを 1,3,5,7,9,11,13,15,17,19,21,23 と記述します。 さくらのコントロールパネルでは 1-23/2 のような書き方ができません。