OS再起動後にPostfixがエラーでメール送受信できなくなる時の覚え書き

我が家のCentOS + Postfix + SpamAssassinで運用しているSMTPサーバーが、OS再起動後にエラーを出してクライアントからの送信や外部からのメール受け取りができなくなる現象が発生していました。原因究明は簡単で/var/log/maillogをみると、迷惑メールフィルタSpamAssassinが使用する/var/run/spamass.sockにパーミッションがないせいだとわかります。このファイルのオーナーをpostfixにしてやれば解決します。実はもうずっと前からこの現象が起きてたのですが、OSを再起動する機会自体が少ないので、都度手動で対応していました。

ですが最近の計画停電で発生頻度があがってきたので、まじめに対応をしようと。

で、このファイルを作成するのが/etc/init.d/spamass-milterです。このファイルの中に下記のようなブロックがあります。

start() {
        echo -n $"Starting $desc ($prog): "
        daemon $prog -p $SOCKET -f $EXTRA_FLAGS
        RETVAL=$?
        [ ! -s $SOCKET ] || sleep 30
        chown postfix $SOCKET
        echo
        [ $RETVAL -eq 0 ] && touch /var/lock/subsys/$prog
        return $RETVAL
}

ちゃんと6行目で同じことしてるんですね。ただタイミングが早くて実際にこのファイルが作られる前に実行されてしまい、結果としてオーナー変更ができてなかったっぽいです。直前の行にあるsleepコマンドによる待ち時間を長めにとってみたところ解決できたっぽいです。ちなみに確か最初は5だったんですが、10にしてもダメでした。どれくらいの時間が適切かはお使いの環境によると思います。

OS再起動後、/var/run/spamass.sockのオーナーが最初からpostfixになっていれば成功です。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)