Table of Contents
とてもお安く使えるさくらのレンタルサーバ
、使っている企業もきっと多いことと思います。 この記事では、IMAP接続が多くて困っているというサーバ管理者の方向けに、 IMAP接続を切る方法を紹介します。
さくらレンタルサーバとIMAP
さくらのレンタルサーバはメールサーバとしても使うことができ、 POP3 でも IMAP でも接続できます。 しかし、 IMAP の接続で推奨されている接続数上限は 10 です(これはさくらインターネット
に確認しました)。
利用者が自由に IMAP で接続するようになり、 接続数が 20 にもなってくると、 メール配送に遅延が生じたりします。
しかしさくらインターネットでは、 IMAP を無効化するような設定はできないので、 自分でスクリプトを書いて対処します。 (下にも書きましたが カゴヤのレンタルサーバー の 専用メールサーバープラン なら IMAP の無効化が可能です。)
IMAPを定期的に切る設定
CRON でスクリプトを実行し、 プロセスを TERMINATE していきます。
スクリプトファイルの作成
プロセスをTERMINATEするスクリプトを記述します。 さくらのレンタルサーバでは、あまりに長時間動いている処理は停止させられる場合もあるので、 1時間動いて終了する処理にします。
次のスクリプトをサーバ内で作成します。 さくらのレンタルサーバのデフォルトのシェルが csh なので、 csh で書いています。
|
1 2 3 4 5 6 |
set T=`expr 3600 / $1` foreach i ( `seq $T` ) ps -efA | grep imapd | grep -v grep | sed 's/^ *//' | cut -d' ' -f 1 | xargs kill sleep $1 end |
このスクリプトは引数を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 のような書き方ができません。

