Ändern Sie die Adresse "Von:" in Unix "Mail".

88

Senden einer Nachricht über die Unix-Befehlszeile unter Verwendung der mail TO_ADDRErgebnisse in einer E-Mail von $USER@$HOSTNAME. Gibt es eine Möglichkeit, die von eingefügte "Von:" - Adresse zu ändern mail?

Für die Aufzeichnung verwende ich GNU Mailutils 1.1 / 1.2 unter Ubuntu (aber ich habe das gleiche Verhalten bei Fedora und RHEL gesehen).

[BEARBEITEN]

$ mail -s Testen von [email protected]                                                                  
Cc: 
Von: [email protected]

Testen
.

ergibt

Betreff: Testen
An: <[email protected]>
X-Mailer: Mail (GNU Mailutils 1.1)
Nachrichten-ID: <E1KdTJj-00025z-RK @ localhost>
Von: <chris @ localhost>
Datum: Mi, 10. September 2008 13:17:23 -0400

Von: [email protected]

Testen

Die Zeile "From: [email protected]" ist Teil des Nachrichtentexts und nicht Teil des Headers.

Chris Conway
quelle
1
Was für ein Unix-Geschmack ist das? und welche mail version? Nur um zu wissen, wo das nicht funktioniert.
Vinko Vrsalovic
Ähm, fast alle. Jeder, der Mailx- oder Berkeley-Mail verwendet, wird das so sehen. Wenn Sie den Header beeinflussen möchten, schreiben Sie den gesamten Header und senden Sie ihn direkt mit rmail oder sendmail.
Thomas Kammeyer
Oh, aber leider führe ich GenToo aus.
Thomas Kammeyer
Für die Aufzeichnung verwende ich mailx und das Beispiel, das Chris gibt, funktioniert. Oder hast du das gemeint?
Vinko Vrsalovic
Vinko, welche Version von UN * X verwenden Sie? Meinen Sie mit "Arbeiten", dass Sie seine Ergebnisse erhalten oder dass Sie das gewünschte Verhalten erhalten, das seinen Bedürfnissen entspricht? Es hängt in gewissem Maße davon ab, wie die Nachrichtenübermittlung auf Ihrer Plattform funktioniert und ob der Client vor dem
Thomas Kammeyer

Antworten:

106

In meiner Mail-Version (Debian Linux 4.0) funktionieren die folgenden Optionen zum Steuern der Quell- / Antwortadressen

  • Die Option -a , damit zusätzliche Header angewendet werden können, liefert einen From: -Header in der Befehlszeile, der an den Header für ausgehende E-Mails angehängt wird
  • Die Umgebungsvariable $ REPLYTO gibt einen Reply-To: -Header an

also die folgende Reihenfolge

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

Das Ergebnis in meinen E-Mail-Clients ist eine E-Mail von [email protected], auf die alle Antworten standardmäßig an [email protected] gesendet werden

NB: Mac OS-Benutzer: Sie haben -a nicht, aber Sie haben $ REPLYTO

NB (2): CentOS-Benutzer, viele Kommentatoren haben hinzugefügt, dass Sie -rnicht verwenden müssen-a

NB (3): Diese Antwort ist mindestens zehn Jahre alt (1). Bitte denken Sie daran, wenn Sie von Google kommen.

cms
quelle
Ich habe es hier nur noch einmal getestet, um sicherzugehen, und es funktioniert gut für mich. Nicht alle E-Mail-Clients funktionieren gut mit Reply-To, aber ich hätte gedacht, dass dies inzwischen ein gelöstes Problem ist. Die Variable REPLYTO env wird in der Manpage erwähnt. Andere UNIX-Mailer ehren sie, Emacs usw. Trotzdem haben Sie wahrscheinlich einen Fix.
cms
Ich glaube nicht, dass es der Mail-Client ist ... Ich sehe den Header "Antwort an" nicht im Rohnachrichtentext. Aber ja, -a ist ausreichend.
Chris Conway
1
Nein, das tut es nicht. Aber: "Das vollständige GNU-Mailutils-Handbuch ist in Debian-Systemen aus Lizenzgründen nicht verfügbar." -aReply-To: ... funktioniert.
Chris Conway
Ich sehe auch keine Erwähnung von REPLYTO unter gnu.org/software/mailutils/manual/mailutils.html
Chris Conway
4
In CentOS mail -abedeutet die Option "Attachemnet". Ich musste -rwiemail -r [email protected]
Äquivalent8
42

Auf Centos 5.3 kann ich:

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

Der doppelte Bindestrich verhindert, dass E-Mails das Argument -f analysieren, und leitet es an sendmail selbst weiter.

Beau
quelle
2
funktioniert nicht. 3 Adressen werden jetzt zur Adresse hinzugefügt. die zu adresse, die f adresse und die localdomain
shorif2000
2
Können Sie helfen, das hat früher funktioniert - aber seit einem kürzlich durchgeführten Update funktioniert es nicht mehr. Es wird lediglich versucht, zusätzlich eine E-Mail an -f @ hostname
Wil zu
1
Funktioniert nicht unter CentOS 6.3. Versuchen Sie die Antwort @ ubuntu-fanboy unten mit dem Flag -r.
Skytaker
25

Mit dem Befehl 'mail' von GNU mailutils können Sie dies nicht tun (zumindest nicht einfach). Wenn Sie jedoch 'heirloom-mailx' installieren, verfügt der Mail-Befehl (mailx) über die Option '-r', um den Standardwert '$ USER @ $ HOSTNAME' aus dem Feld zu überschreiben.

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

Funktioniert für 'mailx', aber nicht für 'mail'.

$ ls -l / usr / bin / mail
lrwxrwxrwx 1 root root 22 23.12.2010 08:33 / usr / bin / mail -> / etc / alternatives / mail
$ ls -l / etc / alternatives / mail
lrwxrwxrwx 1 root root 23 23.12.2010 08:33 / etc / alternatives / mail -> / usr / bin / heirloom-mailx
Ubuntu-Fanboy
quelle
5
Möglicherweise kann es hilfreich sein zu wissen, dass der mailunter Ubuntu 14.04 LTS vorinstallierte Befehl GNU mailutils die -rOption unterstützt , sodass Sie die Absenderadresse einfach festlegen können.
Gerlos
Ich hatte auf Debian 9.11 getestet und die Option funktioniert auch.
Fedir RYKHTIK
13
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

Das Obige ist meine Lösung. Alle zusätzlichen Header können direkt nach dem Von und vor der Antwort auf hinzugefügt werden. Stellen Sie sicher, dass Sie die Syntax Ihrer Header kennen, bevor Sie sie hinzufügen. Dies hat bei mir perfekt funktioniert.

Moos
quelle
1
Das funktioniert bei mir mit Ihrem Beispiel ... Wenn ich den Betreff der E-Mail-Adresse usw. ändere, werden alle Header angezeigt?
bsmoo
7

Außerdem ist es gut, -F optionden Namen des Absenders anzugeben.

Etwas wie das:

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

Oder schauen Sie sich einfach die verfügbaren Optionen an: http://www.courier-mta.org/sendmail.html

artickl
quelle
5

Es ist auch möglich, sowohl den Absendernamen als auch die Absenderadresse wie folgt festzulegen:

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

Aus irgendeinem Grund funktioniert das Übergeben -F'Some Name'und [email protected]funktioniert nicht, aber das Übergeben -tan sendmail funktioniert und ist "einfach".

Alcanzar
quelle
4

Hier sind einige Optionen:

  • Wenn Sie über ausreichende Berechtigungen verfügen, konfigurieren Sie sendmail so, dass Änderungen an der Generika-Tabelle vorgenommen werden

  • Schreiben Sie den gesamten Header selbst (oder senden Sie ihn an sich selbst, speichern Sie die gesamte Nachricht mit allen Headern, bearbeiten Sie sie erneut und senden Sie sie mit rmail über die Befehlszeile

  • Senden Sie direkt mit sendmail, verwenden Sie das Befehlszeilenflag "-f" und fügen Sie Ihre "Von:" - Zeile nicht in Ihre Nachricht ein

Diese sind nicht alle genau gleich, aber ich überlasse es Ihnen, sie weiter zu untersuchen.

Auf meinem tragbaren Gerät habe ich sendmail als Client für einen Postausgangsserver authentifiziert und verwende Generika, um die Rückgabe von E-Mails an ein anderes Konto zu veranlassen. Es wirkt wie ein Zauber. Ich aggregiere eingehende E-Mails mit Fetchmail.

Thomas Kammeyer
quelle
4

Ich habe dies aus allen obigen Antworten abgeleitet. Nichts hat für mich funktioniert, als ich jeden von ihnen ausprobiert habe. Ich habe viel Fehler gemacht, indem ich alle oben genannten Antworten kombiniert habe, und bin zu dem Schluss gekommen. Ich bin nicht sicher, ob dies für Sie funktioniert, aber es hat für mich unter Ununtu 12.04 und RHEL 5.4 funktioniert.

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

Sie können die E-Mail an eine beliebige Anzahl von Personen senden, indem Sie eine beliebige Anzahl von Empfänger- IDs hinzufügen. Die E-Mail wird per Absendername von [email protected] gesendet

Hoffe das hilft.

optimus0127
quelle
3

Ich weiß nicht, ob es mit anderen Betriebssystemen identisch ist, aber in OpenBSD hat der Befehl mail die folgende Syntax:

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

sendmail hat die Option -f, bei der Sie die E-Mail-Adresse für das Feld FROM: angeben. Der folgende Befehl funktioniert für mich.

mail [email protected] -f [email protected]
Ryan Barong
quelle
Funktioniert bei mir! (Auch openBSD - Macbook Pro.)
Aeonaut
1
Update - Der E-Mail-Empfänger sieht meinen lokalen [email protected]Kontonamen noch vor - z. B. "Aeonaut [email protected]". Irgendeine Idee, wie man das ändert?
Aeonaut
3
Funktioniert bei mir nicht (os x Berglöwe) "Mail: Kann -f und Personen, an die gesendet werden soll, nicht geben."
Jonny
3

Danke BEAU

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

Ich habe das gerade gefunden und es funktioniert für mich. Die Manpages für Mail 8.1 unter CentOS 5 erwähnen dies nicht. Für die -fOption steht auf der Manpage:

-f Liest Nachrichten aus der Datei, die vom Dateioperanden anstelle des Systempostfachs benannt wurde. (Siehe auch Ordner.) Wenn kein Dateioperand angegeben ist, lesen Sie Nachrichten von mbox anstelle des Systempostfachs.

Trotzdem ist es toll, das zu finden, danke.

gbla
quelle
1
-fist mailin Ihrem Beispiel natürlich keine Option , da es vorangestellt ist --. Diese Option wird Ihrem MTA
Anthon
3

Unter Debian 7 konnte ich die Absenderadresse mit den Antworten auf diese Frage immer noch nicht richtig einstellen (dies wäre immer der Hostname des Servers), aber ich habe sie auf diese Weise gelöst.

Installieren Sie heirloom-mailx

apt-get install heirloom-mailx

Stellen Sie sicher, dass dies die Standardeinstellung ist.

update-alternatives --config mailx

Verfassen Sie eine Nachricht.

mail -s "Testing from & replyto" -r "sender <[email protected]>" -S replyto="[email protected]" [email protected] < <(echo "Test message")
Gelee
quelle
Was macht dieser update-alternativesBefehl? Es gibt mir 3 Möglichkeiten und ich bin verwirrt.
Stephane
1

Unter CentOS hat das bei mir funktioniert:

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

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

-S können Sie viele Zeichenfolgenoptionen angeben, die bei weitem die einfachste Möglichkeit sind, Header und dergleichen zu ändern.

André Backeby
quelle
0

Unter CentOS 5.5 besteht der einfachste Weg, den Standardwert für die Domäne festzulegen, darin, die Hosts-Datei zu ändern. Wenn Ihre Hosts-Datei Ihre WAN- / öffentliche IP-Adresse enthält, ändern Sie einfach den ersten dafür aufgeführten Hostnamen. Die Hosts-Datei sieht beispielsweise folgendermaßen aus:

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

Um es von Whatever-else.com senden zu lassen, ändern Sie es einfach so, dass Whatever-else.com zuerst aufgeführt wird, zum Beispiel:

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

Ich kann nicht für eine andere Distribution (oder sogar eine Version von CentOS) sprechen, aber in meinem speziellen Fall funktioniert das oben Genannte perfekt.

papsy
quelle
0

Was hat mir erlaubt, eine benutzerdefinierte Antwortadresse auf einer Ubuntu 16.04mit UTF-8Codierung und einem Dateianhang zu haben:

Installieren Sie den Mail-Client:

sudo apt-get install heirloom-mailx

Bearbeiten Sie die SMTP-Konfiguration:

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

Mail senden:

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
quelle
0

Keine der oben genannten Lösungen funktioniert für mich ...

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