Инструменты пользователя

Инструменты сайта


raspberry_pi:pi_4_model_b:raspberry_pi_os:bash:send_mail

Отправка почты из консоли или скрипта на Raspberry Pi OS

Не с первой попытки раскололся этот орешек, не с первой, зараза! Вроде бы все просто – поставил клиент-SMTP, отправил письмо! Но нет, это же Линукс, будь он не ладен! О, есть же Интернет, всемирная паутина, там есть все! Но, опять же, нет! Все то все, да не все в одном месте – чтобы понять, как тут настроить банальную отправку почты, пришлось усиленно искать и, как говорится, собирать информацию по крупицам, т.к. в одном месте одно не работает, в другом – что-то другое…

Причем задача стояла реализовать это максимально просто – без использования многофункциональных программ или хитрых настроек.

Установка

И так, для реализации понадобятся два пакета, которые устанавливаются, как обычно:

  1. sudo apt update && sudo apt upgrade;
  2. sudo apt install ssmtp mailutils.

Дело, к слову, происходит на Raspberry Pi 4 Model B, что не важно, с установленной Raspberry Pi OS 11 (bullseye), что уже важнее.

Настройка

Открыть файл конфигурации ssmtp sudo nano /etc/ssmtp/ssmtp.conf и, если вкратце, заменить его следующим1):

root=root@domain.zone
 
mailhub=smtp.domain.zone
 
hostname=server.domain.int
 
FromLineOverride=NO
 
AuthUser=root@domain.zone
AuthPass=Pa$$W0Rd
 
UseSTARTTLS=NO
UseTLS=NO

Думаю, тут все понятно. Первое, это от какого имени отправлять письма для пользователей с id < 1000, т.е. системных. Последние 2, скорее всего, можно опустить, т.к. «UseTLS» по умолчанию и так выключен, а вот «UseSTARTTLS» не понятно, в мане не сказано.

«FromLineOverride» в положении «YES», указывает на возможность перезаписи имени отправителя опцией «-F», к примеру, «-F"My Server"».

Далее открыть sudo nano /etc/ssmtp/revaliases и добавить в него псевдоним для пользователя «pi»2) и «root»3):

pi:root@domain.zone:smtp.domain.zone
root:root@domain.zone:smtp.domain.zone

Если этого не сделать, то письма будут пытаться отправлять от имени «pi@server.domain.int», что, скорее всего, заставит SMTP-сервер отклонить сообщение.

На этом, собственно, все.

:!: Стоит только упомянуть, что эта конфигурация заточена на работу с внутренним релеем4), поэтому отключено все, кроме пароля, который, к слову, тоже можно в данном случае опустить…

Использование

Для проверки конфигурации можно выполнить echo "Тестовое сообщение!" | ssmtp -v admin@domain.zone5).

Для полноценной работы, необходимо использовать утилиту «mail» с примерно таким синтаксисом – echo "Тело сообщения" | mail -s "Mail subject" admin@domain.zone.

Чтобы использовать русский язык в теме, ее необходимо закодировать в Base64 и разместить внутри конструкции:

=?UTF-8?B?____________?=

К примеру, – echo "Тело сообщения" | mail -s =?UTF-8?B?0J/RgNC40LLQtdGCIHdvcmxkIQ==?= admin@domain.zone6).

Другой вариант:

{ echo To: admin@domain.zone; echo From: "\"Backup\" <backup@domain.zone>"; echo Subject: mov files greater than 1M; echo Message\nBody; } | ssmtp -v admin@domain.zone

Вообще, хороший кейс использования можно найти в этой статье… Блин, эту бы переписать… гг


Дисклеймер

  • Использование материалов данной базы знаний разрешено на условиях лицензии, указанной внизу каждой страницы! При использовании материалов активная гиперссылка на соответствующую страницу данной базы знаний обязательна!
  • Автор не несет и не может нести какую либо ответственность за последствия использования материалов, размещенных в данной базе знаний. Все материалы предоставляются по принципу «как есть». Используйте их исключительно на свой страх и риск.
  • Все высказывания, мысли или идеи автора, размещенные в материалах данной базе знаний, являются исключительно его личным субъективным мнением и могут не совпадать с мнением читателей!
  • При размещении ссылок в данной базе знаний на интернет-страницы третьих лиц автор не несет ответственности за их техническую функциональность (особенно отсутствие вирусов) и содержание! При обнаружении таких ссылок, можно и желательно сообщить о них в комментариях к соответствующей статье.
1)
Часть настроек подсмотрена тут.
2)
Или какой вам нужен…
3)
В реальности, вне зависимости от настройки выше, пользователь «root», если не указать его тут, пытается отправить сообщение от имени «root@domain.zone», что вызывает ошибку 550.
4)
Схема такая – сервера шлют почту на внутренний SMTP-сервер, который для авторизации вообще ничего не требует, был бы IP отправителя в белом списке, и, уже используя полноценную авторизацию и шифрование, пересылает на внешний корпоративный сервер.
5)
Здесь и далее в теле письма русский язык поддерживается полностью.
6)
Обрамлять тему в кавычки не нужно!

Обсуждение

Ваш комментарий:
Q L G L​ U B​ L O P A V B I V I F
 
Последнее изменение: 2023/05/13 12:28 — Николай Солошин