Як змінити поле "From:" для електронних листів від Cron?


34

Я використовую віддалений SMTP через nullmailer, і він вимагає встановити From поле на конкретне ім'я, але cron встановить його як root@my.sweet.server.com.

Як я міг змінити це на щось на кшталт me@ya.ru?


Яка реалізація хронів (і ОС)?
Кімвай

Дивіться це питання: serverfault.com/questions/438843/… для іншого рішення.
Робін

Відповіді:


13

Я не думаю, що ви можете змінити адресу FROM (хтось повинен додати опцію MAILFROM).

Ви можете зробити щось подібне, хоча для досягнення подібного результату:

* * * * * /path/to/script 2>&1 | mail -s "Output of /path/to/script" toaddress@example.com -- -r "fromaddress@example.com" -F"Full Name of sender"

Весь вихід передається в поштову команду, тому змінна MAILTO взагалі не використовується.

Адресу потрібно буде встановити, але ви, можливо, зможете використовувати змінну $ MAILTO. - задає решту параметрів, які мають бути параметрами sendmail, щоб ви могли використовувати параметри -r та -F.

-s предмет

-r - адреса відповіді

-F - повне ім'я відправника (це добре виглядає в електронних клієнтах)


serverfault.com/a/437319/30697, ймовірно, має бути прийнятою відповіддю.
lkraav

34

Сучасні версії cron приймають "MAILFROM = ..." у форматі crontab. Я пропоную вам спробувати "man 5 crontab". Якщо він згадує MAILFROM, ваша версія повинна підтримувати його. Фраза, яку потрібно шукати, знаходиться в кінці абзацу, де обговорюється MAILTO, і має бути приблизно таким:

If MAILFROM is defined (and non-empty), it will be used as the envelope sender address, otherwise, ''root'' will be used.


6
Де "сучасне" означає що? Це не підтримується останньою версією cron в Debian нестабільно (3.0pl1-124), що я бачу в журналі змін або документації.
Flimzy

THX, це працювало для мене на Archlinux. Існує багато різних ароматів крону. ISC Debian починається з 2004 року, тому воно розтягує визначення "сучасного", але не маючи інформації про те, на якій системі він використовується - важко надати цю деталь!
RuiDC

1
На жаль, про крон Ubuntu (принаймні станом на 14.04 LTS) не згадується MAILFROMв man 5 crontab.
Арто Бендікен

4
Ви можете встановити cronieна заміну cronна Debian / Ubuntu. Ta-daa: MAILFROMіснує:
Andreas Klöckner

1
Кроні не існує на Ubuntu 16.04
alex k

7

/ etc / mailname містить частину доменного імені адреси FROM. Якщо / etc / mailname містить 'somecompany.com', то у cron, що працює для root, відправник має як root@somecompany.com


2
Деяка інформація тут: wiki.debian.org/EtcMailName - не говорить про те, чи використовує її nullmailer. Я використовую sendmail, і, здається, це не працює.
Zitrax

5

Ви можете встановити nullmailer з адреси за допомогою змінних середовища або командного рядка. Аргументи командного рядка - -fі -Fдля адреси відправника, і імені, відповідно.

Зазвичай ви можете встановити змінні середовища в crontab.

NULLMAILER_USER=webmaster
NULLMAILER_HOST=host.example.com
NULLMAILER_NAME="Mr Cron"

5 0 * * * /usr/local/bin/daily.sh

Він запитує про ВІД: не ДО:
Кімвайс

Гм, це не працює з невідомих причин.
Олександр Артеменко

3

Для мене найпростіший спосіб змінити адресу з системи в тому, щоб створити ~/.mailrcфайл із таким вмістом:

set name="My Full Name"
set from="myrealemail@example.com"

Будь-яка з mailкоманд, які виконуються як мій користувач, тепер використовуйте ці налаштування.


0

Дивіться це питання, якщо використовуєте Exim:

exim: Перепишіть заголовок "Від" до конверта "З"

Він повинен встановити адресу "Від" до власника компанії cronjob. Ви можете замінити $header_from:його власною адресою, якщо ви хочете жорстко кодувати її на щось інше.


0

Ще один простий замінник - використовувати mutt,

  • створіть .muttrc в домашній каталог користувача, який виконує cron із наступним

    set realname = "Joe User" set from = "user @ host" set use_from = так

  • Запустіть скрипт із командою mutt в ньому або передайте команду cron в mutt, щоб надсилати електронну пошту.

Перед тим, як mutt надсилає та надсилає електронну пошту, він встановить заголовок From з файлу .muttrc.


0

Я повинен був змінити /etc/mail/sendmail.cfі /etc/mail/sendmail.mc, тому що /etc/mailnameне був використаний. Однак він змінює лише домен, але не користувача.


0

Ось кілька речей, які можна застосувати, щоб змінити домен відправника:

Edit this file: /etc/mailname and change to:
    example.org
sudo postconf -e 'myhostname= example.org'
sudo systemctl restart postfix

-2

він надсилається по електронній пошті від користувача @ домену - користувачеві є ім’я для входу, під яким працює cron, - тож вам доведеться створити користувача «я» - і запустити завдання cron як цього користувача.

Потім, щоб змінити домен, існують різні можливості - можливо, вам потрібно змінити запис файлу хостів (або, як на моїй машині, коли я налаштовував це - поле ubuntu) - змінити / etc / mailname - бути доменом, з якого ви хочете.


1
Це насправді не так - принаймні, не у багатьох випадках. Наприклад, у моїй системі він надсилається лише від "user", а не "user @ domain". MTA несе відповідальність за додавання локального доменного імені. Це важливо в деяких випадках (наприклад, у мене), коли мій MTA (з причин, надто складних і нудних для опису) не додає доменне ім'я.
Flimzy
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.