procmail から起動される shell を変更する

ウチのサーバでは swatch でリアルタイムにログを監視しているので、変なログが一気に流れて大量のメールに見舞われることが偶にある。

で、その時の受信ホストの負荷が妙に高いのが気にはなっていたのだが、たまたまそのタイミングに端末に居合わせたので top を叩いてみたら…うひゃー zsh がいっぱい。

つまりはこういうことらしい。

  1. そのホストでは受信メールの振り分けに procmail を使っている。
  2. ~/.procmailrc ではなんかいろいろ凝ったことがしてある。
  3. 当然 shell が呼ばれるところも沢山ある。
  4. そんで zsh が立ち上がる。
  5. 大量のメールが来ると重くなる。

なるほど納得。


…ってちょっとまてい。だからなんで zsh なのかと。俺はずっと /bin/sh で慎しく動いてるもんだと思ってたのにー。

そこで man procmail してみると

/etc/passwd 受取人の LOGNAME, HOME, SHELL の各変数のデフォルトを設定する。
(中略)
SHELL は現在の受取人のシェルと同じになるため、 procmail でシェルを起動する必要がある場合は、最初にこの変数を何らかの無難な値に設定しておくとよい。

なるほどね、わざわざ /etc/passwd から引っぱってきてくれてる訳ですか。親切にありがとう、今迄知らずに使ってたよ… orz

教訓

  • ~/.procmailrc には SHELL=/bin/sh と書いておこう
  • man はちゃんと読もう
  • ホストは労わろう