お知らせ

amavisd-newの問題解決

spamassassinの日次アップデートスクリプトがエラーを送ってくるようになったので、その原因を調査して解決しました。

spamassassinは迷惑メール定義ファイルを持ち、迷惑メールをサーバー側で削除してくれるプログラムです。

sa-update.cronを日次処理で実行させると、cronがエラーのメールを送ってきます。

タイトルは

/usr/share/spamassassin/sa-update.cron 2>&1 | tee -a /var/log/sa-update.log

内容は

The amavisd daemon is apparently not running, no PID file /var/run/amavisd/amavisd.pid

という風になっています。

amavisdはamavisd-newというサーバー側のウィルスメールスキャナーで、spamassassinと連動して動作しています。

このエラーメッセージを見ると、amavisdが起動していないのかな?と考えます。

サーバーにログインして、

[bash]
service amavisd status
[/bash]

としてみて、停止しているかどうかを確認してみます。

結果は

amavisd (pid xxxxx xxxxx xxxx) is running…

となって、プロセスは動作しているようです。

では再起動させようとして、

[bash]
service amavisd restart
[/bash]

としてみると、

amavisd を停止中: The amavisd daemon is apparently not running, no PID file /var/run/amavisd/amavisd.pid

amavisd を起動中: [  OK  ]

同じエラーが出ます。

[bash]
ls /var/run/amavisd/
[/bash]

してもamavisd.pidが確かにありません。

設定ファイル

/etc/amavisd/amavisd.conf

には

$pid_file = “/var/run/amavisd/amavisd.pid”;

とあります。

この辺を検索してみると、

$pid_file = “$MYHOME/var/amavisd.pid”

という記述もあるので、もしかしたら、と/var/spool/amavisd/var/を確かめるとamavisd.pidはありました。

DaemonをStopするのにも、別のところのpidファイルを探しに行っていたようなので、一度Service amavisd statusで表示されたプロセスをkillしてみます。

そして再度起動、さらに再起動してみます。

[bash]
service amavisd restart
[/bash]

amavisd を停止中: [  OK  ]

amavisd を起動中: [  OK  ]

というわけで、うまくいきました。

[bash]
ls /var/run/amavisd/
[/bash]

すると

amavisd.pid

があることが確認できます。