2008-09-10 34 views
75

Enviando un mensaje desde la línea de comandos de Unix usando mail TO_ADDR resulta en un correo electrónico de [email protected]$HOSTNAME. ¿Hay alguna manera de cambiar la dirección "De:" insertada por mail?Cambiar la dirección "De:" en Unix "mail"

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

[EDIT]

 
$ mail -s Testing [email protected]                 
Cc: 
From: [email protected] 

Testing 
. 

produce

 
Subject: Testing 
To: <[email protected]> 
X-Mailer: mail (GNU Mailutils 1.1) 
Message-Id: <[email protected]> 
From: <[email protected]> 
Date: Wed, 10 Sep 2008 13:17:23 -0400 

From: [email protected] 

Testing 

El "From: [email protected]" línea es parte del cuerpo del mensaje, no parte de la cabecera.

+1

¿Qué sabor de Unix es esto? y que versión de correo? Solo para saber dónde eso no funciona. –

+0

Um, casi todo. Cualquiera que use mailx o berkeley lo verá de esa manera. Si desea afectar el encabezado, escriba el encabezado completo y envíe con rmail o sendmail directamente. –

+0

Oh, pero, lo siento, corro GenToo. –

Respuesta

87

En mi versión de correo (Debian Linux 4.0) las siguientes opciones funcionan para controlar la fuente/respuesta direcciones

  • el interruptor -a, para las cabeceras adicionales a aplicar, el suministro de una cabecera From: en la línea de comandos que se añadirá a la cabecera del correo saliente
  • la variable de entorno $ replyTo especifica un Reply-To:

por lo que 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], que cualquier respuesta a tome por defecto [email protected]

NB: usuarios de Mac OS: usted no tiene -a, pero tiene $ replyTo

+0

-a funciona como un encanto! Pero REPLYTO no funciona en absoluto ... –

+0

Acabo de probarlo aquí para asegurarme, y funciona bien para mí. No todos los clientes de correo funcionan bien con Reply-To, pero a estas alturas ya habría pensado que era un problema resuelto. La variable de env REPLYTO se menciona en la página de manual, otros publicitarios de UNIX lo respetan, emacs, etc. Aún así, supongo que tiene una solución. – cms

+0

No creo que sea el cliente de correo ... No veo el encabezado Responder en el texto del mensaje sin formato. Pero, sí, -a es suficiente. –

4

Estas son algunas opciones:

  • Si ha privelige suficiente, configurar Sendmail hacer reescrituras con la tabla de los genéricos

  • a grabar toda la cabecera del mismo (o por correo a ti mismo, guardar el mensaje completo con todos los encabezados, y reeditar, y enviarlo con rmail desde la línea de comando

  • Enviar directamente con sendmail, use el distintivo de línea de comando "-f" y no incluya su línea "De:" en tu mensaje

Estos no son todos exactamente iguales, pero lo dejaré para que lo investigue más a fondo.

En mi portátil, tengo sendmail autenticando como un cliente a 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. Agrega el correo entrante con fetchmail.

41

En Centos 5.3 soy capaz de hacer:

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

El doble guión se detiene el correo de analizar el argumento -f y lo pasa junto a sendmail en sí.

+0

Funciona muy bien para mí, también. – Rannick

+2

Esto parece funcionar en CentOS pero no en Ubuntu. – dave1010

+1

no funciona. 3 direcciones se agregan a la dirección ahora. la direccion, la direccion f y el dominiolocal – shorif2000

17

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' del campo.

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

Funciona para 'mailx' pero no 'correo'.

 
$ 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 
+4

Quizás podría ser útil saber que el comando GNU mailutils 'mail' preinstalado en Ubuntu 14.04 LTS admite la opción' -r', por lo que puede establecer fácilmente la dirección del remitente. – gerlos

3

Gracias BEAU

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

Acabo de encontrar este y funciona para mí. Las páginas man para el correo 8.1 en CentOS 5 no mencionan esto. Para la opción -f, la página man dice:

-f Lea los 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, esto es genial para encontrar, gracias.

+1

'-f' por supuesto no es una opción para' mail' en su ejemplo, ya que está precedido por '--'. Esa opción se entrega a su MTA – Anthon

3

No sé si es lo mismo con otro sistema operativo, pero en OpenBSD, el comando electrónico tiene la siguiente sintaxis:

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

Sendmail tiene la opción -f en el que indique la dirección de correo electrónico para la DE: campo. El siguiente comando funciona para mí.

mail [email protected] -f [email protected] 
+0

¡Funciona para mí! (También openBSD - Macbook pro.) – Aeonaut

+1

Actualización: el destinatario del correo electrónico aún ve el nombre de mi cuenta local antes de 'from @ example.com' - por ejemplo," Aeonaut 'from @ example.com'". ¿Alguna idea de cómo cambiar esto? – Aeonaut

+1

No funciona para mí. (os x mountain lion) "mail: No se puede dar -f y personas a las que enviar". – Jonny

0

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

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

Para que sea enviar desde whatever-else.com, sólo tiene que modificar para que whatever-else.com aparece en primer lugar, por ejemplo:

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

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

7

Además, es bueno usar -F option para especificar el nombre del remitente.

Algo como esto:

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

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

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 

lo anterior es mi solución .... cualquier encabezado adicional se puede agregar a continuación de la de y antes de la respuesta a ... solo asegúrate de conocer la sintaxis de los encabezados antes de agregarlos ... esto funcionó perfectamente para mí.

+0

Esto funciona para mí con tu ejemplo ...Cuando cambio el asunto de la dirección de correo electrónico, etc. ¿se muestran todos los encabezados? – bsmoo

+0

esto funciona para mí en netBSD – jedi

+0

no funcionó en Mac OS (yosemite) – xaphod

5

También es posible configurar tanto el A partir de nombre y de la dirección de usar algo como:

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

Por alguna razón que pasa -F'Some Name' y [email protected] no funciona, pero que pasa en el -t a Sendmail funciona y es " fácil".

1

en CentOS Esto funcionó para mí:

echo "email body" | mail -s "Subject here" -r from_email_address email_address_to 
2

Lo obtuve de todas las respuestas anteriores. Nada funcionó para mí cuando probé cada uno de ellos. Hice mucho camino y error al combinar todas las respuestas anteriores y concluí sobre 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]>' 

Uno puede enviar el correo a cualquier número de personas mediante la adición de cualquier número de ID del receptor y el correo es enviado por SenderName de [email protected]

Espero que esto ayude .

3

En Debian 7 Todavía no podía establecer correctamente la dirección del remitente con las respuestas de esta pregunta (siempre sería el nombre de host del servidor) pero lo resolví de esta manera.

Instalar herencia-mailx

apt-get install heirloom-mailx 

asegurar que es el valor predeterminado.

update-alternatives --config mailx 

Redactar un mensaje.

mail -s "Testing from & replyto" -r "sender <[email protected]>" -S replyto="[email protected]" [email protected] < <(echo "Test message") 
+0

¿Qué está haciendo el comando 'update-alternatives'? Me da 3 opciones y estoy perplejo. – Stephane

2

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

-S le permite especificar un montón de opciones de cadena, con mucho, la forma más fácil de modificar las cabeceras y tal.

0

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

Instalar el cliente de correo:

sudo apt-get install heirloom-mailx 

Editar la configuración de SMTP:

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

Enviar el correo electrónico:

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) 
Cuestiones relacionadas