Zmień adres „Od:” w uniksowej „poczcie”


89

Wysyłanie wiadomości z wiersza poleceń systemu Unix przy użyciu mail TO_ADDRwyników w wiadomości e-mail z adresu $USER@$HOSTNAME. Czy istnieje sposób na zmianę adresu „Od:” wstawionego przez mail?

Dla przypomnienia, używam GNU Mailutils 1.1 / 1.2 na Ubuntu (ale widziałem to samo zachowanie w Fedorze i RHEL).

[EDYTOWAĆ]

$ mail -s Testowanie chris@example.org                                                                  
DW: 
Od: foo@bar.org

Testowanie
.

plony

Temat: Testowanie
Do: <chris@example.org>
X-Mailer: mail (GNU Mailutils 1.1)
Identyfikator wiadomości: <E1KdTJj-00025z-RK @ localhost>
Od: <chris @ localhost>
Data: środa, 10 września 2008 r., 13:17:23 -0400

Od: foo@bar.org

Testowanie

Wiersz „From: foo@bar.org” jest częścią treści wiadomości, a nie częścią nagłówka.


1
Jaki to jest smak Uniksa? i która wersja poczty? Po prostu wiedzieć, gdzie to nie działa.
Vinko Vrsalovic,

Prawie wszystkie. Każdy, kto używa poczty mailx lub berkeley, będzie to postrzegać w ten sposób. Jeśli chcesz wpłynąć na nagłówek, napisz cały nagłówek i wyślij bezpośrednio za pomocą rmaila lub sendmaila.
Thomas Kammeyer,

Och, ale przepraszam, uruchamiam GenToo.
Thomas Kammeyer,

Dla przypomnienia, używam mailx i przykład, który podaje Chris, działa. A może to miałeś na myśli?
Vinko Vrsalovic

Vinko, jaką wersję UN * X używasz? Czy przez „uczynki” masz na myśli to, że osiągasz jego wyniki lub że uzyskujesz pożądane zachowanie, które odpowiadałoby jego potrzebom? Zależy to w pewnym stopniu od tego, jak działa przesyłanie wiadomości na twojej platformie i czy klient doda pustą linię przed
Thomas Kammeyer

Odpowiedzi:


109

W mojej wersji poczty (Debian linux 4.0) działają następujące opcje do kontrolowania adresów źródłowych / zwrotnych

  • -a przełącznik, na dodatkowych nagłówków do zastosowania, dostarczając nagłówek From: w linii poleceń, które zostaną dołączone do wychodzącego nagłówka wiadomości
  • $ REPLYTO zmienna określa Odpowiedź do: nagłówek

więc następująca sekwencja

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

Rezultatem w moich klientach poczty jest wiadomość z adresu cms-sends@example.com, na którą każda odpowiedź będzie miała domyślnie adres cms-replies@example.com

Uwaga: użytkownicy Mac OS: nie masz -a, ale masz $ REPLYTO

Uwaga (2): CentOS użytkowników, wielu komentujących dodałem, że trzeba użyć -rnie-a

Uwaga (3): Ta odpowiedź ma co najmniej dziesięć lat (1), pamiętaj o tym, przechodząc z Google.


Właśnie przetestowałem to ponownie tutaj, aby się upewnić, i dla mnie działa dobrze. Nie wszyscy klienci pocztowi dobrze współpracują z funkcją Odpowiedz do, ale pomyślałbym, że to już rozwiązany problem. Zmienna env REPLYTO jest wymieniona na stronie podręcznika, inne programy pocztowe UNIX ją honorują, emacs itp. Mimo to, myślę, że masz rozwiązanie.
cms

Nie sądzę, że to klient poczty ... Nie widzę nagłówka Reply-To w nieprzetworzonym tekście wiadomości. Ale tak, -a jest wystarczające.
Chris Conway,

1
Nie, to nieprawda. Ale: "Kompletny podręcznik GNU mailutils nie jest dostępny w systemach Debian z powodów licencyjnych." -aReply-To: ... działa.
Chris Conway,

Nie widzę też żadnej wzmianki o REPLYTO na gnu.org/software/mailutils/manual/mailutils.html
Chris Conway,

4
w CentOS mail -aopcja ta oznacza „attachemnet”. Musiałem użyć -rjakmail -r from@whatever.com
equivalent8

42

Na Centos 5.3 mogę:

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

Podwójny myślnik powstrzymuje mail przed analizowaniem argumentu -f i przekazuje go do samego sendmaila.


3
nie działa. 3 adresy zostaną teraz dodane do adresu. adres, adres f i lokalną domenę
shorif2000

2
Czy możesz pomóc, to działało - ale od ostatniej aktualizacji już nie działa, po prostu próbuje dodatkowo wysłać wiadomość e-mail na -f @ hostname
Wil

1
Nie działa na CentOS 6.3. Spróbuj odpowiedzieć na @ ubuntu-fanboy poniżej, używając flagi -r.
skytaker

26

Polecenie 'mail' GNU mailutils nie pozwala ci tego zrobić (przynajmniej łatwo). Ale jeśli zainstalujesz 'heirloom-mailx', jego polecenie mail (mailx) ma opcję '-r', aby przesłonić domyślne pole '$ USER @ $ HOSTNAME' z pola.

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

Działa dla „mailx”, ale nie dla „mail”.

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

5
Może przydałoby się wiedzieć, że mailpolecenie pocztowe GNU preinstalowane w systemie Ubuntu 14.04 LTS obsługuje -ropcję, dzięki czemu można łatwo ustawić adres nadawcy.
gerlos

Testowałem na Debianie 9.11 i ta opcja też działa.
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

powyższe jest moim rozwiązaniem .... wszelkie dodatkowe nagłówki można dodać tuż po przed i przed odpowiedzią na ... po prostu upewnij się, że znasz składnię nagłówków przed ich dodaniem .... to działało idealnie dla mnie.


1
To działa dla mnie na twoim przykładzie ... Kiedy zmieniam temat adresu e-mail itp., Wszystkie nagłówki są wyświetlane?
bsmoo,


5

Możliwe jest również ustawienie zarówno nazwy Od, jak i adresu nadawcy, używając czegoś takiego jak:

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

Z jakiegoś powodu pomijanie -F'Some Name'i -fexample2@example.comnie działa, ale przekazywanie -tdo sendmaila działa i jest „łatwe”.


4

Oto kilka opcji:

  • Jeśli masz wystarczające uprawnienia, skonfiguruj sendmaila tak, aby przepisał tablicę generics

  • Napisz cały nagłówek samodzielnie (lub wyślij go do siebie, zapisz całą wiadomość ze wszystkimi nagłówkami i ponownie edytuj oraz wyślij ją za pomocą rmaila z linii poleceń

  • Wysyłaj bezpośrednio za pomocą sendmaila, użyj flagi "-f" w linii poleceń i nie dodawaj linii "Od:" do wiadomości

Nie wszystkie są dokładnie takie same, ale zostawię to tobie, przyjrzyj się temu dokładniej.

Na moim urządzeniu przenośnym sendmail jest uwierzytelniany jako klient serwera poczty wychodzącej i używam generics, aby poczta zwrotna trafiała na inne konto. To działa jak urok. Agreguję pocztę przychodzącą za pomocą fetchmaila.


4

Wyprowadziłem to ze wszystkich powyższych odpowiedzi. Nic nie działało, gdy próbowałem każdego z nich. Zrobiłem wiele tropów i błędów, łącząc wszystkie powyższe odpowiedzi i podsumowałem to. Nie jestem pewien, czy to działa dla Ciebie, ale działało dla mnie na Ununtu 12.04 i RHEL 5.4.

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>'

Listę można wysłać do dowolnej liczby osób, dodając dowolną liczbę identyfikatorów odbiorcy, a wiadomość jest wysyłana przez SenderName z adresu from-id@email.com

Mam nadzieję że to pomoże.


to nie działa vor / usr / bin / mail, być może twoja komenda dotyczy sendmaila.
basZero

3

Nie wiem, czy to samo z innymi systemami operacyjnymi, ale w OpenBSD polecenie mail ma następującą składnię:

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

sendmail ma opcję -f, w której podajesz adres e-mail dla pola OD:. Następujące polecenie działa dla mnie.

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

Pracuje dla mnie! (Również openBSD - Macbook pro.)
Aeonaut

1
Aktualizacja - odbiorca wiadomości e-mail nadal widzi nazwę mojego konta lokalnego wcześniej from@example.com- np. „Aeonaut from@example.com”. Masz pomysł, jak to zmienić?
Aeonaut

3
Nie działa na mnie. (os x mountain lion) "mail: Nie można podać -f i osób do wysłania."
Jonny

3

Dzięki, BEAU

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

Właśnie to znalazłem i działa dla mnie. Strony man dla poczty 8.1 na CentOS 5 nie wspominają o tym. Dla-f opcji strona podręcznika mówi:

-f Czytaj wiadomości z pliku o nazwie argument pliku zamiast z systemowej skrzynki pocztowej. (Zobacz także folder.) Jeśli nie określono argumentu pliku, czytaj wiadomości z mbox zamiast z systemowej skrzynki pocztowej.

W każdym razie wspaniale jest to znaleźć, dzięki.


1
-fnie jest oczywiście opcją mailw twoim przykładzie, ponieważ jest poprzedzona --. Ta opcja jest przekazywana do MTA
Anthon,

3

W Debianie 7 nadal nie mogłem poprawnie ustawić adresu nadawcy na podstawie odpowiedzi z tego pytania (zawsze byłaby to nazwa hosta serwera), ale rozwiązałem problem w ten sposób.

Zainstaluj heirloom-mailx

apt-get install heirloom-mailx

upewnij się, że jest to ustawienie domyślne.

update-alternatives --config mailx

Utwórz wiadomość.

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

Co update-alternativesrobi to polecenie? Daje mi 3 możliwości i jestem zdziwiony.
Stephane

1

W CentOS to zadziałało dla mnie:

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 pozwala określić wiele opcji łańcuchowych, zdecydowanie najłatwiejszy sposób modyfikowania nagłówków i tym podobnych.


1

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

Działa w OpenBSD.


0

to działało dla mnie

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

0

W CentOS 5.5 najłatwiejszym sposobem ustawienia wartości domyślnej z domeny jest zmodyfikowanie pliku hosts. Jeśli twój plik hosts zawiera twój WAN / publiczny adres IP, po prostu zmień pierwszą wymienioną dla niego nazwę hosta. Na przykład twój plik hosts może wyglądać następująco:

...
11.22.33.44 localhost domena-domyślna cokolwiek-else.com
...

Aby wysłać go z cokolwiek-else.com, po prostu zmodyfikuj go tak, aby cokolwiek-else.com był wymieniony jako pierwszy, na przykład:

...
11.22.33.44 cokolwiek-else.com localhost domena-domyślna
...

Nie mogę mówić o żadnej innej dystrybucji (ani nawet wersji CentOS), ale w moim konkretnym przypadku powyższe działa idealnie.


0

Co pozwoliło mi mieć niestandardowy adres zwrotny na adresie Ubuntu 16.04withUTF-8 kodowaniem i załącznikiem do pliku:

Zainstaluj klienta poczty:

sudo apt-get install heirloom-mailx

Edytuj konfigurację SMTP:

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

Wyślij mail:

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

Żadne z powyższych rozwiązań nie działa dla mnie ...

#!/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

Odpowiedzi udzielone wcześniej nie działały dla mnie na CentOS5. Zainstalowałem mutt. Ma wiele opcji. Z kundlem robisz to w ten sposób:

export EMAIL=myfrom@example.com
export REPLYTO=myreplyto@example.com
mutt -s Testing chris@example.org
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.