Mailer apa yang digunakan cron untuk mengirim email?

11

Saya mencoba men-debug masalah dengan cron tidak mengirim email pada kotak Centos 6 yang tidak saya konfigurasikan. Bagaimana saya bisa menentukan cron mailer yang digunakan untuk mengirim email? Halaman manual crontab mengatakan ini, sebagian:

Selain LOGNAME, HOME, dan SHELL, cron (8) akan melihat MAILTO jika ada alasan untuk mengirim email sebagai akibat dari menjalankan perintah di crontab "ini". Jika MAILTO didefinisikan (dan tidak kosong), surat dikirim ke pengguna yang dinamai demikian. Jika MAILTO didefinisikan tetapi kosong (MAILTO = ""), tidak ada email yang akan dikirim. Kalau tidak, surat akan dikirim ke pemilik crontab. Opsi ini berguna jika Anda memutuskan pada / bin / mail alih-alih / usr / lib / sendmail sebagai mailer Anda ketika Anda menginstal cron - / bin / mail tidak melakukan aliasing, dan UUCP biasanya tidak membaca emailnya.

Bagian dengan tanda bintang adalah bagian yang membuat saya bertanya-tanya, "Apakah itu sendmail atau surat?"

cbmanica
sumber

Jawaban:

3

Google cepat menunjukkan kepada saya bahwa itu /etc/sysconfig/crondadalah file yang mendefinisikan mailer apa yang digunakan oleh cron.

mfinni
sumber
Google-fu saya kelihatannya mengerikan karena saya menghabiskan banyak waktu untuk mencari ini. Terima kasih.
cbmanica
23

Menurut halaman manual untuk cron (8) (daemon yang benar-benar mengirim pesan):

   -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.

Itu membuat saya percaya bahwa itu menggunakan sendmail secara default. Mari kita verifikasi dengan strace:

Menyiapkan pekerjaan cron yang akan menghasilkan email:

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

Sekarang cari ID proses untuk crond:

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

Lampirkan ke proses crond dengan strace, mencari aktivitas terkait proses. Ketika strace menulis ke stderr, saya telah mengarahkannya ke stdout dan menerima 'mail':

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

Yap, ini sendmail.

Yoonix
sumber
4
Pada sistem yang Anda uji.
mfinni
3
Benar, yang merupakan CentOS yang ditandai pada pertanyaan ini, dalam konfigurasi standarnya.
yoonix
2
Saya tahu saya memukul-mukul drum yang lelah di sini, tetapi ini adalah parameter yang dapat dikonfigurasi, dan pertanyaannya melibatkan sistem yang tidak diatur oleh penanya. Mailer sebelumnya bisa saja diubah dari default, untuk sistem yang dimaksud. Penanya tahu defaultnya.
mfinni
6
Benar tetapi dalam konfigurasi standarnya, tidak ada referensi surat di file konfigurasi (minus komentar, seluruh konten CRONDARGS=). Fakta bahwa itu dapat dikonfigurasi adalah mengapa saya memasukkan langkah-langkah untuk memverifikasi diri sendiri.
yoonix