cron ใช้จดหมายอะไรในการส่งจดหมาย


11

ฉันกำลังพยายามที่จะแก้ไขปัญหาที่ cron ไม่ได้ส่งจดหมายบนกล่อง Centos 6 ที่ฉันไม่ได้กำหนดค่า ฉันจะทราบได้อย่างไรว่าจดหมาย cron ใดที่ใช้ส่งจดหมาย หน้าคน crontab มีสิ่งนี้ที่จะพูดในส่วน:

นอกจาก LOGNAME, HOME และ SHELL, cron (8) จะดู MAILTO หากมีเหตุผลใด ๆ ในการส่งเมลเนื่องจากการรันคำสั่งใน crontab "this" หาก MAILTO ถูกกำหนด (และไม่ว่าง) เมลจะถูกส่งไปยังผู้ใช้ที่ตั้งชื่อ หาก MAILTO ถูกกำหนด แต่ว่างเปล่า (MAILTO = "") จะไม่มีการส่งจดหมายใด ๆ มิฉะนั้นเมลจะถูกส่งไปยังเจ้าของ crontab ตัวเลือกนี้มีประโยชน์หากคุณตัดสินใจเลือก / bin / mail แทน / usr / lib / sendmail เป็น mailer ของคุณเมื่อคุณติดตั้ง cron - / bin / mail ไม่ได้ใช้นามแฝงและ UUCP มักจะไม่อ่านจดหมาย

ส่วนที่มีดอกจันเป็นส่วนที่ฉันสงสัยว่า "เอาล่ะมันเป็น sendmail หรือเมลเหรอ?"

คำตอบ:


3

Google ด่วนแสดงให้ฉันเห็นว่า/etc/sysconfig/crondเป็นไฟล์ที่กำหนดว่าจดหมายใดที่ cron ใช้


เห็นได้ชัดว่า Google-fu ของฉันแย่มากเพราะฉันใช้เวลาพอสมควรในการค้นหาสิ่งนี้ ขอบคุณ
cbmanica

23

ตามหน้า man สำหรับ cron (8) (daemon ที่ส่งข้อความ):

   -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
MAILTO=example@example.com
*/5 * * * * echo "testing"

ตอนนี้หา ID กระบวนการสำหรับ 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

แนบกับกระบวนการ crond ด้วย strace ค้นหากิจกรรมที่เกี่ยวข้องกับกระบวนการ ตามที่ strace เขียนไปยัง stderr ฉันได้เปลี่ยนเส้นทางไปยัง stdout และ grepped สำหรับ '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

ใช่มันเป็น sendmail


4
ในระบบที่คุณทดสอบ
mfinni

3
ขวาซึ่งเป็น CentOS ตามแท็กคำถามนี้ในการกำหนดค่าเริ่มต้น
yoonix

2
ฉันรู้ว่าฉันกำลังตีกลองที่เหนื่อยอยู่ที่นี่ แต่มันเป็นพารามิเตอร์ที่กำหนดค่าได้และคำถามเกี่ยวข้องกับระบบที่ผู้ถามไม่ได้ตั้งค่า จดหมายอาจมีการเปลี่ยนแปลงก่อนหน้านี้จากค่าเริ่มต้นสำหรับระบบที่เป็นปัญหา ผู้ถามทราบค่าเริ่มต้น
mfinni

6
ใช่ แต่ในการกำหนดค่าเริ่มต้นไม่มีอะไรอ้างอิงเมลในไฟล์กำหนดค่า (ลบความคิดเห็นเนื้อหาทั้งหมดคือCRONDARGS=) ความจริงที่ว่ามันกำหนดค่าได้คือเหตุผลที่ฉันรวมขั้นตอนในการตรวจสอบด้วยตนเอง
yoonix
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.