Modificare l'indirizzo "Da:" nella "posta" di Unix


88

L'invio di un messaggio dalla riga di comando Unix utilizzando i mail TO_ADDRrisultati in un'e-mail da $USER@$HOSTNAME. C'è un modo per modificare l'indirizzo "Da:" inserito da mail?

Per la cronaca, sto usando GNU Mailutils 1.1 / 1.2 su Ubuntu (ma ho visto lo stesso comportamento con Fedora e RHEL).

[MODIFICARE]

$ mail -s Testing chris@example.org                                                                  
Cc: 
Da: foo@bar.org

Test
.

rendimenti

Oggetto: test
A: <chris@example.org>
X-Mailer: mail (GNU Mailutils 1.1)
ID messaggio: <E1KdTJj-00025z-RK @ localhost>
Da: <chris @ localhost>
Data: mercoledì 10 settembre 2008 13:17:23 -0400

Da: foo@bar.org

Test

La riga "From: foo@bar.org" fa parte del corpo del messaggio, non dell'intestazione.


1
Che sapore di Unix è questo? e quale versione di posta? Solo per sapere dove non funziona.
Vinko Vrsalovic

Uhm, quasi tutti. Chiunque utilizzi mailx o berkeley mail lo vedrà in questo modo. Se vuoi modificare l'intestazione, scrivi l'intera intestazione e invia direttamente con rmail o sendmail.
Thomas Kammeyer

Oh, ma, scusa, corro GenToo.
Thomas Kammeyer

Per la cronaca, sto usando mailx e l'esempio fornito da Chris funziona. O è questo che intendevi?
Vinko Vrsalovic

Vinko, quale versione di UN * X stai usando? Con "opere" intendi che ottieni i suoi risultati o che ottieni il comportamento desiderato che soddisfi le sue necessità? Dipende in una certa misura da come funziona l'invio del messaggio sulla tua piattaforma e se il client aggiunge una riga vuota prima del
Thomas Kammeyer,

Risposte:


106

Nella mia versione di posta (Debian linux 4.0) le seguenti opzioni funzionano per controllare gli indirizzi sorgente / risposta

  • l' opzione -a , per applicare intestazioni aggiuntive, fornendo un'intestazione Da: sulla riga di comando che verrà aggiunta all'intestazione della posta in uscita
  • la variabile d'ambiente $ REPLYTO specifica un'intestazione Reply-To:

quindi la seguente sequenza

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

Il risultato, nei miei client di posta, è un messaggio di posta da cms-sends@example.com, a cui qualsiasi risposta sarà predefinita cms-replies@example.com

NB: Utenti Mac OS: non hai -a, ma hai $ REPLYTO

NB (2): gli utenti CentOS, molti commentatori hanno aggiunto che è necessario utilizzare -rnon-a

NB (3): questa risposta ha almeno dieci anni (1), tienilo a mente quando arrivi da Google.


L'ho appena provato di nuovo qui per assicurarmene, e funziona bene per me. Non tutti i client di posta funzionano bene con Reply-To, ma ormai avrei pensato che fosse un problema risolto. La variabile REPLYTO env è menzionata nella pagina man, altri mailer UNIX la rispettano, emacs ecc. Comunque, immagino che tu abbia una soluzione.
cm

Non penso sia il client di posta ... Non vedo l'intestazione Rispondi a nel testo del messaggio non elaborato. Ma sì, -a è sufficiente.
Chris Conway,

1
No, non è così. Ma: "Il manuale completo di GNU mailutils non è disponibile nei sistemi Debian per motivi di licenza." -aReply-To: ... funziona.
Chris Conway,

Inoltre non vedo alcuna menzione di REPLYTO su gnu.org/software/mailutils/manual/mailutils.html
Chris Conway,

4
in CentOS l' mail -aopzione significa "attachemnet". Avevo bisogno di usare -rcomemail -r from@whatever.com
equivalente

42

Su Centos 5.3 sono in grado di fare:

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

Il doppio trattino impedisce alla posta di analizzare l'argomento -f e lo passa a sendmail stesso.


2
non funziona. 3 indirizzi vengono aggiunti a all'indirizzo ora. l'indirizzo di destinazione, l'indirizzo f e il dominio locale
shorif2000

2
Puoi aiutarmi, funzionava, ma, poiché un recente aggiornamento, non funziona più, prova solo a inviare un'e-mail a -f @ hostname
Wil

1
Non funziona su CentOS 6.3. Prova la risposta @ ubuntu-fanboy di seguito usando il flag -r.
skytaker

26

Il comando "mail" di GNU mailutils non ti permette di farlo (almeno facilmente). Ma se installi "heirloom-mailx", il suo comando mail (mailx) ha l'opzione "-r" per sovrascrivere il campo predefinito "$ USER @ $ HOSTNAME".

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

Funziona per "mailx" ma non per "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
Forse potrebbe essere utile sapere che il mailcomando GNU mailutils preinstallato su Ubuntu 14.04 supporta l' -ropzione LTS , quindi puoi facilmente impostare l'indirizzo del mittente.
gerlos

Avevo provato su Debian 9.11 e anche l'opzione funziona.
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

quanto sopra è la mia soluzione ... eventuali intestazioni extra possono essere aggiunte subito dopo il from e prima della risposta a ... assicurati solo di conoscere la sintassi delle intestazioni prima di aggiungerle .... questo ha funzionato perfettamente per me.


1
Questo funziona per me con il tuo esempio ... Quando cambio l'oggetto dell'indirizzo e-mail, ecc., Tutte le intestazioni vengono visualizzate?
bsmoo


5

È anche possibile impostare sia il nome del mittente che l'indirizzo del mittente utilizzando qualcosa come:

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

Per qualche motivo passare -F'Some Name'e -fexample2@example.comnon funziona, ma passare -ta sendmail funziona ed è "facile".


4

Ecco alcune opzioni:

  • Se hai abbastanza privilegi, configura sendmail per riscrivere con la tabella generics

  • Scrivi tu stesso l'intera intestazione (o spediscila a te stesso, salva l'intero messaggio con tutte le intestazioni, modifica di nuovo e invialo con rmail dalla riga di comando

  • Invia direttamente con sendmail, utilizza il flag della riga di comando "-f" e non includere la riga "Da:" nel messaggio

Questi non sono tutti esattamente uguali, ma lascerò che tu lo approfondisca.

Sul mio portatile, ho sendmail che si autentica come client su un server di posta in uscita e utilizzo i generici per far arrivare la posta di ritorno a un altro account. Esso funziona magicamente. Aggrego la posta in arrivo con fetchmail.


4

L'ho dedotto da tutte le risposte precedenti. Niente ha funzionato per me quando ho provato ognuno di loro. Ho fatto un sacco di tracce ed errori combinando tutte le risposte di cui sopra e ho concluso su questo. Non sono sicuro che funzioni per te, ma ha funzionato per me su Ununtu 12.04 e 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>'

È possibile inviare la posta a un numero qualsiasi di persone aggiungendo un numero qualsiasi di ID del destinatario e la posta viene inviata da SenderName da from-id@email.com

Spero che questo ti aiuti.


questo non funziona vor / usr / bin / mail, forse il tuo comando è per sendmail.
basZero

3

Non so se è lo stesso con altri sistemi operativi, ma in OpenBSD, il comando mail ha questa sintassi:

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

sendmail ha l'opzione -f dove indichi l'indirizzo email per il campo DA :. Il seguente comando funziona per me.

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

Per me va bene! (Anche openBSD - Macbook pro.)
Aeonaut

1
Aggiorna: il destinatario dell'email vede ancora il nome del mio account locale from@example.com, ad esempio "Aeonaut from@example.com". Qualche idea su come cambiarlo?
Aeonaut

3
Non funziona per me. (os x mountain lion) "mail: non posso dare -f e persone a cui inviare."
Jonny

3

Grazie BEAU

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

Ho appena trovato questo e funziona per me. Le pagine man per la posta 8.1 su CentOS 5 non lo menzionano. Per -fopzione, la pagina man dice:

-f Legge i messaggi dal file denominato dall'operando del file anziché dalla casella di posta di sistema. (Vedi anche cartella.) Se non è specificato alcun operando file, leggi i messaggi da mbox invece che dalla casella di posta di sistema.

Quindi comunque questo è fantastico da trovare, grazie.


1
-fovviamente non è un'opzione per mailnel tuo esempio, poiché è preceduto da --. Questa opzione viene consegnata al tuo MTA
Anthon

3

Su Debian 7 non ero ancora in grado di impostare correttamente l'indirizzo del mittente usando le risposte a questa domanda, (sarebbe sempre stato il nome host del server) ma l'ho risolto in questo modo.

Installa heirloom-mailx

apt-get install heirloom-mailx

assicurati che sia l'impostazione predefinita.

update-alternatives --config mailx

Scrivi un messaggio.

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

Cosa sta update-alternativesfacendo questo comando? Mi dà 3 scelte e sono perplesso.
Stephane

1

Su CentOS questo ha funzionato per me:

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 ti consente di specificare molte opzioni di stringa, di gran lunga il modo più semplice per modificare le intestazioni e così via.


1

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

Funziona in OpenBSD.


0

questo ha funzionato per me

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

0

Su CentOS 5.5, il modo più semplice che ho trovato per impostare l'impostazione predefinita dal dominio è modificare il file hosts. Se il tuo file hosts contiene il tuo indirizzo IP pubblico / WAN, modifica semplicemente il primo nome host elencato per esso. Ad esempio, il tuo file hosts potrebbe avere il seguente aspetto:

...
11.22.33.44 localhost dominio predefinito qualunque-else.com
...

Per farlo inviare da qualunque-else.com, è sufficiente modificarlo in modo che qualunque-else.com sia elencato per primo, ad esempio:

...
11.22.33.44 whatever-else.com localhost default-dominio
...

Non posso parlare per nessun'altra distro (o anche versione di CentOS) ma nel mio caso particolare, quanto sopra funziona perfettamente.


0

Cosa mi ha permesso di avere un indirizzo personalizzato per le risposte su un Ubuntu 16.04conUTF-8 codifica e un file allegato:

Installa il client di posta:

sudo apt-get install heirloom-mailx

Modifica la configurazione SMTP:

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

Invia la 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

Nessuna delle soluzioni di cui sopra funziona per me ...

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

Le risposte fornite prima non hanno funzionato per me su CentOS5. Ho installato mutt. Ha molte opzioni. Con mutt lo fai in questo modo:

export EMAIL=myfrom@example.com
export REPLYTO=myreplyto@example.com
mutt -s Testing chris@example.org
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.