วิธีการส่งออกจาก cronjob ไปยังที่อยู่อีเมลหลายที่อยู่?


55

ในตอนต้นของไฟล์ crontab คุณสามารถใช้MAILTOคำสั่งเพื่อระบุว่าคุณต้องการให้ส่งออกเป็นอีเมลไปยังที่อยู่อีเมล ฉันต้องการส่งออกไปยังที่อยู่หลายแห่ง เป็นไปได้ (และวิธี) ในการระบุหลายที่อยู่?

คำตอบ:


72

มันอาจแตกต่างกันไปขึ้นอยู่กับแพคเกจ cron daemon ที่คุณใช้ แต่มาจาก manpage ของ Vixie Cron บน Ubuntu Hardy:

หาก MAILTO ถูกกำหนด (และไม่ว่าง) เมลจะถูกส่งไปยังผู้ใช้ที่มีชื่อ อาจใช้ MAILTO เพื่อส่งเมลโดยตรงไปยังผู้รับหลายคนโดยแยกผู้ใช้ด้วยเครื่องหมายจุลภาค หาก MAILTO ถูกกำหนด แต่ว่างเปล่า (MAILTO = "") จะไม่มีการส่งจดหมายใด ๆ มิฉะนั้นเมลจะถูกส่งไปยังเจ้าของ crontab

หากคุณไม่ได้ใช้ Vixie Cron หรือไม่แน่ใจลองหน้าคู่มือสำหรับไฟล์ crontab: man 5 crontab

ตัวอย่าง

MAILTO="user.one@domain.one,user.two@domain.two"

12
สิ่งหนึ่งที่ควรทราบ - การใช้งานเพียงเครื่องหมายจุลภาคระหว่างที่อยู่ อย่าใช้ช่องว่างเช่นกัน cron จะบันทึกที่อยู่ (อาจเป็น / var / log / cron หรือ / var / log / daemon) เป็น "UNSAFE" และจะปฏิเสธที่จะส่งไปยังรายการที่อยู่นั้น
David Gardner

1
เมื่อแยกที่อยู่ด้วยช่องว่างแทนเครื่องหมายจุลภาคมันเกิดขึ้นกับฉันที่cronส่งอีเมลไปยังที่อยู่แรกเท่านั้น (และcrontabไม่ได้บ่นเมื่อบันทึกการเปลี่ยนแปลงซึ่งเป็นความอัปยศ ) มีข้อผิดพลาดใน syslog ( (CRON) error (bad mailto)) แต่ไม่มีใครสังเกต ...
Tobias

9

เพื่อเป็นทางเลือกของคำตอบข้างต้นคุณสามารถส่งไปยังที่อยู่เดียวซึ่งเป็นกลุ่มจดหมาย วิธีนี้ใช้งานได้ดีโดยเฉพาะถ้าคุณจัดการเซิร์ฟเวอร์หลายเครื่องเนื่องจากง่ายต่อการจัดการที่อยู่ในกลุ่มบนเซิร์ฟเวอร์อีเมลจากนั้นอยู่ใน crontab ของแต่ละเซิร์ฟเวอร์


IMHO นี่คือคำตอบที่ถูก ใครต้องการที่จะรักษารายชื่อที่อยู่อีเมลใน crontabs ต่างๆ?
Satanicpuppy

ฉันสร้างรายการง่าย ๆ : 1. ในฐานะที่เป็น root ให้เพิ่ม "ผู้รับเสมือน" ไปยัง/etc/aliasesโดยเพิ่มบรรทัดดังนี้: cron-listeners: fred@example.com, george@example.com2. ใน crontab ให้ตั้งค่าMAILTO=cron-listenersหากคุณไม่มีการเข้าถึงรูตคุณสามารถลองใช้.forwardวิธีการแทนได้
joeytwiddle

4

ทางออกหนึ่งอาจเป็น.forwardไฟล์ในบัญชีผู้ใช้นั้นซึ่งส่งจดหมายไปยังที่อยู่ที่เหมาะสม


1
+1. ไปข้างหน้าไฟล์เป็นวิธีที่จะไป
sleske

0

คำตอบที่ดีที่สุดคือตรวจสอบ man page ของคุณสำหรับรุ่นปัจจุบันของ distro cron / crontab เพื่อดูว่ามีบางอย่างที่สามารถทำได้ด้วยพารามิเตอร์ MAILTO หรือระบุที่อยู่อีเมลที่จะส่งต่อจดหมายไปยังที่อยู่หลายแห่งสำหรับคุณ


0

เพิ่ม,หลังจากแต่ละอีเมลเช่น:MAILTO="some.user1@example.com,some.user2@example.com"


3
ในเอกสารประกอบอีเมลจะถูกคั่นด้วยเครื่องหมายจุลภาคคุณกำลังใช้เครื่องหมายอัฒภาคที่นี่ คุณแน่ใจหรือว่าไวยากรณ์นี้ใช้งานได้?
ทางกายภาพ

1
@MichaelHampton the ;ไม่ทำงาน
030

@ อัลเฟรดฉันรู้ดีว่า ดังนั้นคนอื่นที่แสดงความคิดเห็นคือ!
Michael Hampton

1
@kasperd เนื่องจากไม่เหมาะสมที่จะเปลี่ยนความหมายของโพสต์ของผู้อื่น สำหรับโปสเตอร์เท่านั้นและจนถึงตอนนี้เขาเลือกที่จะไม่แก้ไขมัน คำตอบที่ไม่ถูกต้องควรถูกลดระดับและแสดงความคิดเห็นแทน
Michael Hampton

1
แก้ไขโพสต์ของฉัน ไม่ทราบว่ามันทำงานอย่างไรในปี 2010 ในฐานะ @ThatGraemeGuy ในโพสต์ด้านบน ขึ้นอยู่กับแพ็คเกจ Cron
dannyb2100
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.