2012年12月13日木曜日

crontabでMAILTO='' が有効にならない

ローカル用にsendmailを設定してもこんなエラーが。
failed parsing crontab for user hoge: MAILTO='' 書き方がおかしいのかとか、mail関連を入れてからcronを再起動すればいいのかと試したけど何をやってもだめだし、MAILTO=rootとしてもメールは自分宛に届く。

調べたらよく見かける(と思う)cronはVixie cronというcronで我がslackwareのcronはdcronとcronにも種類があることが分かった。
(確かにslackwareのcronはパッケージ名がdcron)
そしてdcronはMAILTOやSHELLなんて書いて制御はできないことが分かった。
メールを出さないようにするには出力自体を制御するしかないみたい。

何も出さない場合 > /dev/null 2>&1
エラーだけメールに 1> /dev/null
メールは出さずログに出力 > /var/log/origin.lo 2>&1) > /dev/null
UNIXアカウント以外にメールを送信するにはパイプで渡すしかないのか?

参考
http://www.gentoo.org/doc/ja/cron-guide.xml
http://landisk.kororo.jp/diary/30_cron.php

最低限のsendmail

実はcrontabがエラーを吐いてちゃんと動いていないことに気づく。
どうもメール配送のプログラムが入っていないのが理由のようだ。

今のところ外部とやり取りする予定はないので、CDから
d/m4-1.4.16-x86_64-1.txz
n/cyrus-sasl-2.1.23-x86_64-4.txz
n/mailx-12.5-x86_64-1.txz
n/sendmail-8.14.5-x86_64-3.txz
n/sendmail-cf-8.14.5-noarch-3.txz
n/procmail-3.22-x86_64-2.txz
を入れる。

後は以下のコマンドでとりあえず動いた模様。
cd /usr/share/sendmail/cf/cf
sh Build sendmail-slackware.mc
cp sendmail-slackware.cf /etc/mail/sendmail.cf
cp submit.cf /etc/mail/
chmod +x /etc/rc.d/rc.sendmail
/etc/rc.d/rc.sendmail start

起動した瞬間溜まっていた自分宛のメールが一気に送られてくる。
mailコマンドでUNIXアカウントに送信できることも確認。