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 [email protected]                                                                  
DW: 
Od: [email protected]

Testowanie
.

plony

Temat: Testowanie
Do: <[email protected]>
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: [email protected]

Testowanie

Wiersz „From: [email protected]” jest częścią treści wiadomości, a nie częścią nagłówka.

Chris Conway
źródło
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 [email protected]
mail -aFrom:[email protected] -s 'Testing'

Rezultatem w moich klientach poczty jest wiadomość z adresu [email protected], na którą każda odpowiedź będzie miała domyślnie adres [email protected]

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.

cms
źródło
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 [email protected]
equivalent8
42

Na Centos 5.3 mogę:

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

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

Amant
źródło
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 [email protected] [email protected]

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
ubuntu-fanboy
źródło
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 <[email protected]>\n
Reply-to: [email protected]\nContent-Type: text/html\n")" 
[email protected] < 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.

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

Dodatkowo dobrze -F optionjest podać nazwę nadawcy.

Coś takiego:

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

Lub po prostu spójrz na dostępne opcje: http://www.courier-mta.org/sendmail.html

artickl
źródło
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" [email protected] -- -F'Some Name<[email protected]>' -t

Z jakiegoś powodu pomijanie -F'Some Name'i [email protected]nie działa, ale przekazywanie -tdo sendmaila działa i jest „łatwe”.

Alcanzar
źródło
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.

Thomas Kammeyer
źródło
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' '<[email protected]>,<[email protected]>' -- -F '<SenderName>' -f '<[email protected]>'

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 [email protected]

Mam nadzieję że to pomoże.

deepak.prathapani
źródło
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 [email protected] -f [email protected]
Ryan Barong
źródło
Pracuje dla mnie! (Również openBSD - Macbook pro.)
Aeonaut
1
Aktualizacja - odbiorca wiadomości e-mail nadal widzi nazwę mojego konta lokalnego wcześniej [email protected]- np. „Aeonaut [email protected]”. 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" [email protected] -- -f [email protected]

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.

gbla
źródło
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 <[email protected]>" -S replyto="[email protected]" [email protected] < <(echo "Test message")
galaretka
źródło
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
Céline Aussourd
źródło
1

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

-S pozwala określić wiele opcji łańcuchowych, zdecydowanie najłatwiejszy sposób modyfikowania nagłówków i tym podobnych.

Andrew Backeby
źródło
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.

papsy
źródło
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
[email protected]
AuthPass=???
UseSTARTTLS=YES

Wyślij mail:

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
źródło
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 <[email protected]>"
recipients="[email protected]"

#######################################################################
cat message.txt | mail -s "$subject" -a "$mail_header" -t "$recipients"
JazzCat
źródło