Измените адрес «От:» в «почте» Unix.


89

Отправка сообщения из командной строки Unix с использованием mail TO_ADDRрезультатов в электронном письме от $USER@$HOSTNAME. Есть ли способ изменить адрес "От:", вставленный пользователем mail?

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

[РЕДАКТИРОВАТЬ]

$ mail -s Тестирование chris@example.org                                                                  
Копия: 
От: foo@bar.org

Тестирование
.

дает

Тема: Тестирование
Кому: <chris@example.org>
X-Mailer: почта (GNU Mailutils 1.1)
Идентификатор сообщения: <E1KdTJj-00025z-RK @ localhost>
От: <chris @ localhost>
Дата: среда, 10 сентября 2008 г. 13:17:23 -0400

От: foo@bar.org

Тестирование

Строка «From: foo@bar.org» является частью тела сообщения, а не заголовком.


1
Что это за разновидность Unix? а какая версия почты? Просто чтобы знать, где это не работает.
— Винко Врсалович

Гм, почти все. Любой, кто пользуется mailx или berkeley mail, увидит это таким. Если вы хотите изменить заголовок, напишите весь заголовок и отправьте напрямую с помощью rmail или sendmail.
— Томас Каммейер,

О, но, извините, я использую GenToo.
— Томас Каммейер,

Для записи я использую mailx, и приведенный Крисом пример работает. Или ты это имел в виду?
— Винко Врсалович

Винко, а какая у тебя версия UN * X? Вы имеете в виду под словом «работает», что вы получаете его результаты или желаемое поведение, которое отвечало бы его потребностям? Это зависит в некоторой степени от того, как представление сообщений работает на вашей платформе , и добавляет ли клиент пустую строку перед
— Томас Kammeyer

Ответы:


109

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

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

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

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

В результате в моих почтовых клиентах получается письмо с адреса cms-sends@example.com, и все ответы на него по умолчанию будут на cms-replies@example.com.

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

NB (2): пользователи CentOS, многие комментаторы добавили, что вам нужно -rне использовать-a

NB (3). Этому ответу не менее десяти лет (1), имейте это в виду, когда будете приходить из Google.


Я просто проверил его снова здесь, чтобы убедиться, и он отлично работает для меня. Не все почтовые клиенты хорошо работают с Reply-To, но я думал, что к настоящему времени это решенная проблема. Переменная REPLYTO env упоминается на странице руководства, другие почтовые программы UNIX уважают ее, emacs и т. Д. Тем не менее, я думаю, у вас есть исправление.
— cms

Я не думаю, что это почтовый клиент ... Я не вижу заголовок Reply-To в необработанном тексте сообщения. Но да, -a достаточно.
— Крис Конвей,

1
Нет, это не так. Но: «Полное руководство GNU mailutils недоступно в системах Debian по причинам лицензирования». -aReply-To: ... работает.
— Крис Конвей,

Я также не вижу никакого упоминания о REPLYTO в gnu.org/software/mailutils/manual/mailutils.html
— Chris Conway

4
в CentOS mail -aопция означает «аттачемнет». Мне нужно было использовать -rподобноеmail -r from@whatever.com
— эквивалент8

42

На Centos 5.3 я могу:

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

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


3
не работает. Теперь к адресу добавлено 3 адреса. to address, f-адрес и localdomain
— шориф2000 09

2
Можете ли вы помочь, раньше это работало, но после недавнего обновления оно больше не работает, оно просто пытается дополнительно отправить электронное письмо на -f @ hostname
— Вил

1
Не работает на CentOS 6.3. Попробуйте ответить @ ubuntu-fanboy ниже, используя флаг -r.
— Skytaker

26

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

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

Работает для mailx, но не для mail.

$ ls -l / usr / bin / mail
lrwxrwxrwx 1 root root 22 23 декабря 2010 г. 08:33 / usr / bin / mail -> / etc / alternatives / mail
$ ls -l / и т. д. / альтернативы / почта
lrwxrwxrwx 1 root root 23 23 декабря 2010 08:33 / etc / alternatives / mail -> / usr / bin / heirloom-mailx

5
Возможно, было бы полезно узнать, что mailкоманда GNU mailutils, предустановленная в Ubuntu 14.04 LTS, поддерживает -rопцию, поэтому вы можете легко установить адрес отправителя.
— gerlos 04

Я тестировал Debian 9.11, и этот вариант тоже работает.
— Федор РЫХТИК,

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

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


1
Это работает для меня с вашим примером ... Когда я меняю тему адреса электронной почты и т. Д., Отображаются все заголовки?
— bsmoo

7

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

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

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

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


5

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

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

По какой-то причине передача так -F'Some Name'и -fexample2@example.comне работает, но передача в -tsendmail работает и «легко».


4

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

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

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

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

Это не совсем одно и то же, но я оставлю это на ваше усмотрение.

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


4

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

Можно отправить письмо любому количеству людей, добавив любое количество идентификаторов получателя, и письмо будет отправлено SenderName с from-id@email.com

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


это не работает в / usr / bin / mail, возможно, ваша команда предназначена для sendmail.
— basZero

3

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

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

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

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

Работает для меня! (Также openBSD - Macbook pro.)
— Aeonaut

1
Обновление - получатель электронной почты по-прежнему видит имя моей локальной учетной записи раньше from@example.com- например, «Aeonaut from@example.com». Есть идеи, как это изменить?
— Aeonaut

3
У меня не работает. (os x mountain lion) "mail: нельзя давать -f и кому послать."
— Джонни

3

Спасибо BEAU

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

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

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

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


1
-fконечно, не вариант для mailвашего примера, так как ему предшествует --. Этот вариант передан вашему MTA
— Антон

3

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

Установить heirloom-mailx

apt-get install heirloom-mailx

убедитесь, что это значение по умолчанию.

update-alternatives --config mailx

Напишите сообщение.

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

Что update-alternativesделает эта команда? Это дает мне 3 варианта, и я озадачен.
— Стефан


1

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

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



0

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

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

0

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

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

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

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

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


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

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

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

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

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

Предоставленные ранее ответы не помогли мне в CentOS5. Я установил mutt. Вариантов много. С mutt вы делаете это следующим образом:

export EMAIL=myfrom@example.com
export REPLYTO=myreplyto@example.com
mutt -s Testing chris@example.org
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.