Pergunta

Enviando uma mensagem da linha de comando do Unix usando mail TO_ADDR resulta em um e-mail de $USER@$HOSTNAME.Existe uma maneira de alterar o endereço "De:" inserido por mail?

Para constar, estou usando GNU Mailutils 1.1/1.2 no Ubuntu (mas vi o mesmo comportamento com Fedora e RHEL).

[EDITAR]

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

Testing
.

rendimentos

Subject: Testing
To: <chris@example.org>
X-Mailer: mail (GNU Mailutils 1.1)
Message-Id: <E1KdTJj-00025z-RK@localhost>
From: <chris@localhost>
Date: Wed, 10 Sep 2008 13:17:23 -0400

From: foo@bar.org

Testing

A partir de:foo@bar.org" faz parte do corpo da mensagem, não do cabeçalho.

Foi útil?

Solução

Na minha versão do mail (Debian linux 4.0) as seguintes opções funcionam para controlar os endereços de origem/resposta

  • o -a switch, para que cabeçalhos adicionais sejam aplicados, fornecendo um From:cabeçalho na linha de comando que será anexado ao cabeçalho do email de saída
  • o $REPLYTO variável de ambiente especifica uma resposta para:cabeçalho

então a seguinte sequência

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

O resultado, em meus clientes de e-mail, é um e-mail de cms-sends@example.com, para o qual qualquer resposta será padronizada como cms-replies@example.com

Observação: Usuários de Mac OS:você não tem -a , mas você tem $REPLYTO

Observação(2): Usuários do CentOS, muitos comentaristas acrescentaram que você precisa usar -r não -a

Observação(3): Esta resposta tem pelo menos dez anos (1). Tenha isso em mente quando vier do Google.

Outras dicas

No Centos 5.3 sou capaz de fazer:

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

O traço duplo impede que o mail analise o argumento -f e o passa para o próprio sendmail.

O comando 'mail' do GNU mailutils não permite que você faça isso (pelo menos facilmente).Mas se você instalar 'heirloom-mailx', seu comando mail (mailx) terá a opção '-r' para substituir o campo '$USER@$HOSTNAME' padrão.

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

Funciona para 'mailx', mas não para '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
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

a solução acima é minha... qualquer cabeçalho extra pode ser adicionado logo após from e antes da resposta para... apenas certifique-se de conhecer a sintaxe dos cabeçalhos antes de adicioná-los... isso funcionou perfeitamente para mim.

Além disso, é bom usar -F option para especificar o nome do remetente.

Algo assim:

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

Ou apenas veja as opções disponíveis:http://www.courier-mta.org/sendmail.html

Também é possível definir o nome do remetente e o endereço do remetente usando algo como:

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

Por algum motivo passando -F'Some Name' e -fexample2@example.com não funciona, mas passar no -t enviar email funciona e é "fácil".

Aqui estão algumas opções:

  • Se você tiver privilégios suficientes, configure o sendmail para reescrever a tabela genérica

  • Escreva você mesmo o cabeçalho inteiro (ou envie-o para você mesmo, salve a mensagem inteira com todos os cabeçalhos, edite-a novamente e envie-a com rmail a partir da linha de comando

  • Envie diretamente com sendmail, use o sinalizador de linha de comando "-f" e não inclua a linha "De:" em sua mensagem

Não são todos exatamente iguais, mas deixarei que você analise mais detalhadamente.

No meu portátil, tenho o sendmail autenticado como cliente para um servidor de e-mail de saída e uso genéricos para fazer com que o e-mail retornado chegue a outra conta.Ele funciona como um encanto.Eu agrego mensagens recebidas com fetchmail.

Não sei se é o mesmo com outros sistemas operacionais, mas no OpenBSD, o comando mail tem esta sintaxe:

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

sendmail tem a opção -f onde você indica o endereço de e-mail para o FROM:campo.O comando a seguir funciona para mim.

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

Obrigado BEAU

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

Acabei de encontrar isso e funciona para mim.As páginas de manual do mail 8.1 no CentOS 5 não mencionam isso.Para -f opção, a página de manual diz:

-f Leia mensagens do arquivo nomeado pelo operando do arquivo em vez da caixa de correio do sistema.(Consulte também pasta.) Se nenhum operando de arquivo for especificado, leia as mensagens do mbox em vez da caixa de correio do sistema.

De qualquer forma, é ótimo encontrar isso, obrigado.

Eu derivei isso de todas as respostas acima.Nada funcionou para mim quando experimentei cada um deles.Eu cometi muitos erros ao combinar todas as respostas acima e concluí sobre isso.Não tenho certeza se isso funciona para você, mas funcionou para mim no Ununtu 12.04 e no 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>'

Pode-se enviar a correspondência para qualquer número de pessoas adicionando qualquer número de IDs de destinatário e a correspondência é enviada por Nome do remetente de from-id@email.com

Espero que isto ajude.

No Debian 7 ainda não consegui definir corretamente o endereço do remetente usando as respostas desta pergunta (sempre seria o nome do host do servidor), mas resolvi desta forma.

Instalar herança-mailx

apt-get install heirloom-mailx

certifique-se de que seja o padrão.

update-alternatives --config mailx

Redija uma mensagem.

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

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

-S permite especificar muitas opções de string, de longe a maneira mais fácil de modificar cabeçalhos e coisas assim.

No CentOS isso funcionou para mim:

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

isso funcionou para mim

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

No CentOS 5.5, a maneira mais fácil que encontrei de definir o padrão do domínio é modificar o arquivo hosts.Se o seu arquivo hosts contiver seu endereço WAN/IP público, simplesmente modifique o primeiro nome de host listado para ele.Por exemplo, seu arquivo hosts pode ser parecido com:

...
11.22.33.44 domínio padrão do host local seja lá o que for.com
...

Para enviá-lo de qualquer outro.com, basta modificá-lo para que qualquer outro.com seja listado primeiro, por exemplo:

...
11.22.33.44 seja lá o que for.com domínio padrão localhost
...

Não posso falar de nenhuma outra distro (ou mesmo versão do CentOS), mas no meu caso particular, o acima funciona perfeitamente.

eco "teste" | Mailx -r fake@example.com -s 'teste' e -mail@example.com

Funciona no OpenBSD.

O que me permitiu ter um endereço de resposta personalizado em um Ubuntu 16.04 com UTF-8 codificação e um anexo de arquivo:

Instale o cliente de e-mail:

sudo apt-get install heirloom-mailx

Edite a configuração SMTP:

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

Envie o e-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)

Nenhuma das soluções acima está funcionando para mim ...

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

As respostas fornecidas antes não funcionaram para mim no CentOS5.Eu instalei o vira-lata.Tem muitas opções.Com o vira-lata você faz assim:

export EMAIL=myfrom@example.com
export REPLYTO=myreplyto@example.com
mutt -s Testing chris@example.org
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top