วิธีเปลี่ยนฟิลด์“ จาก:” สำหรับอีเมลจาก Cron


34

ฉันใช้ SMTP ระยะไกลผ่าน nullmailer และต้องมีการตั้งค่าจากฟิลด์เป็นชื่อเฉพาะ แต่ cron ตั้งเป็น root@my.sweet.server.com

ฉันจะเปลี่ยนเป็นบางสิ่งบางอย่างเช่น me@ya.ru ได้อย่างไร


Cron Implementation (และ OS) ใดบ้าง
Kimvais

ดูคำถามนี้: serverfault.com/questions/438843/…สำหรับโซลูชันอื่น
robin

คำตอบ:


13

ฉันไม่คิดว่าคุณสามารถเปลี่ยนที่อยู่ FROM ได้ (บางคนควรเพิ่มตัวเลือก MAILFROM)

คุณสามารถทำสิ่งนี้แม้ว่าจะได้ผลลัพธ์ที่คล้ายกัน:

* * * * * /path/to/script 2>&1 | mail -s "Output of /path/to/script" toaddress@example.com -- -r "fromaddress@example.com" -F"Full Name of sender"

เอาต์พุตทั้งหมดถูกไพพ์ไปที่คำสั่ง mail ดังนั้นตัวแปร MAILTO จะไม่ถูกใช้เลย

ที่อยู่จะต้องมีการตั้งค่า แต่คุณอาจจะสามารถใช้ตัวแปร $ MAILTO - ตั้งค่าตัวเลือกที่เหลือให้เป็นตัวเลือก sendmail เพื่อให้คุณสามารถใช้ตัวเลือก -r และ -F

-s เป็นเรื่อง

-r เป็นที่อยู่ตอบกลับ

- F เป็นชื่อเต็มของผู้ส่ง (ทำให้ดูดีในไคลเอนต์อีเมล)


serverfault.com/a/437319/30697น่าจะเป็นคำตอบที่ยอมรับได้
lkraav

34

cron รุ่นทันสมัยยอมรับ "MAILFROM = ... " ในรูปแบบ crontab ฉันแนะนำให้คุณลอง "man 5 crontab" หากมันกล่าวถึง MAILFROM เวอร์ชันของคุณควรสนับสนุน วลีที่มองหาอยู่ตรงท้ายย่อหน้าที่พูดถึง MAILTO และควรเป็นดังนี้:

If MAILFROM is defined (and non-empty), it will be used as the envelope sender address, otherwise, ''root'' will be used.


6
ที่ไหน "ทันสมัย" หมายถึงอะไร เวอร์ชันล่าสุดนี้ไม่รองรับ cron ใน Debian ที่ไม่เสถียร (3.0pl1-124) จากสิ่งที่ฉันเห็นใน changelog หรือเอกสาร
Flimzy

ขอบคุณสิ่งนี้ใช้ได้กับฉันที่ Archlinux มีหลายรสชาติที่แตกต่างกันของ cron ISC ของ Debian มาจากปี 2004 ดังนั้นจึงเพิ่มความหมายของคำว่า "modern" แต่ไม่มีข้อมูลเกี่ยวกับระบบที่ใช้งานอยู่ - ยากที่จะให้รายละเอียดนั้น!
RuiDC

1
แต่น่าเสียดายที่ cron ของ Ubuntu (อย่างน้อย ณ 14.04 LTS) มีการเอ่ยถึงไม่มีในMAILFROM man 5 crontab
Arto Bendiken

4
คุณสามารถติดตั้งcronieเพื่อแทนที่cronบน Debian / Ubuntu Ta-daa: MAILFROMมีอยู่:
Andreas Klöckner

1
cronie ไม่มีอยู่ใน Ubuntu 16.04
alex k

7

/ etc / mailname มีส่วนชื่อโดเมนของที่อยู่ FROM หาก / etc / mailname มี 'somecompany.com' ดังนั้น cron ที่รันสำหรับ root จะมีผู้ส่งเป็น root@somecompany.com


2
ข้อมูลบางอย่างที่นี่: wiki.debian.org/EtcMailName - ไม่ได้บอกว่าถ้า nullmailer ใช้ ฉันใช้ sendmail และดูเหมือนว่าจะใช้งานไม่ได้
Zitrax

5

คุณสามารถตั้งค่า nullmailer จากที่อยู่ผ่านตัวแปรสภาพแวดล้อมหรือบรรทัดคำสั่ง อาร์กิวเมนต์บรรทัดคำสั่งคือ-fและ-Fสำหรับที่อยู่ผู้ส่งและชื่อเต็มตามลำดับ

โดยปกติคุณสามารถตั้งค่าตัวแปรสภาพแวดล้อมใน crontab

NULLMAILER_USER=webmaster
NULLMAILER_HOST=host.example.com
NULLMAILER_NAME="Mr Cron"

5 0 * * * /usr/local/bin/daily.sh

เขาถามเกี่ยวกับจาก: ไม่ถึง:
Kimvais

หืมมันใช้งานไม่ได้ด้วยเหตุผลที่ไม่ทราบสาเหตุ
Alexander Artemenko

3

สำหรับฉันวิธีที่ง่ายที่สุดในการเปลี่ยนจากที่อยู่ในระบบคือการสร้าง~/.mailrcไฟล์ที่มีเนื้อหาเช่นนี้:

set name="My Full Name"
set from="myrealemail@example.com"

mailคำสั่งใด ๆที่เรียกใช้ในฐานะผู้ใช้ของฉันตอนนี้ใช้การตั้งค่าเหล่านี้


0

ดูคำถามนี้ถ้าใช้เอ็กซิม:

ตัวอย่าง: เขียนใหม่ "จาก" ส่วนหัวไปยังซองจดหมาย "FROM"

ควรตั้งค่าที่อยู่ "จาก" เป็นเจ้าของ cronjob คุณสามารถแทนที่$header_from:ด้วยที่อยู่ที่กำหนดเองของคุณหากคุณต้องการกำหนดให้ที่อยู่อีเมลเป็นรหัสอื่น


0

อีกวิธีง่าย ๆ คือใช้ mutt

  • สร้าง. muttrc ในโฮมไดเร็กทอรีของผู้ใช้ที่รัน cron ด้วยสิ่งต่อไปนี้

    set realname = "Joe User" set จาก = "user @ host" set use_from = ใช่

  • รันสคริปต์ด้วยคำสั่ง mutt ในสคริปต์หรือไพพ์คำสั่ง cron เพื่อ mutt จากเพื่อส่งอีเมล

ก่อนที่จะส่ง mutt และอีเมลมันจะตั้งค่าส่วนหัว From จากไฟล์. muttrc


0

ฉันต้องเปลี่ยน/etc/mail/sendmail.cfและ/etc/mail/sendmail.mcเพราะ/etc/mailnameไม่ได้ใช้ แต่เปลี่ยนจากโดเมนไม่ใช่ผู้ใช้


0

ต่อไปนี้คือสิ่งที่คุณสามารถนำไปใช้เพื่อเปลี่ยนโดเมนผู้ส่งของคุณ:

Edit this file: /etc/mailname and change to:
    example.org
sudo postconf -e 'myhostname= example.org'
sudo systemctl restart postfix

-2

มันถูกส่งจากผู้ใช้ @ โดเมน - ผู้ใช้เป็นชื่อเข้าสู่ระบบ cron กำลังทำงานอยู่ - ดังนั้นคุณต้องสร้างผู้ใช้ 'ฉัน' - และเรียกใช้งาน cron ในฐานะผู้ใช้นั้น

จากนั้นการเปลี่ยนโดเมนมีความเป็นไปได้ที่แตกต่างกัน - อาจเป็นได้ว่าคุณต้องเปลี่ยนรายการไฟล์โฮสต์ (หรือบนเครื่องของฉันเมื่อฉันกำหนดค่านี้ - กล่องอูบุนตู) - เปลี่ยน / etc / mailname - เป็นโดเมนที่คุณต้องการให้เป็น


1
สิ่งนี้ไม่เป็นความจริง - อย่างน้อยก็ไม่ใช่ในหลายกรณี ตัวอย่างเช่นในระบบของฉันจะถูกส่งจาก 'ผู้ใช้' ไม่ใช่ 'user @ domain' มันเป็นความรับผิดชอบของ MTA ที่จะเพิ่มชื่อโดเมนท้องถิ่น สิ่งนี้มีความสำคัญในบางกรณี (เช่นของฉัน) ที่ MTA ของฉัน (ด้วยเหตุผลที่ซับซ้อนเกินไปและน่าเบื่อที่จะอธิบาย) ไม่ได้เพิ่มชื่อโดเมน
Flimzy
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.