Змініть адресу “Від:” у “поштовій скриньці” 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

Тестування

Рядок "Від: foo@bar.org" є частиною тіла повідомлення, а не частиною заголовка.


1
Що це за смак Unix? а яка поштова версія? Просто щоб знати, де це не працює.
— Вінко Врсалович

Гм, майже всі. Той, хто використовує пошту mailx або berkeley, буде бачити це саме так. Якщо ви хочете вплинути на заголовок, напишіть весь заголовок і надішліть безпосередньо за допомогою rmail або sendmail.
— Thomas Kammeyer,

О, але, вибачте, я керую GenToo.
— Томас Каммаєр,

Для запису я використовую mailx, і приклад, який Кріс дає, працює. Або це ви мали на увазі?
— Вінко Врсалович

Вінко, яку версію UN * X ти використовуєш? Ви маєте на увазі під "роботами", що ви отримуєте його результати або що ви отримуєте бажану поведінку, яка відповідала б його потребі? Це певною мірою залежить від того, як працює надсилання повідомлень на вашій платформі, і чи додає клієнт порожній рядок до
— Thomas 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

Примітка: Користувачі Mac OS: у вас немає -a, але у вас є $ REPLYTO

Примітка (2): Користувачі CentOS, багато коментаторів додали, що вам потрібно використовувати -rне-a

Примітка (3): цій відповіді принаймні десять років (1), майте це на увазі, коли ви надходите з Google.


Я просто перевірив його ще раз тут, щоб переконатися, і він у мене чудово працює. Не всі поштові клієнти добре працюють з функцією Reply-To, але я міг подумати, що проблему вже вирішено. Змінна REPLYTO env згадується на сторінці довідки, інші поштові скриньки UNIX вшановують її, emacs тощо. Однак, я думаю, у вас є виправлення.
— cms

Я не думаю, що це поштовий клієнт ... Я не бачу заголовка Відповісти до тексту в необробленому тексті повідомлення. Але, так, -a цілком достатньо.
— Кріс Конвей

1
Ні, це не так. Але: "Повне керівництво по GNU mailutils недоступне в системах Debian через причини ліцензування." -aReply-To: ... працює.
— Кріс Конвей

Я також не бачу жодної згадки про REPLYTO на gnu.org/software/mailutils/manual/mailutils.html
— Кріс Конвей

4
у CentOS mail -aопція означає "Attachemnet". Мені потрібно було використовувати -rlikemail -r from@whatever.com
— equivalent 8

42

На Centos 5.3 я можу робити:

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

Подвійний тире зупиняє розбір пошти аргументу -f і передає його самому sendmail.


3
не працює. 3 адреси додаються до адреси зараз. адреса, адреса f та локальний домен
— shorif2000

2
Чи можете ви допомогти, це раніше працювало - але, оскільки нещодавнє оновлення, воно більше не працює, воно просто намагається додатково надіслати електронне повідомлення на адресу -f @ hostname
— Wil,

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 кореневий корінь 22 2010-12-23 08:33 / usr / bin / mail -> / etc / alternatives / mail
$ ls -l / etc / alternative / mail
lrwxrwxrwx 1 кореневий корінь 23 2010-12-23 08:33 / etc / alternatives / mail -> / usr / bin / heirloom-mailx

5
Можливо, може бути корисно дізнатись, що mailкоманда GNU mailutils, попередньо встановлена ​​на Ubuntu 14.04 LTS, підтримує -rопцію, тому ви можете легко встановити адресу відправника.
— gerlos

Я тестував на 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

Ось кілька варіантів:

  • Якщо у вас достатньо privelige, налаштуйте sendmail для перезаписів із загальною таблицею

  • Напишіть весь заголовок самостійно (або надішліть його собі, збережіть все повідомлення з усіма заголовками та повторно відредагуйте та надішліть його за допомогою 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

Сподіваюся, це допомагає.


це не працює vor / usr / bin / mail, можливо, ваша команда для sendmail.
— basZero

3

Я не знаю, чи так само з іншими ОС, але в OpenBSD поштова команда має такий синтаксис:

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 гірський лев) "пошта: Неможливо дати -f та людей, яким слід надіслати."
— Джонні,

3

Дякую BEAU

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

Я щойно знайшов це, і це працює для мене. Сторінки для електронної пошти 8.1 на CentOS 5 про це не згадують. Як -fваріант, на сторінці сторінки написано:

-f Читання повідомлень із файлу, названого операндом файлу, замість системної поштової скриньки. (Див. Також папку.) Якщо не вказано операнд файлу, читайте повідомлення з mbox замість системної поштової скриньки.

Тож у будь-якому випадку це чудово знайти, дякую.


1
-fзвичайно не є варіантом mailу вашому прикладі, оскільки йому передує --. Цей варіант передається вашому MTA
— Anthon

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. Якщо файл хостів містить вашу WAN / загальнодоступну IP-адресу, просто змініть перше ім'я хосту, вказане для нього. Наприклад, файл хостів може виглядати так:

...
11.22.33.44 домен за замовчуванням localhost whatever-else.com
...

Щоб змусити його надсилати з what-else.com, просто модифікуйте його так, щоб first-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.