web-dev-qa-db-ja.com

cronがメールを送信するために使用するメーラーは何ですか?

私が設定していないCentos 6ボックスでcronがメールを送信しない問題をデバッグしようとしています。 cronがメールの送信に使用しているメーラーを判別するにはどうすればよいですか? crontabのmanページには、次のように書かれています。

LOGNAME、HOME、Shellに加えて、cron(8)は、「this」crontabでコマンドを実行した結果、メールを送信する理由がある場合にMAILTOを調べます。 MAILTOが定義されている(空でない)場合、その名前のユーザーにメールが送信されます。 MAILTOが定義されているが空(MAILTO = "")の場合、メールは送信されません。それ以外の場合は、crontabの所有者にメールが送信されます。 このオプションは、cronをインストールするときにメーラーとして/ usr/lib/sendmailではなく/ bin/mailを選択した場合に役立ちます-/ bin/mailはエイリアスを行わず、UUCPは通常は読み取りませんそのメール。

アスタリスクが付いている部分は、「そうですか、sendmailかmailですか?」

11
cbmanica

簡単なGoogleは/etc/sysconfig/crondは、cronが使用するメーラーを定義するファイルです。

3
mfinni

Cron(8)(実際にメッセージを送信するデーモン)のmanページによると:

   -m     This  option  allows you to specify a Shell command string to use for 
          sending cron mail output instead of sendmail(8).  This command must 
          accept a fully formatted mail message (with headers) on stdin and send
          it as a mail message to the recipients specified in the mail headers.

そのため、デフォルトでsendmailを使用していると思います。 straceで確認してみましょう。

メールを生成するcronジョブを設定します。

user@Host1 ~:
$ crontab -e
crontab: installing new crontab
user@Host1 ~:
$ crontab -l
[email protected]
*/5 * * * * echo "testing"

次に、crondのプロセスIDを見つけます。

user@Host1 ~:
$ ps auxww | grep crond
root      9684  0.0  0.0 117280  1296 ?        Ss   Jul22   0:17 crond
user     36344  0.0  0.0 103240   884 pts/2    S+   23:01   0:00 grep crond

Straceを使用してcrondプロセスに接続し、プロセス関連のアクティビティを探します。 straceがstderrに書き込むとき、それをstdoutにリダイレクトし、 'mail'をgreppedしました。

root@Host1 ~:
# strace -fp 9684 -s 1024 -e trace=process 2>&1 | grep mail
[pid 36204] execve("/usr/sbin/sendmail", ["/usr/sbin/sendmail", "-FCronDaemon", "-i", "-odi", "-oem", "-oi", "-t", "-f", "root"], [/* 16 vars */]) = 0
^C

はい、sendmailです。

22
yoonix