Я использую удаленный SMTP через nullmailer, и для него требуется установить поле From на определенное имя, но cron установил его как root@my.sweet.server.com.
Я не думаю, что вы можете изменить адрес 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"
Весь вывод передается в команду mail, поэтому переменная MAILTO вообще не используется.
Адрес to должен быть установлен, но вы можете использовать переменную $ MAILTO. Параметр - устанавливает остальные параметры как параметры sendmail, поэтому вы можете использовать параметры -r и -F.
-s это тема
-r является адресом ответа
-F - полное имя отправителя (делает его красивым в почтовых клиентах)
Современные версии 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.
Где "современный" означает что? Это не поддерживается самой последней версией cron в нестабильной Debian (3.0pl1-124) из того, что я вижу в журнале изменений или в документации.
Хлипкий
спасибо, это работало для меня на Archlinux. Существует много разных вкусов cron. ISC Debian выпущен в 2004 году, поэтому расширил определение «современный», но без информации о том, на какой системе он используется - трудно представить эту деталь!
RuiDC
1
К сожалению, cron в Ubuntu (по крайней мере на 14.04 LTS) не упоминается MAILFROMв man 5 crontab.
Арто Бендикен
4
Вы можете установить cronieзаменить cronна Debian / Ubuntu. Та-даа: MAILFROMсуществует:
Андреас Клёкнер
1
cronie не существует в Ubuntu 16.04
alex k
7
/ etc / mailname содержит часть имени домена адреса FROM. Если / etc / mailname содержит «somecompany.com», то для cron, работающего от имени root, будет отправитель root@somecompany.com.
Некоторая информация здесь: wiki.debian.org/EtcMailName - не говорит, использует ли это nullmailer. Я использую sendmail, и это, похоже, не работает для него.
Цитракс
5
Вы можете установить nullmailer по адресу через переменные окружения или командную строку. Аргументы командной строки -fи -Fдля адреса отправителя и для полного имени соответственно.
Обычно вы можете установить переменные окружения в crontab.
Он должен установить адрес «От» для владельца cronjob. Вы можете заменить $header_from:свой собственный адрес, если хотите жестко закодировать его как-нибудь еще.
Я должен был изменить /etc/mail/sendmail.cfи /etc/mail/sendmail.mc, потому что /etc/mailnameне был использован. Это только изменяет от домена, но не пользователя.
он отправляется по почте из домена user @ - user - это имя пользователя, под которым запускается cron, - поэтому вам нужно создать пользователя «me» - и запустить задание cron от имени этого пользователя.
Затем, чтобы изменить домен, есть разные возможности - может быть, вам нужно изменить запись в файле hosts (или, как на моем компьютере, когда я настраивал это - окно ubuntu) - изменить / etc / mailname - быть доменом, из которого вы хотите, чтобы он пришел.
На самом деле это не так - по крайней мере, во многих случаях. В моей системе, например, он отправляется только от пользователя, а не от пользователя @ домена. MTA несет ответственность за добавление локального доменного имени. Это важно в некоторых случаях (например, в моем), когда мой MTA (по причинам, слишком сложным и скучным для описания) не добавляет доменное имя.
Ответы:
Я не думаю, что вы можете изменить адрес FROM (кто-то должен добавить опцию MAILFROM).
Вы можете сделать что-то вроде этого, хотя для достижения аналогичного результата:
Весь вывод передается в команду mail, поэтому переменная MAILTO вообще не используется.
Адрес to должен быть установлен, но вы можете использовать переменную $ MAILTO. Параметр - устанавливает остальные параметры как параметры sendmail, поэтому вы можете использовать параметры -r и -F.
-s это тема
-r является адресом ответа
-F - полное имя отправителя (делает его красивым в почтовых клиентах)
источник
Современные версии cron принимают «MAILFROM = ...» в формате crontab. Я предлагаю вам попробовать "man 5 crontab". Если в нем упоминается MAILFROM, ваша версия должна его поддерживать. Фраза, которую нужно искать, находится в конце абзаца, где обсуждается MAILTO, и должна выглядеть примерно так:
источник
MAILFROM
вman 5 crontab
.cronie
заменитьcron
на Debian / Ubuntu. Та-даа:MAILFROM
существует:/ etc / mailname содержит часть имени домена адреса FROM. Если / etc / mailname содержит «somecompany.com», то для cron, работающего от имени root, будет отправитель root@somecompany.com.
источник
Вы можете установить nullmailer по адресу через переменные окружения или командную строку. Аргументы командной строки
-f
и-F
для адреса отправителя и для полного имени соответственно.Обычно вы можете установить переменные окружения в crontab.
источник
Для меня самый простой способ изменить адрес from в системе - это создать
~/.mailrc
файл с таким содержимым:Любая из
mail
команд, которые запускаются от моего пользователя, теперь используют эти настройки.источник
Смотрите этот вопрос, если используете exim:
exim: переписать заголовок "From" в конверт "FROM"
Он должен установить адрес «От» для владельца cronjob. Вы можете заменить
$header_from:
свой собственный адрес, если хотите жестко закодировать его как-нибудь еще.источник
Другой простой альтернативой является использование Mutt,
создайте .muttrc в домашнем каталоге пользователя, который запускает cron со следующим
set realname = "Joe User" set from = "user @ host" set use_from = yes
Запустите сценарий с командой Mutt или передайте команду cron, из которой Mutt отправляет электронную почту.
Прежде чем Mutt отправит и отправит электронное письмо, он установит заголовок From из файла .muttrc.
источник
Я должен был изменить
/etc/mail/sendmail.cf
и/etc/mail/sendmail.mc
, потому что/etc/mailname
не был использован. Это только изменяет от домена, но не пользователя.источник
Вот несколько вещей, которые вы можете использовать для изменения домена отправителя:
источник
он отправляется по почте из домена user @ - user - это имя пользователя, под которым запускается cron, - поэтому вам нужно создать пользователя «me» - и запустить задание cron от имени этого пользователя.
Затем, чтобы изменить домен, есть разные возможности - может быть, вам нужно изменить запись в файле hosts (или, как на моем компьютере, когда я настраивал это - окно ubuntu) - изменить / etc / mailname - быть доменом, из которого вы хотите, чтобы он пришел.
источник