
Я начал писать скрипты, которые делают резервные копии моих файлов журнала. Всякий раз, когда в файле журнала обнаруживается ошибка, я хочу отправить себе письмо. Однако я хочу убедиться, что мой сервер не скомпрометирован, так как я слышал, что установка smtp/mail открывает новые возможности для хакеров.
Есть ли инструмент, который не получает электронные письма, а может только отправлять их? Также, какие соображения безопасности мне следует принять во внимание при его установке?
решение1
Однако я хочу убедиться, что мой сервер не взломан, так как я слышал, что установка smtp/mail открывает новые возможности для хакеров.
Любойсервис может «открыть новые возможности для хакеров», еслинаписано плохо.Но для почты и Postfix, и Exim4 очень безопасны.
(В целом, все будет в порядке, если только вы не используете Sendmail десятилетней давности. Текущие версии безопасны, но я бы в любом случае рекомендовал держаться подальше от Sendmail — файл конфигурации не совсем удобочитаем.)
Существует ли инструмент, который не получает электронные письма, а может только отправлять их?
Любой MTA (Postfix, Exim4, Sendmail) может работать таким образом – просто настройте его на прослушивание только адресов обратной связи ( ::1
и 127.0.0.1
). Вы даже можете полностью отключить компонент SMTP – большинство программ Unix не требуют его и отправляют почту через /usr/sbin/sendmail
1 , что делает SMTP ненужным.
Хотя это действительно не нужно против "хакеров". Худшее, что вы можете получить с приличным MTA, это оставить его открытым для ретрансляции – и конфигурации по умолчанию уже позаботились об этом.
Другой вариант — msmtp
, который даже не имеет полной поддержки SMTP — все, что он может делать, это ретранслировать почту через другой почтовый сервер, например Gmail или вашего интернет-провайдера. Но хотя он полезен для персонального компьютера, он не очень подходит для серверной среды.
1 " /usr/sbin/sendmail
" — это программа, которая идет свсеMTA, в то время как «Sendmail» — это названиеспецифическийМТА.
решение2
Отправка почты из скрипта оболочки довольно проста, если у вас установлен стандартный MTA (Postfix, Exim4, Sendmail и т. д.). Обычно для отправки вы можете использовать команду mail
с соответствующими аргументами, передавая содержимое вашего письма в программу. Например:
echo "Error occurred in script at `date`" | mail -s "Error running script" [email protected]
аргумент -s
указывает тему, а затем следует получатель электронного письма.
Другой пример
grep -i error /path/to/yourfile.log | mail -s "Errors from script execution" [email protected]
Проверьте man mail
наличие дополнительных вариантов.
Другой вариант, если вы запускаете свой скрипт через cron, — это заставить cron автоматически отправлять вам по электронной почте вывод вашего скрипта. Добавьте опцию MAILTO
в ваш crontab следующим образом:
[email protected]
и вы будете получать электронное письмо с выводом из stdout каждый раз при запуске вашего скрипта.
Что касается безопасности, отправка и получение электронной почты — это две совершенно разные вещи. Вы можете отправлять электронную почту со своего сервера без запуска принимающего почтового сервера, просто не запускайте демон smtp или блокируйте доступ к входящему порту 25 (SMTP) через брандмауэр, если вам не нужно получать электронную почту через этот сервер.