Измените адрес "От:" в почтовом ящике Unix

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

Для записи я использую 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

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

Ответ 1

В моей версии почты (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

Ответ 2

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

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

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

Ответ 3

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

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

Работает для "mailx", но не "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

Ответ 4

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

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

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

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

Или просто посмотрите доступные варианты: http://www.courier-mta.org/sendmail.html

Ответ 6

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

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

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

Ответ 7

Вот несколько вариантов:

  • Если у вас достаточно прав, настройте sendmail для перезаписи с таблицей generics

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

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

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

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

Ответ 8

Спасибо BEAU

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

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

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

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

Ответ 9

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

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

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

mail [email protected] -f [email protected]

Ответ 10

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

Надеюсь, что это поможет.

Ответ 11

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

Установите heirloom-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")

Ответ 12

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

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

Ответ 13

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

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

Ответ 14

это сработало для меня

echo "hi root"|mail [email protected] -s'testinggg' root

Ответ 15

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

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

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

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

Я не могу говорить ни о каком другом дистрибутиве (или даже версии CentOS), но в моем конкретном случае это работает отлично.

Ответ 17

Что позволило мне создать настраиваемый ответ на адрес в кодировке 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)

Ответ 18

Ни одно из вышеперечисленных решений не работает для меня...

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

Ответ 19

Ответы, представленные ранее, не работали для меня на CentOS5. Я установил mutt. У него много вариантов. С помощью mutt вы делаете это следующим образом:

export [email protected]
export [email protected]
mutt -s Testing [email protected]