2008-09-10 2 views
75

Отправка сообщения из командной строки Unix с использованием mail TO_ADDR приводит к электронному письму от [email protected]$HOSTNAME. Есть ли способ изменить адрес «От:», вставленный mail?Измените адрес «От:» в почтовом сообщении «Unix»

Для записи я использую GNU Mailutils 1.1/1.2 на Ubuntu (но я видел такое же поведение с Fedora и RHEL).

[EDIT]

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

Testing 
. 

дает

 
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 

"От: [email protected]" линия является частью тела сообщения, а не часть заголовка.

+1

Какой вкус Unix это? и какую почтовую версию? Просто знать, где это не работает. – 2008-09-10 17:25:50

+0

Ум, почти все. Любой, кто использует почту mailx или berkeley, увидит это именно так. Если вы хотите повлиять на заголовок, напишите весь заголовок и отправьте его напрямую через rmail или sendmail. – 2008-09-10 17:33:57

+0

О, но, извините, я запустил GenToo. – 2008-09-10 17:35:12

ответ

87

В моей версии почты (Debian Linux 4.0) следующие варианты работы для управления источником/ответ Адреса

  • -a переключатель, для дополнительных заголовков применить, снабжающий From: заголовок на командная строка, которая будет добавлена ​​к исходящей почте заголовку
  • переменных сред $ REPLYTO определяет Reply-To: заголовок

, так что следующая последовательность

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

В результате, в моих почтовых клиентов, это письмо от [email protected], что все ответы на по умолчанию будет [email protected]

NB: пользователи Mac OS: у вас нет -a, но у вас есть $ REPLYTO

+0

-a работает как очарование! Но REPLYTO не работает вообще ... – 2008-12-19 14:47:22

+0

Я только что проверил его здесь, чтобы убедиться, и он отлично работает для меня. Не все почтовые клиенты хорошо работают с Reply-To, но я бы подумал, что это проблема. Переменная окр REPLYTO упоминается в справочной странице, Другие почтовые программы UNIX чтить его, Emacs и т.д. Тем не менее, я думаю, вы должны исправить. – cms 2008-12-19 15:23:33

4

Вот некоторые варианты:

  • Если вы privelige достаточно, настроить Sendmail, чтобы сделать перезапись с таблицей дженериков

  • Напиши весь заголовок самостоятельно (или отправить его к себе, сохранить целое сообщение со всеми заголовками и повторно отредактировать и отправить его с помощью rmail из командной строки

  • Отправлять непосредственно с помощью sendmail, использовать флаг командной строки «-f» и не включать строку «От:» в вашем сообщении

Это не все точно так же, но я оставлю это вам в дальнейшем.

На моем портативном компьютере у меня есть sendmail, аутентифицирующийся как клиент на исходящем почтовом сервере, и я использую дженерики, чтобы вернуть почту в другую учетную запись. Отлично работает. Я собираю входящую почту с помощью fetchmail.

41

На Centos 5.3 Я могу сделать:

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

Двойного тир останавливает почту от разбора аргумента -f и передает его вместе с Sendmail себя.

17

Команда GNU mailutils 'mail' не позволяет вам сделать это (по крайней мере, легко). Но если вы установите «heirloom-mailx», его почтовая команда (mailx) имеет параметр «-r», чтобы переопределить значение по умолчанию «$ USER @ $ HOSTNAME» из поля.

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

Работы для «mailx», но не «почта».

 
$ 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 
3

Благодаря BEAU

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

Я только что нашел это, и это работает для меня. Страницы руководства для почты 8.1 на CentOS 5 не упоминают об этом. На странице -f на странице руководства написано:

-f Чтение сообщений из файла, названного файловым операндом, вместо системного почтового ящика. (См. Также папку.) Если операнд файла не указан, прочитайте сообщения из mbox вместо системного почтового ящика.

Так что в любом случае это здорово найти, спасибо.

3

Я не знаю, если это то же самое с другой ОС, но в OpenBSD, команда почты имеет следующий синтаксис:

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

Sendmail имеет опцию -f, где указать адрес электронной почты для FROM: поле. Для меня работает следующая команда.

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

На CentOS 5.5 самым простым способом определения по умолчанию из домена является изменение файла hosts. Если ваш файл hosts содержит ваш WAN/общедоступный IP-адрес, просто измените имя первого хоста, указанное для него. Например, файл хостов может выглядеть следующим образом:

...
11.22.33.44 LOCALHOST по умолчанию-домен whatever-else.com
...

Чтобы сделать это отправьте с сайта whatever-else.com, просто измените его так, чтобы в списке указывалось any-else.com, например:

...
11.22.33.44 whatever-else.com локальные по умолчанию домен
...

Я не могу говорить за любой другой дистрибутив (или даже версия CentOS), но в моем конкретном случае, выше работает отлично.

7

Плюс хорошо использовать -F option, чтобы указать имя отправителя.

Что-то вроде этого:

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

Или просто посмотреть на доступные варианты: 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 

выше мое решение .... любые дополнительные заголовки могут быть добавлены только после того, как из и перед ответом ... просто убедитесь, что вы знаете свой синтаксис заголовков, прежде чем добавлять их ... это отлично сработало для меня.

5

Также можно установить как от имени и с адреса, используя что-то вроде:

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

По какой-то причине, проходящей -F'Some Name' и [email protected] не работает, но переходящим в -t к Sendmail работает и " легко".

1

На CentOS это работало для меня:

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

Я получил это из всех приведенных выше ответов. Ничего не работало для меня, когда я пробовал каждую из них. Я сделал много ошибок и ошибок, объединив все приведенные выше ответы и заключил об этом. Я не уверен, что это работает для вас, но это сработало для меня в Ununtu 12.04 и 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]>' 

можно отправить почту на любое количество людей путем добавления любого количества приемников идентификаторов и почта отправляется SenderName из [email protected]

Надеются, что это помогает ,

3

В Debian 7 Я все еще не мог правильно установить адрес отправителя, используя ответы на этот вопрос (всегда будет имя хоста сервера), но разрешил его таким образом.

Установите реликвия-mailx

apt-get install heirloom-mailx 

обеспечить его по умолчанию.

update-alternatives --config mailx 

Написать письмо.

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

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

-S позволяет задавать множество вариантов строки, самым простым способом для изменения заголовков и такие.

0

Что позволило мне иметь пользовательский адрес для ответа на Ubuntu 16.04 с UTF-8 кодирования и вложенного файла:

Установка почтового клиента:

sudo apt-get install heirloom-mailx 

Редактировать конфигурацию SMTP:

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

Отправить письмо:

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) 
Смежные вопросы