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

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

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

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

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

Testing
.

дает

Subject: Testing
To: <[email protected]>
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: [email protected]

Testing

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

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

Vinko Vrsalovic 10.09.2008 21:25

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

Thomas Kammeyer 10.09.2008 21:33

О, но, извините, я использую GenToo.

Thomas Kammeyer 10.09.2008 21:35

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

Vinko Vrsalovic 10.09.2008 22:12

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

Thomas Kammeyer 10.09.2008 22:49

С man mail: -r address Sets the From address. Overrides any from variable specified in environment or startup files.

Kolob Canyon 06.04.2017 01:49
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
91
6
253 290
19
Перейти к ответу Данный вопрос помечен как решенный

Ответы 19

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

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

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

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

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

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

Ответ принят как подходящий

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

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

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

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

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

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

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

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

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

cms 19.12.2008 18:23

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

Chris Conway 19.12.2008 19:43

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

Chris Conway 19.12.2008 22:11

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

Chris Conway 19.12.2008 22:13

Спасибо за ответ. Мой / usr / bin / mail происходит из пакета mailx, который, как мне кажется, унаследован от BSD-mail. И большинство моих unix-машин - это BSD.

cms 20.12.2008 00:33

У меня это работает на Ubuntu, но я получаю mail: invalid option -- a на CentOS.

dave1010 06.02.2013 15:01

в CentOS опция mail -a означает «вложение». Мне нужно было использовать -r как mail -r [email protected]

equivalent8 11.02.2019 13:25

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

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

На Centos 5.3 я могу:

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

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

не работает. Теперь к адресу добавлено 3 адреса. адрес, адрес f и локальный домен

shorif2000 09.06.2014 19:43

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

Wil 16.01.2015 01:07

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

skytaker 14.05.2015 00:22

Команда 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

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

gerlos 04.06.2015 20:17

Я тестировал Debian 9.11, и этот вариант тоже работает.

Fedir RYKHTIK 12.03.2020 19:11

Спасибо BEAU

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

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

-f Read messages from the file named by the file operand instead of the system mailbox. (See also folder.) If no file operand is specified, read messages from mbox instead of the system mailbox.

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

-f, конечно, не подходит для mail в вашем примере, поскольку ему предшествует --. Эта опция передается вашему MTA

Anthon 08.02.2016 09:55

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

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

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

mail [email protected] -f [email protected]

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

Aeonaut 28.03.2012 06:23

Обновление - получатель электронной почты по-прежнему видит имя моей локальной учетной записи до [email protected], например, «Aeonaut [email protected]». Есть идеи, как это изменить?

Aeonaut 28.03.2012 06:35

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

Jonny 27.05.2013 09:54

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

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

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

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

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

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

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

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

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

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

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

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

bsmoo 11.07.2013 20:11

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

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

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

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

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

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

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

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

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

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

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

basZero 27.08.2020 11:38

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

Установить семейная реликвия

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")

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

Stephane 03.07.2017 16:54

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

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

эхо "тест" | mailx -r [email protected] -s 'test' [email protected]

Работает в OpenBSD.

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

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

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

Другие вопросы по теме