Ä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 chris@example.org                                                                  
Cc: 
Von: foo@bar.org

Testen
.

ergibt

Betreff: Testen
An: <chris@example.org>
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: foo@bar.org

Testen

Die Zeile "From: foo@bar.org" ist Teil des Nachrichtentexts und nicht Teil des Headers.


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 REPLYTO=cms-replies@example.com
mail -aFrom:cms-sends@example.com -s 'Testing'

Das Ergebnis in meinen E-Mail-Clients ist eine E-Mail von cms-sends@example.com, auf die alle Antworten standardmäßig an cms-replies@example.com 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.


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 from@whatever.com
Äquivalent8

42

Auf Centos 5.3 kann ich:

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

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


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 sender@company.com recipient@company.com

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

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 <johny@paula.com>\n
Reply-to: 1232564@yourserver.com\nContent-Type: text/html\n")" 
milas.josh@gmail.com < 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.


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


5

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

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

Aus irgendeinem Grund funktioniert das Übergeben -F'Some Name'und -fexample2@example.comfunktioniert nicht, aber das Übergeben -tan sendmail funktioniert und ist "einfach".


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.


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' '<receiver-id1@email.com>,<receiver-id2@email.com>' -- -F '<SenderName>' -f '<from-id@email.com>'

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 from-id@email.com gesendet

Hoffe das hilft.


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 recepient@example.com -f from@example.com

Funktioniert bei mir! (Auch openBSD - Macbook Pro.)
Aeonaut

1
Update - Der E-Mail-Empfänger sieht meinen lokalen from@example.comKontonamen noch vor - z. B. "Aeonaut from@example.com". 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" user@address.com -- -f from@address.com

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.


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 <sender@example.com>" -S replyto="sender@example.com" recipient@example.net < <(echo "Test message")

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

1

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

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


1

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

Es funktioniert in OpenBSD.


0

das hat bei mir funktioniert

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

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.


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
AuthUser=???@gmail.com
AuthPass=???
UseSTARTTLS=YES

Mail senden:

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

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 <john.smith@example.com>"
recipients="recipient@example.com"

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

-1

Die zuvor gegebenen Antworten haben unter CentOS5 bei mir nicht funktioniert. Ich habe mutt installiert. Es gibt viele Möglichkeiten. Mit mutt machst du das so:

export EMAIL=myfrom@example.com
export REPLYTO=myreplyto@example.com
mutt -s Testing chris@example.org
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.