Cambiar la dirección "De:" en el "correo" de Unix

89

Enviar un mensaje desde la línea de comandos de Unix usando mail TO_ADDR da como resultado un correo electrónico de $USER@$HOSTNAME. ¿Hay alguna forma de cambiar la dirección "De:" insertada por mail?

Para que conste, estoy usando GNU Mailutils 1.1 / 1.2 en Ubuntu (pero he visto el mismo comportamiento con Fedora y RHEL).

[EDITAR]

$ mail -s Prueba [email protected]                                                                  
Cc: 
De: [email protected]

Pruebas
.

rendimientos

Asunto: Prueba
Para: <[email protected]>
X-Mailer: correo (GNU Mailutils 1.1)
Id. De mensaje: <E1KdTJj-00025z-RK @ localhost>
De: <chris @ localhost>
Fecha: miércoles, 10 de septiembre de 2008 13:17:23 -0400

De: [email protected]

Pruebas

La línea "De: [email protected]" es parte del cuerpo del mensaje, no parte del encabezado.

Chris Conway
fuente
1
¿Qué sabor de Unix es este? y que versión de correo? Solo para saber dónde eso no funciona.
Vinko Vrsalovic
Um, casi todos. Cualquiera que use mailx o berkeley mail lo verá de esa manera. Si desea afectar el encabezado, escriba el encabezado completo y envíelo con rmail o sendmail directamente.
Thomas Kammeyer
Oh, pero, lo siento, ejecuto GenToo.
Thomas Kammeyer
Para que conste, estoy usando mailx y el ejemplo que da Chris funciona. ¿O es eso lo que quisiste decir?
Vinko Vrsalovic
Vinko, ¿qué versión de UN * X estás ejecutando? ¿Quiere decir con "obras" que obtiene sus resultados o que obtiene el comportamiento deseado que abordaría su necesidad? Depende en cierto grado de cómo funciona el envío de mensajes en su plataforma y si el cliente agrega una línea en blanco antes del
Thomas Kammeyer

Respuestas:

109

En mi versión de correo (Debian linux 4.0), las siguientes opciones funcionan para controlar las direcciones de origen / respuesta

  • el modificador -a , para que se apliquen encabezados adicionales, proporcionando un encabezado De: en la línea de comando que se agregará al encabezado del correo saliente
  • la variable de entorno $ REPLYTO especifica un encabezado Responder a:

entonces la siguiente secuencia

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

El resultado, en mis clientes de correo, es un correo de [email protected], al que cualquier respuesta será predeterminada en [email protected]

NB: Usuarios de Mac OS: no tiene -a, pero tiene $ REPLYTO

NB (2): usuarios de CentOS, muchos comentaristas han agregado que es necesario -rno usar-a

NB (3): Esta respuesta tiene al menos diez años (1), téngalo en cuenta cuando llegue desde Google.

cms
fuente
Lo probé nuevamente aquí para asegurarme, y funciona bien para mí. No todos los clientes de correo funcionan bien con Responder a, pero habría pensado que ya era un problema resuelto. La variable REPLYTO env se menciona en la página de manual, otros correos de UNIX la honran, emacs, etc. Aún así, supongo que tiene una solución.
cms
No creo que sea el cliente de correo ... No veo el encabezado Responder a en el texto del mensaje sin procesar. Pero, sí, -a es suficiente.
Chris Conway
1
No, no es así. Pero: "El manual completo de GNU mailutils no está disponible en los sistemas Debian por razones de licencia". -aReply-To: ... funciona.
Chris Conway
Tampoco veo ninguna mención de REPLYTO en gnu.org/software/mailutils/manual/mailutils.html
Chris Conway
4
en CentOS, la mail -aopción significa "attachemnet". Necesitaba usar -rlikemail -r [email protected]
equivalente8
42

En Centos 5.3 puedo hacer:

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

El guión doble evita que el correo analice el argumento -f y lo pasa a sendmail.

Galán
fuente
3
No funciona. Se agregan 3 direcciones a la dirección ahora. la dirección to, la dirección f y el dominio local
shorif2000
2
¿Pueden ayudar? Esto solía funcionar, pero, desde una actualización reciente, ya no funciona, solo intenta enviar un correo electrónico adicional a -f @ hostname
Wil
1
No funciona en CentOS 6.3. Pruebe la respuesta de @ ubuntu-fanboy a continuación usando la bandera -r.
skytaker
26

El comando 'mail' de GNU mailutils no le permite hacer esto (al menos fácilmente). Pero si instala 'heirloom-mailx', su comando de correo (mailx) tiene la opción '-r' para anular el campo predeterminado '$ USER @ $ HOSTNAME'.

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

Funciona para 'mailx' pero no para 'mail'.

$ ls -l / usr / bin / mail
lrwxrwxrwx 1 raíz raíz 22 2010-12-23 08:33 / usr / bin / mail -> / etc / alternativas / mail
$ ls -l / etc / alternativas / mail
lrwxrwxrwx 1 raíz raíz 23 2010-12-23 08:33 / etc / alternativas / mail -> / usr / bin / heirloom-mailx
ubuntu-fanboy
fuente
5
Quizás podría ser útil saber que el mailcomando GNU mailutils preinstalado en Ubuntu 14.04 LTS admite la -ropción, por lo que puede configurar fácilmente la dirección del remitente.
gerlos
Probé en Debian 9.11 y la opción también funciona.
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

lo anterior es mi solución ... se pueden agregar encabezados adicionales justo después del de y antes de la respuesta a ... solo asegúrese de conocer la sintaxis de sus encabezados antes de agregarlos ... esto funcionó perfectamente para mí.

Musgo
fuente
1
Esto me está funcionando con tu ejemplo ... Cuando cambio el asunto de la dirección de correo electrónico, etc., ¿se muestran todos los encabezados?
bsmoo
7

Además, es bueno usarlo -F optionpara especificar el nombre del remitente.

Algo como esto:

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

O simplemente mire las opciones disponibles: http://www.courier-mta.org/sendmail.html

artickl
fuente
5

También es posible establecer tanto el nombre de remitente como la dirección de remitente usando algo como:

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

Por alguna razón, pasar -F'Some Name'y [email protected]no funciona, pero pasar -ta sendmail funciona y es "fácil".

Alcanzar
fuente
4

A continuación se muestran algunas opciones:

  • Si tiene privelige lo suficiente, configure sendmail para hacer reescrituras con la tabla de genéricos

  • Escriba el encabezado completo usted mismo (o envíelo por correo electrónico, guarde el mensaje completo con todos los encabezados, vuelva a editarlo y envíelo con rmail desde la línea de comando

  • Envíe directamente con sendmail, use la marca de línea de comando "-f" y no incluya su línea "De:" en su mensaje

No son todos exactamente iguales, pero dejaré que lo investigues más a fondo.

En mi portátil, tengo sendmail que se autentica como cliente en un servidor de correo saliente y uso genéricos para hacer que el correo que regresa llegue a otra cuenta. Funciona a las mil maravillas. Agrego el correo entrante con fetchmail.

Thomas Kammeyer
fuente
4

Derivé esto de todas las respuestas anteriores. Nada funcionó para mí cuando probé cada uno de ellos. Hice muchos rastros y errores al combinar todas las respuestas anteriores y concluí con esto. No estoy seguro de si esto funciona para usted, pero funcionó para mí en Ununtu 12.04 y 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]>'

Se puede enviar el correo a cualquier número de personas agregando cualquier número de identificación de destinatario y el correo es enviado por SenderName desde [email protected]

Espero que esto ayude.

deepak.prathapani
fuente
esto no funciona para / usr / bin / mail, tal vez su comando sea para sendmail.
basZero
3

No sé si es lo mismo con otros sistemas operativos, pero en OpenBSD, el comando de correo tiene esta sintaxis:

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

sendmail tiene la opción -f donde se indica la dirección de correo electrónico para el campo DE :. El siguiente comando funciona para mí.

mail [email protected] -f [email protected]
Ryan Barong
fuente
¡Funciona para mi! (También openBSD - Macbook pro.)
Aeonaut
1
Actualización: el destinatario del correo electrónico todavía ve el nombre de mi cuenta local antes [email protected], por ejemplo, "Aeonaut [email protected]". ¿Alguna idea de cómo cambiar esto?
Aeonaut
3
No me funciona. (os x mountain lion) "mail: No se puede dar -f y personas a las que enviar".
Jonny
3

Gracias BEAU

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

Acabo de encontrar esto y funciona para mí. Las páginas de manual para correo 8.1 en CentOS 5 no mencionan esto. Para la -fopción, la página del manual dice:

-f Leer mensajes del archivo nombrado por el operando del archivo en lugar del buzón del sistema. (Consulte también la carpeta). Si no se especifica ningún operando de archivo, lea los mensajes de mbox en lugar del buzón del sistema.

De todos modos, es genial encontrarlo, gracias.

gbla
fuente
1
-fPor supuesto, no es una opción para mailsu ejemplo, ya que está precedido por --. Esa opción se entrega a su MTA
Anthon
3

En Debian 7 todavía no pude configurar correctamente la dirección del remitente usando las respuestas de esta pregunta (siempre sería el nombre de host del servidor) pero lo resolví de esta manera.

Instalar heirloom-mailx

apt-get install heirloom-mailx

asegúrese de que sea el predeterminado.

update-alternatives --config mailx

Redacta un mensaje.

mail -s "Testing from & replyto" -r "sender <[email protected]>" -S replyto="[email protected]" [email protected] < <(echo "Test message")
gelatina
fuente
¿Qué está update-alternativeshaciendo este comando? Me da 3 opciones y estoy desconcertado.
Stephane
1

En CentOS esto funcionó para mí:

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

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

-S le permite especificar muchas opciones de cadena, con mucho la forma más fácil de modificar encabezados y demás.

Andrew Backeby
fuente
0

En CentOS 5.5, la forma más fácil que he encontrado de establecer el dominio predeterminado es modificar el archivo de hosts. Si su archivo de hosts contiene su dirección IP pública / WAN, simplemente modifique el primer nombre de host que aparece. Por ejemplo, su archivo de hosts puede verse así:

...
11.22.33.44 localhost dominio predeterminado cualquiera sea el otro.com
...

Para hacer que se envíe desde cualquier-else.com, simplemente modifíquelo para que cualquier cosa-else.com aparezca primero, por ejemplo:

...
11.22.33.44 whatever-else.com localhost por defecto en el dominio
...

No puedo hablar por ninguna otra distribución (o incluso versión de CentOS) pero en mi caso particular, lo anterior funciona perfectamente.

papsy
fuente
0

Lo que me permitió tener una dirección de respuesta personalizada en una Ubuntu 16.04con UTF-8codificación y un archivo adjunto:

Instale el cliente de correo:

sudo apt-get install heirloom-mailx

Edite la configuración de SMTP:

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

Envíe el correo:

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

Ninguna de las soluciones anteriores me funciona ...

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