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

Pruebas
.

rendimientos

Asunto: Prueba
Para: <chris@example.org>
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: foo@bar.org

Pruebas

La línea "De: foo@bar.org" es parte del cuerpo del mensaje, no parte del encabezado.


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

El resultado, en mis clientes de correo, es un correo de cms-sends@example.com, al que cualquier respuesta será predeterminada en cms-replies@example.com

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.


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

42

En Centos 5.3 puedo hacer:

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

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


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

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

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


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


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" example@example.com -- -F'Some Name<example2@example.com>' -t

Por alguna razón, pasar -F'Some Name'y -fexample2@example.comno funciona, pero pasar -ta sendmail funciona y es "fácil".


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.


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

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

Espero que esto ayude.


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

¡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 from@example.com, por ejemplo, "Aeonaut from@example.com". ¿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" user@address.com -- -f from@address.com

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.


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

¿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

1

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

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


1

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

Funciona en OpenBSD.


0

esto funcionó para mí

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

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.


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

Envíe el correo:

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

Ninguna de las soluciones anteriores me funciona ...

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

Las respuestas proporcionadas antes no me funcionaron en CentOS5. Instalé mutt. Tiene muchas opciones. Con mutt haces esto de esta manera:

export EMAIL=myfrom@example.com
export REPLYTO=myreplyto@example.com
mutt -s Testing chris@example.org
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.