目次
とてもお安く使えるさくらのレンタルサーバ、使っている企業もきっと多いことと思います。 この記事では、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
のような書き方ができません。