Нюансы sendmail
Испокон веков одним из стандартов общения операционной системы с пользователем была электронная почта. Я не настолько старый, чтобы это застать, но во времена, когда работать надо было через терминал на сервере, где кроме тебя еще куча пользователей, и личных компов не было, это наверно было удобно.
Работает это довольно просто — глобально настраивается почтовый сервер, а дальше отдаешь команду вроде
echo "hello" | sendmail general@kenobi.sw
И все, письмо ушло адресату. Звучит весьма клево, но внимательный читатель должен был триггернуться на “глобально”.
Недавно выяснилось, что сервер, где такое настроено, выжирает дневной лимит писем в 50к за сутки, хотя предполагаемая нагрузка — 10 писем в день. Виртуалка выключена админами, и в голове мечутся мысли: взломали? Но кому такое надо? Может, ПО, использующее sendmail, сошло с ума?
Однако после разбирательств выяснилось, что столько писем слал… cron
. По умолчанию поведение системы такое, что любой stdout от него шлется пользователю на почту. Но на какую почту, ее же наверно надо задать? Разумеется, тут все предусмотрено: на почту user@host, и плевать, что она не существует. А как себя ведет себя с письмом на несуществующий адрес почтовый сервер? Правильно, пытается послать до посинения.
А надо было всего лишь отредактировать /etc/sysconfig/crond
, чтобы отключить отправку на почту и включить редирект в syslog:
CRONDARGS=-s -m off
рестартнуть crond
и почистить очередь:
exim -bp | exiqgrep -i | xargs exim -Mrm
Вы все еще любите глобальные настройки? Тогда мы идем к вам:)