Unix "posta" içindeki "Kimden:" adresini değiştirin


90

mail TO_ADDRBir e-postayı kullanarak Unix komut satırından bir mesaj göndermek $USER@$HOSTNAME. Tarafından eklenen "Kimden:" adresini değiştirmenin bir yolu var mı?mail ?

Kayıt için Ubuntu'da GNU Mailutils 1.1 / 1.2 kullanıyorum (ancak Fedora ve RHEL'de aynı davranışı gördüm).

[DÜZENLE]

$ mail -s chris@example.org testi                                                                  
Cc: 
Gönderen: foo@bar.org

Test yapmak
.

verim

Konu: Test
Alıcı: <chris@example.org>
X-Mailer: posta (GNU Mailutils 1.1)
İleti Kimliği: <E1KdTJj-00025z-RK @ localhost>
Gönderen: <chris @ localhost>
Tarih: Çar, 10 Eylül 2008 13:17:23 -0400

Gönderen: foo@bar.org

Test yapmak

"From: foo@bar.org" satırı, başlığın bir parçası değil, ileti gövdesinin bir parçasıdır.


1
Bu Unix'in tadı nedir? ve hangi posta sürümü? Sadece nerede işe yaramadığını bilmek için.
Vinko Vrsalovic

Neredeyse hepsi. Mailx veya berkeley postası kullanan herkes onu bu şekilde görecektir. Başlığı etkilemek istiyorsanız, başlığın tamamını yazın ve doğrudan rmail veya sendmail ile gönderin.
Thomas Kammeyer

Oh, ama üzgünüm, GenToo'yu çalıştırıyorum.
Thomas Kammeyer

Kayıt için mailx kullanıyorum ve Chris'in verdiği örnek çalışma. Yoksa kastettiğin bu mu?
Vinko Vrsalovic

Vinko, UN * X'in hangi sürümünü çalıştırıyorsun? "Eserler" ile onun sonuçlarını aldığınızı mı yoksa onun ihtiyacını karşılayacak istenen davranışı aldığınızı mı kastediyorsunuz? Bir dereceye kadar, mesaj gönderiminin platformunuzda nasıl çalıştığına ve müşterinin
Thomas Kammeyer

Yanıtlar:


110

Posta sürümümde (Debian linux 4.0) aşağıdaki seçenekler kaynak / yanıt adreslerini kontrol etmek için çalışır

  • -a giden posta başlığına eklenir komut satırında başlığındaki: ek başlıklar için anahtar itibaren bir tedarik, uygulama
  • $ replyto ortam değişkeni Bir Yanıt Yapılır belirtir: header

yani aşağıdaki sıra

export REPLYTO=cms-replies@example.com
mail -aFrom:cms-sends@example.com -s 'Testing'

Posta istemcilerimde sonuç, cms-sends@example.com'dan gelen bir postadır ve herhangi bir yanıt varsayılan olarak cms-replies@example.com olacaktır.

NB: Mac OS kullanıcıları: -a'ya sahip değilsiniz, ancak $ REPLYTO hesabınız var

NB (2): CentOS kullanıcıları, birçok yorum yapanlar kullanmak gerektiğini eklemiş -rdeğil-a

NB (3): Bu cevap en az on yaşında (1), lütfen Google'dan gelirken bunu aklınızda bulundurun.


Emin olmak için burada tekrar test ettim ve benim için iyi çalışıyor. Tüm posta istemcileri Yanıtla ile iyi çalışmaz, ancak bunun şimdiye kadar çözülmüş bir sorun olduğunu düşünmüştüm. REPLYTO env değişkeni man sayfasında belirtilmiştir, Diğer UNIX postacıları bunu kabul eder, emacs vb. Yine de, sanırım bir düzeltmeniz var.
cms

Bunun posta istemcisi olduğunu sanmıyorum ... Ham mesaj metninde Yanıtla başlığını göremiyorum. Ama evet, -a yeterlidir.
Chris Conway

1
Hayır, öyle değil. Ancak: "Lisans nedenlerinden dolayı GNU mailutils kılavuzunun tamamı Debian sistemlerinde mevcut değildir." -aReply-To: ... çalışır.
Chris Conway

Ayrıca gnu.org/software/mailutils/manual/mailutils.html adresinde REPLYTO'dan
Chris Conway

4
CentOS'ta mail -aseçenek "attachemnet" anlamına gelir. -rBenzeri kullanmam gerekiyordumail -r from@whatever.com
eşdeğer 8

42

Centos 5.3'te şunları yapabiliyorum:

mail -s "Subject" user@address.com -- -f from@address.com < body

Çift tire, postanın -f argümanını çözümlemesini durdurur ve onu sendmail'in kendisine iletir.


3
çalışmıyor. Şimdi 3 adres adrese eklenir. adres, f adresi ve
yerel

2
Yardımcı olabilir misiniz, bu eskiden işe yarıyordu - ancak son güncellemeden bu yana artık çalışmıyor, sadece ek olarak -f @ hostname
Wil

1
CentOS 6.3 üzerinde çalışmıyor. Aşağıdaki -r işaretini kullanarak @ ubuntu-fanboy yanıtını deneyin.
skytaker

26

GNU mailutils'in 'mail' komutu bunu yapmanıza izin vermez (en azından kolaylıkla). Ancak 'heirloom-mailx'i kurarsanız, mail komutunun (mailx) alandan varsayılan' $ USER @ $ HOSTNAME 'değerini geçersiz kılmak için' -r 'seçeneği vardır.

echo "Hello there" | mail -s "testing" -r sender@company.com recipient@company.com

'Mailx' için çalışır ancak 'mail' için çalışmaz.

$ ls -l / usr / bin / mail
lrwxrwxrwx 1 kök kök 22 2010-12-23 08:33 / usr / bin / mail -> / etc / alternatives / mail
$ ls -l / etc / alternatives / mail
lrwxrwxrwx 1 kök kök 23 2010-12-23 08:33 / etc / alternatives / mail -> / usr / bin / heirloom-mailx

5
mailUbuntu 14.04 LTS'ye önceden yüklenmiş GNU mailutils komutunun -rseçeneği desteklediğini bilmek yararlı olabilir , böylece gönderen adresini kolayca ayarlayabilirsiniz.
gerlos

Debian 9.11'de test ettim ve seçenek de çalışıyor.
Fedir RYKHTIK

14
mail -s "$(echo -e "This is the subject\nFrom: Paula <johny@paula.com>\n
Reply-to: 1232564@yourserver.com\nContent-Type: text/html\n")" 
milas.josh@gmail.com < htmlFileMessage.txt

yukarıdakiler benim çözümüm ... herhangi bir fazladan başlıklar yanıttan hemen sonra ve yanıttan önce eklenebilir ... eklemeden önce üstbilgilerinizin sözdizimini bildiğinizden emin olun .... bu benim için mükemmel çalıştı.


1
Bu, örneğinizle benim için çalışıyor ... E-posta adresi konusunu değiştirdiğimde vb tüm başlıklar görüntüleniyor mu?
bsmoo


5

Aşağıdakiler gibi bir şey kullanarak hem Gönderen adını hem de gönderen adresini ayarlamak da mümkündür:

 echo test | mail -s "test" example@example.com -- -F'Some Name<example2@example.com>' -t

Nedense geçmek -F'Some Name've -fexample2@example.comişe yaramıyor, ancak -tsendmail'e geçmek işe yarıyor ve "kolay".


4

İşte bazı seçenekler:

  • Yeterince ayrıcalığa sahipseniz, sendmail'i genel tabloyla yeniden yazacak şekilde yapılandırın

  • Başlığın tamamını kendiniz yazın (veya kendinize postalayın, tüm iletiyi tüm başlıklarla kaydedin ve yeniden düzenleyin ve komut satırından rmail ile gönderin.

  • Doğrudan sendmail ile gönderin, "-f" komut satırı bayrağını kullanın ve iletinize "Kimden:" satırınızı eklemeyin

Bunların hepsi tam olarak aynı değil, ama bunu size bırakacağım, daha derinlemesine inceleyin.

Taşınabilir cihazımda, giden posta sunucusuna istemci olarak kimlik doğrulaması yapan sendmail var ve geri dönen postayı başka bir hesaba getirmek için jenerikler kullanıyorum. Mucizevi şekilde çalışır. Gelen postayı fetchmail ile topluyorum.


4

Bunu yukarıdaki yanıtların hepsinden çıkardım. Her birini denediğimde hiçbir şey benim için işe yaramadı. Yukarıdaki tüm cevapları birleştirerek çok fazla yol ve hata yaptım ve bu konuda sonuca vardım. Bunun sizin için işe yarayıp yaramadığından emin değilim ama Ununtu 12.04 ve RHEL 5.4'te benim için çalıştı.

echo "This is the body of the mail" | mail -s 'This is the subject' '<receiver-id1@email.com>,<receiver-id2@email.com>' -- -F '<SenderName>' -f '<from-id@email.com>'

Bir alıcı kimliği en herhangi bir sayıda ekleyerek insanların herhangi bir numaraya posta gönderebilir ve posta yoluyla gönderilen SENDERNAME gelen from-id@email.com

Bu yardımcı olur umarım.


bu vor / usr / bin / mail çalışmıyor, belki komutunuz sendmail içindir.
basZero

3

Diğer işletim sistemleriyle aynı olup olmadığını bilmiyorum ama OpenBSD'de mail komutu şu sözdizimine sahip:

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

sendmail, KİMDEN: alanı için e-posta adresini belirttiğiniz -f seçeneğine sahiptir. Aşağıdaki komut benim için çalışıyor.

mail recepient@example.com -f from@example.com

Benim için çalışıyor! (Ayrıca openBSD - Macbook pro.)
Aeonaut

1
Güncelleme - e-posta alıcısı yerel hesap adımı daha önce görmeye devam ediyor from@example.com- ör from@example.com. "Aeonaut ". Bunu nasıl değiştireceğine dair bir fikrin var mı?
Aeonaut

3
Benim için çalışmıyor. (os x dağ aslanı) "posta: -f ve kişilere gönderilemez."
Jonny

3

Teşekkürler BEAU

mail -s "Subject" user@address.com -- -f from@address.com

Bunu yeni buldum ve benim için çalışıyor. CentOS 5 üzerindeki mail 8.1 için man sayfaları bundan bahsetmiyor. İçin -fseçenek manuel sayfa:

-f İletileri, sistem posta kutusu yerine dosya işleneniyle adlandırılan dosyadan okuyun. (Klasöre de bakın.) Dosya işleneni belirtilmezse, mesajları sistem posta kutusu yerine mbox'tan okuyun.

Her neyse, bunu bulmak harika, teşekkürler.


1
-felbette mail, öncesinde olduğu gibi, örneğinizde bir seçenek değildir --. Bu seçenek
MTA'nıza

3

Debian 7'de, bu sorunun yanıtlarını kullanarak gönderen adresini hala doğru şekilde ayarlayamadım (her zaman sunucunun ana bilgisayar adı olurdu), ancak bu şekilde çözdüm.

Heirloom-mailx'i yükleyin

apt-get install heirloom-mailx

varsayılan olduğundan emin olun.

update-alternatives --config mailx

Bir mesaj oluşturun.

mail -s "Testing from & replyto" -r "sender <sender@example.com>" -S replyto="sender@example.com" recipient@example.net < <(echo "Test message")

Bu update-alternativeskomut ne yapıyor? Bana 3 seçenek veriyor ve şaşkınım.
Stephane

1

CentOS'ta bu benim için çalıştı:

echo "email body" | mail -s "Subject here" -r from_email_address email_address_to

1

echo "body" | mail -S from=address@foo.com "Hello"

-S, başlıkları ve benzerlerini değiştirmenin açık ara en kolay yolu olan birçok dize seçeneği belirlemenizi sağlar.


1

echo "test" | mailx -r fake@example.com -s 'test' email@example.com

OpenBSD'de çalışır.


0

bu benim için çalıştı

echo "hi root"|mail -rsawrub@testingdomain.org -s'testinggg' root

0

CentOS 5.5'te, varsayılanı etki alanından ayarlamanın bulduğum en kolay yolu, ana bilgisayar dosyasını değiştirmektir. Ana bilgisayar dosyanız WAN / genel IP adresinizi içeriyorsa, bunun için listelenen ilk ana bilgisayar adını değiştirmeniz yeterlidir. Örneğin, hosts dosyanız şöyle görünebilir:

...
11.22.33.44 localhost varsayılan-etki alanı ne olursa olsun-else.com
...

Ne olursa olsun-else.com'dan göndermesini sağlamak için, basitçe değiştirerek her neyse-else.com'un listelenmesini sağlayın, örneğin:

...
11.22.33.44 whatever-else.com localhost varsayılan etki alanları
...

Başka herhangi bir dağıtım (veya hatta CentOS sürümü) için konuşamam ama benim özel durumumda, yukarıdakiler mükemmel çalışıyor.


0

Kodlama ve dosya eki Ubuntu 16.04ile özel bir yanıt adresine sahip UTF-8olmama izin veren şey :

Posta istemcisini kurun:

sudo apt-get install heirloom-mailx

SMTP yapılandırmasını düzenleyin:

sudo vim /etc/ssmtp/ssmtp.conf
mailhub=smtp.gmail.com:587
FromLineOverride=YES
AuthUser=???@gmail.com
AuthPass=???
UseSTARTTLS=YES

Postayı gönder:

sender='send@domain.com'
recipient='recipient@domain.com'
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)

0

Yukarıdaki çözümlerin hiçbiri benim için çalışmıyor ...

#!/bin/bash

# Message
echo "My message" > message.txt

# Mail
subject="Test"
mail_header="From: John Smith <john.smith@example.com>"
recipients="recipient@example.com"

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

-1

Daha önce verilen cevaplar benim için CentOS5'te çalışmadı. Mutt kurdum. Çok fazla seçeneği var. Mutt ile bunu şu şekilde yaparsınız:

export EMAIL=myfrom@example.com
export REPLYTO=myreplyto@example.com
mutt -s Testing chris@example.org
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.