Всем привет.
Потребовалось организовать отправку почты после отработки скрипта. Скрипт в cron’е, создает лог работы и потом должен сформировать письмо.
Ну тут самое простое — просто лог в тело письма добавить и отправить получателю. Задача немного не тривиальная для меня, как оказалось.
Сразу скажу, что версия «Астры» без каких-либо обновлений, т.ч. программу которую я использовал для тестов старой версии, в которой нет нужного ключа. Т.ч. если у вас есть какие-то обновления, которые уже имеют обновленную версию пакета, то что-то возможно будет проще.
Начнём…
Я сначала пробовал использовать утилиту mailx, но версия, которая в системе не содержит ключа для прикрепления файла. Но для просто тестирования отправки почты норм.
Установка пакета:
1 | sudo apt install bsd-mailx |
Попробуем выполнить тестовую отправку письма:
1 | echo "Проверка отправки письма." | mailx -v -s "ТЕСТ ПОЧТЫ" [example@example.ru] |
где:
- -v — для подробного вывода
- -s — задать тему сообщения
Вывод команды:
Как видно почта не отправилась. В моём случае сервер над переконфигурировать. Для этого выполнить команду:
1 | sudo dpkg-reconfigure exim4-config |
Запустится мастер настройки. Далее будут скрины с настройками, но я делал для себя, т.ч. у вас могут быть другие настройки. Здесь в качестве примера.
Общий тип почтовой конфигурации: интернет-сайт
Почтовое имя системы: оставил пустым
Список IP-адресов: оставил пустым
Места назначения: оставил пустым
Домены: оставил пустым
Релейная передача почты: указал свою подсеть
DNS-запросы: нет
Место доставки почты: оставил по умолчанию
Разделение конфигурации: нет
На этом мастер завершит работу.
Пробуем еще раз отправить почту… и как будто бы ушло:
На рабочую почту пришло:
На Яндексе попало в «СПАМ»
Но вся беда в том, что mailx не умеет отправлять файлы в виде вложений (в той версии пакета, что идет в составе дистрибутива), т.ч. если это Вам надо, то надо установить mutt:
1 | sudo apt install mutt |
Создадим тестовый файл с произвольным содержимым (тут просто для примера):
1 | echo "THIS IS TEST MAIL FILE" > mail_file_test.txt |
И попробуем отправить почту уже с вложенным файлом с помощью установленной программы mutt:
1 | echo "Проверка отправки письма с файлом." | mutt -s "ТЕСТ ПОЧТЫ" -a mail_file_test.txt -- [mail] |
На рабочую пришло нормально:
В Яндекс так же с «СПАМ» попало, т.ч. пришлось перенести во входящие, что бы вложение посмотреть:
Если отправка файлов не нужна, то можно сразу вставить содержимое в тело письма:
1 | mailx -s "ТЕСТ ПОЧТЫ" < mail_file_test.txt [mail] |
Вот так это будет выглядеть:
На этом всё.
If you found an error, highlight it and press Shift + Enter or to inform us.