Назад | Перейти на главную страницу

Почтовая команда Linux работает не так, как раньше

Я использовал следующую почтовую команду в своем crontab, которая работала безупречно, пока мы не переустановили наш почтовый сервер в прошлую пятницу:

echo "Testing 123" | mail -s "ECS PostDate Processed" "layton.everson@gmail.com chrish@mycreditcompany.com" -- -r "noreply@mycreditcompany.com" -F "ServerCronJobs"

ранее "-" перенаправлял параметры командной строки в sendmail для отправки от имени и добавлял адрес для ответа. Теперь кажется, что - игнорируется, и все дополнительные параметры обрабатываются как адреса электронной почты. так что электронное письмо будет:

from root <root@mycompany.com>
to me, chrish, -r, noreply, -F, ServerCronJobs

Чего сейчас не хватает?

Вероятно, вы получили другую версию команды «mail» с обновлением ОС, и у нее нет тех же параметров.

Почему бы просто не использовать sendmail напрямую? Это стандартизованная команда, которую всегда эмулируют MTA Unix, и она хорошо разработана для использования в сценариях:

( 
  echo "Subject: ECS PostDate Processed"
  echo "To: example.1@gmail.com, example2@mycreditcompany.com"
  echo "Reply-To: noreply@example.com"
  echo "From: ServerCronJobs <root@mycompany.com>"
  echo
  echo "Testing 123"
) | /usr/sbin/sendmail -oi -t

Это можно сделать ( echo ; echo ; echo ) | sendmail стиль вместо того, чтобы поместиться на одной линии.

Или, если это все просто echo вместо команды где-нибудь в этом канале замените "здесь документом":

/usr/sbin/sendmail -oi -t <<EOT
Subject: ECS PostDate Processed
To: example.1@gmail.com, example2@mycreditcompany.com 
Reply-To: noreply@example.com
From: ServerCronJobs <root@mycompany.com>

Testing 123

EOT