Как изменить имя отправителя (а не адрес электронной почты) при использовании команды linux mail для автоматической отправки почты?

Почтовый ящик показывает имя отправителя как "Apache", потому что почта, которую я обрабатываю, отправляется из программы Perl CGI. Как изменить его на что-то еще?

Ответы

Ответ 1

Вам просто нужно добавить заголовок From:. По умолчанию его нет.

echo "Test" | mail -a "From: Someone <[email protected]>" [email protected]

Вы можете добавить любые пользовательские заголовки, используя -a:

echo "Test" | mail -a "From: Someone <[email protected]>" \
                   -a "Subject: This is a test" \
                   -a "X-Custom-Header: yes" [email protected]

Ответ 2

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

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

Ответ 3

Вы можете использовать параметр "-r" для установки адреса отправителя:

mail -r [email protected] -s ...

Если вы также хотите включить свое реальное имя в поле, вы можете использовать следующий формат

mail -r "[email protected] (My Name)" -s "My Subject" ...

Ответ 4

Если в заголовках электронной почты не указан заголовок From:, MTA использует полное имя текущего пользователя, в данном случае "Apache". Вы можете редактировать полные имена пользователей в файле/etc/passwd

Ответ 5

Это зависит от того, какой адрес отправителя вы говорите. Адрес отправителя, видимый в почтовой программе получателей, извлекается из заголовка "From:". которые, вероятно, могут быть легко установлены из вашей программы.

Если вы говорите о адресе отправителя конверта SMTP, вы можете передать аргумент -f в двоичный файл sendmail. В зависимости от конфигурации сервера вам не разрешается делать это с пользователем Apache.

из sendmail manpage:

   -f <address>
                 This  option  sets  the  address  of the envelope sender of a
                 locally-generated message (also known as  the  return  path).
                 The  option  can normally be used only by a trusted user, but
                 untrusted_set_sender can be set to allow untrusted  users  to
                 use it. [...]

Ответ 6

В Ubuntu 14.04 ни одно из этих предложений не работало. Postfix будет переопределяться с зарегистрированным системным пользователем в качестве отправителя. В результате было указано следующее решение, перечисленное по этой ссылке → Изменить адрес исходящей почты от root @servername - postfix postgrid postclock

ШАГОВ:

1) Убедитесь, что он установлен в /etc/postfix/main.cf:

   smtp_generic_maps = hash:/etc/postfix/generic

2) echo 'www-data [email protected]' → /etc/postfix/generic

3) sudo postmap/etc/postfix/generic

4) перезагрузка sudo service postfix