Bagaimana cara mengubah bidang "Dari:" untuk email dari Cron?

Jawaban:

13

Saya tidak berpikir Anda dapat mengubah alamat FROM, (seseorang harus menambahkan opsi MAILFROM).

Anda dapat melakukan sesuatu seperti ini untuk mencapai hasil yang serupa:

* * * * * /path/to/script 2>&1 | mail -s "Output of /path/to/script" [email protected] -- -r "[email protected]" -F"Full Name of sender"

Semua output disalurkan ke perintah mail sehingga variabel MAILTO tidak digunakan sama sekali.

Alamat to perlu diatur tetapi Anda mungkin dapat menggunakan variabel $ MAILTO. The - mengatur sisa opsi menjadi opsi sendmail sehingga Anda dapat menggunakan opsi -r dan dan -F.

-s adalah subjeknya

-r adalah alamat balasan

-F adalah nama lengkap pengirim (membuatnya terlihat bagus di klien email)

Richard Holloway
sumber
serverfault.com/a/437319/30697 mungkin seharusnya menjadi jawaban yang Diterima.
lkraav
34

Versi modern dari cron menerima "MAILFROM = ..." dalam format crontab. Saya sarankan Anda mencoba "man 5 crontab". Jika menyebutkan MAILFROM, versi Anda harus mendukungnya. Ungkapan yang harus dicari adalah menjelang akhir paragraf yang membahas MAILTO, dan harus seperti ini:

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

Jon Green
sumber
6
Di mana "modern" artinya apa? Ini tidak didukung oleh versi terbaru dari cron di Debian tidak stabil (3.0pl1-124) dari apa yang dapat saya lihat di changelog atau dokumentasi.
Flimzy
Terima kasih, ini berhasil untuk saya di Archlinux. Ada banyak rasa cron yang berbeda. ISC Debian adalah dari tahun 2004, jadi memperluas definisi "modern", tetapi tanpa info tentang sistem apa yang digunakan - sulit untuk memberikan detail itu!
RuiDC
1
Sayangnya, cron Ubuntu (setidaknya pada 14,04 LTS) tidak menyebutkan MAILFROMdi man 5 crontab.
Arto Bendiken
4
Anda dapat menginstal cronieuntuk menggantikan crondi Debian / Ubuntu. Ta-daa: MAILFROMada:
Andreas Klöckner
1
cronie tidak ada di Ubuntu 16.04
alex k
7

/ etc / mailname berisi bagian nama domain dari alamat FROM. Jika / etc / mailname berisi 'somecompany.com' maka cron yang menjalankan root akan memiliki pengirim sebagai [email protected]

pengguna171601
sumber
2
Beberapa info di sini: wiki.debian.org/EtcMailName - tidak mengatakan apakah nullmailer menggunakannya. Saya menggunakan sendmail dan sepertinya tidak berhasil.
Zitrax
5

Anda dapat mengatur nullmailer dari alamat melalui variabel lingkungan atau baris perintah. Argumen baris perintah adalah -fdan -Funtuk masing-masing alamat pengirim dan nama lengkap.

Biasanya Anda dapat mengatur variabel lingkungan di crontab.

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

5 0 * * * /usr/local/bin/daily.sh
Lachlan Roche
sumber
Dia bertanya tentang FROM: not TO:
Kimvais
Hm, ini tidak berhasil karena alasan yang tidak diketahui.
Alexander Artemenko
3

Bagi saya, cara termudah untuk mengubah alamat dari pada suatu sistem, adalah membuat ~/.mailrcfile dengan konten seperti ini:

set name="My Full Name"
set from="[email protected]"

Salah satu mailperintah yang dijalankan sebagai pengguna saya, sekarang gunakan pengaturan ini.

Niels de Vos
sumber
0

Lihat pertanyaan ini jika menggunakan Exim:

exim: Tulis ulang "Dari" tajuk ke amplop "DARI"

Seharusnya mengatur "Dari" alamat ke pemilik cronjob. Anda dapat menggantinya $header_from:dengan alamat khusus Anda jika Anda ingin mengkodekannya ke sesuatu yang lain.

Vladimir Panteleev
sumber
0

Alternatif sederhana lain adalah dengan menggunakan mutt,

  • buat .muttrc di direktori home pengguna yang menjalankan cron dengan yang berikut ini

    set realname = "Joe User" set dari = "user @ host" set use_from = yes

  • Jalankan skrip dengan perintah mutt di dalamnya atau pipa perintah cron ke mutt dari untuk mengirim email.

Sebelum mutt mengirim dan mengirim email, ini akan mengatur header Dari dari file .muttrc.

Chida
sumber
0

Saya harus berubah /etc/mail/sendmail.cfdan /etc/mail/sendmail.mc, karena /etc/mailnametidak digunakan. Namun itu hanya mengubah dari domain, bukan pengguna.

Rudie
sumber
0

Berikut beberapa hal yang dapat Anda terapkan untuk mengubah domain pengirim Anda:

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

itu dikirimkan dari pengguna @ domain - pengguna adalah nama login yang dijalankan oleh cron - jadi Anda harus membuat pengguna 'saya' - dan menjalankan pekerjaan cron sebagai pengguna itu.

Kemudian untuk mengubah domain, ada beberapa kemungkinan berbeda - bisa jadi Anda perlu mengubah entri file hosts (atau, seperti di komputer saya, ketika saya mengonfigurasi ini - kotak ubuntu) - ubah / etc / mailname - untuk menjadi domain yang Anda inginkan.

Kem Mason
sumber
1
Ini sebenarnya tidak benar - setidaknya tidak dalam banyak kasus. Di sistem saya, misalnya, hanya dikirim dari 'pengguna', bukan 'pengguna @ domain'. MTA bertanggung jawab untuk menambahkan nama domain lokal. Ini penting dalam beberapa kasus (seperti milik saya) di mana MTA saya (karena alasan yang terlalu rumit dan membosankan untuk dijelaskan) tidak menambahkan nama domain.
Flimzy