Ubah alamat "Dari:" di Unix "mail"

89

Mengirim pesan dari baris perintah Unix menggunakan mail TO_ADDRhasil di email dari $USER@$HOSTNAME. Apakah ada cara untuk mengubah alamat "Dari:" yang disisipkan mail?

Sebagai catatan, saya menggunakan GNU Mailutils 1.1 / 1.2 di Ubuntu (tetapi saya telah melihat perilaku yang sama dengan Fedora dan RHEL).

[EDIT]

$ mail -s Pengujian [email protected]                                                                  
Cc: 
Dari: [email protected]

Menguji
.

hasil

Subjek: Pengujian
Kepada: <[email protected]>
X-Mailer: mail (GNU Mailutils 1.1)
ID-Pesan: <E1KdTJj-00025z-RK @ localhost>
Dari: <chris @ localhost>
Tanggal: Rabu, 10 Sep 2008 13:17:23 -0400

Dari: [email protected]

Menguji

Baris "From: [email protected]" adalah bagian dari badan pesan, bukan bagian dari header.

Chris Conway
sumber
1
Rasa Unix apa ini? dan versi email yang mana? Hanya untuk mengetahui di mana itu tidak berhasil.
Vinko Vrsalovic
Um, hampir semuanya. Siapapun yang menggunakan mailx atau berkeley mail akan melihatnya seperti itu. Jika Anda ingin mempengaruhi header, tulis seluruh header dan kirim dengan rmail atau sendmail secara langsung.
Thomas Kammeyer
Oh, tapi, maaf, saya menjalankan GenToo.
Thomas Kammeyer
Sebagai catatan, saya menggunakan mailx dan contoh karya Chris. Atau itu yang kamu maksud?
Vinko Vrsalovic
Vinko, UN * X versi berapa yang kamu jalankan? Apakah yang Anda maksud dengan "pekerjaan" adalah Anda mendapatkan hasil atau bahwa Anda mendapatkan perilaku yang diinginkan yang akan memenuhi kebutuhannya? Itu tergantung pada tingkat tertentu pada bagaimana pengiriman pesan bekerja pada platform Anda dan apakah klien menambahkan baris kosong sebelum
Thomas Kammeyer

Jawaban:

109

Di versi email saya (Debian linux 4.0), opsi berikut berfungsi untuk mengontrol alamat sumber / balasan

  • yang -a switch, untuk header tambahan untuk menerapkan, memasok Dari: header pada baris perintah yang akan ditambahkan ke header surat keluar
  • yang $ replyto variabel lingkungan menentukan Balasan-To: header

jadi berikut urutannya

export [email protected]
mail -aFrom:[email protected] -s 'Testing'

Hasilnya, di klien email saya, adalah email dari [email protected], yang setiap balasannya akan menjadi default ke [email protected]

NB: Pengguna Mac OS: Anda tidak memiliki -a, tetapi Anda memiliki $ REPLYTO

NB (2): CentOS pengguna, banyak komentator telah menambahkan bahwa Anda perlu menggunakan -rtidak-a

NB (3): Jawaban ini setidaknya berumur sepuluh tahun (1), harap diingat saat Anda masuk dari Google.

cms
sumber
Saya baru saja mengujinya lagi di sini untuk memastikan, dan berfungsi dengan baik untuk saya. Tidak semua klien email bekerja dengan baik dengan Reply-To, tetapi saya pikir itu adalah masalah yang sudah terselesaikan sekarang. Variabel REPLYTO env disebutkan di halaman manual, mailer UNIX lain menghormati itu, emacs dll. Namun, saya rasa Anda sudah memperbaikinya.
cms
Menurut saya ini bukan klien email ... Saya tidak melihat header Balas-Ke di teks pesan mentah. Tapi, ya, -a sudah cukup.
Chris Conway
1
Tidak, tidak. Tetapi: "Panduan lengkap mailutils GNU tidak tersedia di sistem Debian karena alasan lisensi." -aReply-To: ... bekerja.
Chris Conway
Saya juga tidak melihat REPLYTO disebutkan di gnu.org/software/mailutils/manual/mailutils.html
Chris Conway
4
di CentOS mail -apilihannya berarti "attachemnet". Saya perlu menggunakan -rlikemail -r [email protected]
equivalent8
42

Di Centos 5.3 saya dapat melakukan:

mail -s "Subject" [email protected] -- -f [email protected] < body

Tanda hubung ganda menghentikan mail dari mengurai argumen -f dan meneruskannya ke sendmail itu sendiri.

Pesolek
sumber
3
tidak bekerja. 3 alamat ditambahkan ke alamat sekarang. alamat ke, alamat f dan
domain lokal
2
Bisakah Anda membantu, ini dulu berfungsi - tetapi, karena pembaruan terkini, ini tidak lagi berfungsi, ia hanya mencoba mengirim email tambahan ke -f @ hostname
Wil
1
Tidak berfungsi pada CentOS 6.3. Coba jawaban @ ubuntu-fanboy di bawah ini menggunakan -r flag.
skytaker
26

Perintah 'mail' GNU mailutils tidak memungkinkan Anda melakukan ini (setidaknya dengan mudah). Tetapi Jika Anda menginstal 'heirloom-mailx', perintah emailnya (mailx) memiliki opsi '-r' untuk menimpa bidang default '$ USER @ $ HOSTNAME' dari.

echo "Hello there" | mail -s "testing" -r [email protected] [email protected]

Berfungsi untuk 'mailx' tapi bukan 'mail'.

$ ls -l / usr / bin / mail
lrwxrwxrwx 1 root root 22 2010-12-23 08:33 / usr / bin / mail -> / etc / alternate / mail
$ ls -l / etc / alternate / mail
lrwxrwxrwx 1 root root 23 2010-12-23 08:33 / etc / alternate / mail -> / usr / bin / heirloom-mailx
ubuntu-fanboy.dll
sumber
5
Mungkin berguna untuk mengetahui bahwa mailperintah mailutils GNU yang telah diinstal sebelumnya pada -ropsi mendukung Ubuntu 14.04 LTS , sehingga Anda dapat dengan mudah mengatur alamat pengirim.
gerlos
Saya telah menguji Debian 9.11, dan opsinya juga berfungsi.
Fedir RYKHTIK
14
mail -s "$(echo -e "This is the subject\nFrom: Paula <[email protected]>\n
Reply-to: [email protected]\nContent-Type: text/html\n")" 
[email protected] < htmlFileMessage.txt

di atas adalah solusi saya .... header tambahan apa pun dapat ditambahkan tepat setelah dari dan sebelum membalas ke ... pastikan Anda mengetahui sintaks header sebelum menambahkannya .... ini bekerja dengan sempurna untuk saya.

Lumut
sumber
1
Ini bekerja untuk saya dengan contoh Anda ... Ketika saya mengubah subjek alamat email, dll., Semua header akan dihapus?
bsmoo
7

Plus bagus digunakan -F optionuntuk menentukan Nama pengirim.

Sesuatu seperti ini:

mail -s "$SUBJECT" $MAILTO -- -F $MAILFROM -f ${MAILFROM}@somedomain.com

Atau lihat saja opsi yang tersedia: http://www.courier-mta.org/sendmail.html

artickl
sumber
5

Anda juga dapat menyetel nama Dari dan dari alamat menggunakan sesuatu seperti:

 echo test | mail -s "test" [email protected] -- -F'Some Name<[email protected]>' -t

Untuk beberapa alasan meneruskan -F'Some Name'dan [email protected]tidak berhasil, tapi meneruskan -tke sendmail bekerja dan "mudah".

Alcanzar
sumber
4

Berikut beberapa opsinya:

  • Jika Anda cukup privelige, konfigurasikan sendmail untuk melakukan rewrites dengan tabel generics

  • Tulis sendiri seluruh header (atau kirimkan ke email Anda sendiri, simpan seluruh pesan dengan semua header, dan edit ulang, dan kirimkan dengan rmail dari baris perintah

  • Kirim langsung dengan sendmail, gunakan tanda baris perintah "-f" dan jangan sertakan baris "Dari:" di pesan Anda

Ini tidak semuanya persis sama, tetapi saya akan menyerahkannya kepada Anda untuk memeriksanya lebih lanjut.

Di portabel saya, saya telah mengautentikasi sendmail sebagai klien ke server surat keluar dan saya menggunakan obat generik untuk membuat surat balasan masuk ke akun lain. Ini bekerja seperti pesona. Saya menggabungkan email masuk dengan fetchmail.

Thomas Kammeyer
sumber
4

Saya mendapatkan ini dari semua jawaban di atas. Tidak ada yang berhasil bagi saya ketika saya mencoba semuanya. Saya melakukan banyak jejak dan kesalahan dengan menggabungkan semua jawaban di atas dan menyimpulkan ini. Saya tidak yakin apakah ini berhasil untuk Anda tetapi berhasil untuk saya di Ununtu 12.04 dan RHEL 5.4.

echo "This is the body of the mail" | mail -s 'This is the subject' '<[email protected]>,<[email protected]>' -- -F '<SenderName>' -f '<[email protected]>'

Seseorang dapat mengirim email ke sejumlah orang dengan menambahkan sejumlah id penerima dan email dikirim oleh SenderName dari [email protected]

Semoga ini membantu.

deepak.prathapani
sumber
ini tidak berfungsi vor / usr / bin / mail, mungkin perintah Anda untuk sendmail.
basZero
3

Saya tidak tahu apakah itu sama dengan OS lain, tetapi di OpenBSD, perintah mail memiliki sintaks ini:

mail to-addr ... -sendmail-options ...

sendmail memiliki opsi -f di mana Anda menunjukkan alamat email untuk bidang FROM :. Perintah berikut berfungsi untuk saya.

mail [email protected] -f [email protected]
Ryan Barong
sumber
Bekerja untuk saya! (Juga openBSD - Macbook pro.)
Aeonaut
1
Perbarui - penerima email masih melihat nama akun lokal saya sebelumnya [email protected]- misalnya, "Aeonaut [email protected]". Ada ide bagaimana mengubah ini?
Aeonaut
3
Tidak bekerja untuk saya. (os x mountain lion) "mail: Tidak bisa memberi -f dan orang untuk dikirim."
Jonny
3

Terima kasih BEAU

mail -s "Subject" [email protected] -- -f [email protected]

Saya baru saja menemukan ini dan berhasil untuk saya. Halaman manual untuk mail 8.1 di CentOS 5 tidak menyebutkan ini. Untuk -fopsi, halaman manual mengatakan:

-f Membaca pesan dari file yang dinamai oleh operan file alih-alih kotak surat sistem. (Lihat juga folder.) Jika tidak ada operand file yang ditentukan, baca pesan dari mbox alih-alih kotak surat sistem.

Jadi bagaimanapun ini bagus untuk ditemukan, terima kasih.

gbla
sumber
1
-ftentu saja bukan merupakan pilihan maildalam contoh Anda, seperti yang didahului oleh --. Opsi itu diserahkan ke MTA Anda
Anthon
3

Di Debian 7 saya masih tidak dapat mengatur alamat pengirim dengan benar menggunakan jawaban dari pertanyaan ini, (akan selalu menjadi nama host server) tetapi menyelesaikannya dengan cara ini.

Pasang heirloom-mailx

apt-get install heirloom-mailx

pastikan itu default.

update-alternatives --config mailx

Tulis pesan.

mail -s "Testing from & replyto" -r "sender <[email protected]>" -S replyto="[email protected]" [email protected] < <(echo "Test message")
jelloir
sumber
Apa yang update-alternativesdilakukan perintah ini ? Ini memberi saya 3 pilihan dan saya bingung.
Stephane
1

Di CentOS, ini berfungsi untuk saya:

echo "email body" | mail -s "Subject here" -r from_email_address email_address_to
Céline Aussourd
sumber
1

echo "body" | mail -S [email protected] "Hello"

-S memungkinkan Anda menentukan banyak opsi string, sejauh ini merupakan cara termudah untuk memodifikasi header dan semacamnya.

Andrew Backeby
sumber
0

Di CentOS 5.5, cara termudah yang saya temukan untuk mengatur default dari domain adalah dengan memodifikasi file host. Jika file host Anda berisi alamat WAN / IP publik Anda, cukup ubah nama host pertama yang terdaftar untuknya. Misalnya, file host Anda mungkin terlihat seperti:

...
11.22.33.44 localhost domain-default apa pun-else.com
...

Untuk membuatnya mengirim dari apa pun-else.com, cukup modifikasi sehingga apa pun-else.com terdaftar terlebih dahulu, misalnya:

...
11.22.33.44 whatever-else.com localhost default-domain
...

Saya tidak dapat berbicara untuk distro lain (atau bahkan versi CentOS) tetapi dalam kasus khusus saya, di atas berfungsi dengan sempurna.

papsy
sumber
0

Apa yang memungkinkan saya memiliki alamat balas-ke khusus Ubuntu 16.04dengan UTF-8encoding dan lampiran file:

Instal klien email:

sudo apt-get install heirloom-mailx

Edit konfigurasi SMTP:

sudo vim /etc/ssmtp/ssmtp.conf
mailhub=smtp.gmail.com:587
FromLineOverride=YES
[email protected]
AuthPass=???
UseSTARTTLS=YES

Kirim surat:

sender='[email protected]'
recipient='[email protected]'
zipfile="results/file.zip"
today=`date +\%d-\%m-\%Y`
mailSubject='My subject on the '$today
read -r -d '' mailBody << EOM
Find attached the zip file.

Regards,
EOM
mail -s "$mailSubject" -r "Name <$sender>" -S replyto="$sender" -a $zipfile $recipient < <(echo $mailBody)
Stephane
sumber
0

Tidak ada solusi di atas yang berhasil untuk saya ...

#!/bin/bash

# Message
echo "My message" > message.txt

# Mail
subject="Test"
mail_header="From: John Smith <[email protected]>"
recipients="[email protected]"

#######################################################################
cat message.txt | mail -s "$subject" -a "$mail_header" -t "$recipients"
JazzCat
sumber