Logwatchがエラーになる
2、3日前から Logwatch がエラーになっていて、しばらく様子を見ていれば復活するかと思ったんですが一向に直る気配がないので調べてみました。
エラーの内容としてはこんな感じ。
sendmail: warning: premature end-of-input on /usr/sbin/postdrop -r while reading input attribute name
sendmail: fatal: root(0): unable to execute /usr/sbin/postdrop -r: Success
どうやら sendmail がこけてるみたい。
この手のエラーが突然起こる時には、必ず前後に何か変更したはず!
っと言う事で、このエラーが発生した日に何か変更を加えていないかを見てみました。
そうすると。。。
yum で色々なパッケージをアップデートしていたことが発覚。
しかも、完全に怪しい奴らがいました。
selinux-policy.noarch 2.4.6-255.el5_4.3 updates
selinux-policy-devel.noarch 2.4.6-255.el5_4.3 updates
selinux-policy-targeted.noarch 2.4.6-255.el5_4.3 updates
SELinux のポリシーがアップデートされてる。。。
っと言う事で、sealert を使っていつもの様にエラーを確認し、アクセス許可を発行しようとしたんですが・・・
該当するエラーがない。。。
なので、何でエラーになっているのかも不明。。。
っと言う感じでお手上げ状態だったのですが、何と policy 自体のバグのようです。
Bug 553277 - regression in selinux-policy-2.4.6-255.el5_4.3 breaks postfix /usr/sbin/sendmail interface
近日中に Fix されたバージョンがリリースされそうです。
Bug 553492 - New selinux packages broke Postfix
が、CentOSに反映されるのはいつかな?
早くしてほしい。
しばらく様子をみて、それでもダメならSELinuxを切るしかないか。。。
Bug 553492 に書いてある方法でも対応が可能なようなので紹介します。
対処法の詳細は Bug 553492 を参照して欲しいのですが、だいたい以下のような感じです。
- 適当なワークフォルダに mypostfix.te を以下の内容で作成します。
policy_module(mypostfix, 1.0)
gen_require(`
type sendmail_t;
type postfix_postdrop_t;
')allow postfix_postdrop_t sendmail_t:unix_stream_socket { getattr read write
ioctl };
- 以下のコマンドを実行します。
# make -f /usr/share/selinux/devel/Makefile
# semodule -i mypostfix.pp
これで、Logwatch が正しく動く様になりました。
コメント
音沙汰
私も同じ問題でちょっと苦労しました。
当方、CentOS 5.4 ですが、
記事内にある
Bug 553492 - New selinux packages broke Postfix
のリンク先のコメントにある方法で問題解決できましたので、一度試してみてはいかがでしょう。
(selinux-policy-develの追加インストールが必要でしたが。)
道草から音沙汰への返信
> 音沙汰さん
完全に見落としていました・・・
書いてありましたね、対処法が・・・
本文もアップデートさせて頂きました。
ご指摘、ありがとうございました!!