From aced10bf89af73432c74d79072efdbb85fb37ce8 Mon Sep 17 00:00:00 2001 From: Gleb-Kiselev <87761996+Gleb-Kiselev@users.noreply.github.com> Date: Thu, 4 May 2023 16:13:47 +0300 Subject: [PATCH 1/4] ssmtp added --- content/14_SSMTP.rst | 151 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 151 insertions(+) create mode 100644 content/14_SSMTP.rst diff --git a/content/14_SSMTP.rst b/content/14_SSMTP.rst new file mode 100644 index 0000000..ce52c1c --- /dev/null +++ b/content/14_SSMTP.rst @@ -0,0 +1,151 @@ +SSMTP и электронная почта +########################### + +:date: 2023-05-04 +:summary: SSMTP и электронная почта +:status: published +:author: Киселев Г. А., Дорохович В. А., Семенова Д. К. + +.. default-role:: code +.. contents:: Содержание + + +Теоретическая часть +==================== + +Представим следующую ситуацию: на сервере запускается долго работающий скрипт (например, вычисляющий большие простые числа), и мы хотим получать от сервера уведомления по электронной почте о том, что скрипт работает нормально. Для этих целей можно использовать утилиты SSMTP и Mailutil. Они позволяют атоматизировать отправку электронной почты. Для этого применяется SMTP (Simple Mail Transport Protocol) - протокол передачи данных, используемый для отправки электронной почты. + + +Установка SSMTP +---------------- +Для установки SSMTP и Mailutils запустите следующие команды: + +.. code-block:: bash + + sudo apt-get install ssmtp + sudo apt-get install mailutil + +После установки необходимо настроить конфигурацию. Для этого запустите команду: + +.. code-block:: bash + + sudo nano /etc/ssmtp/ssmtp.conf + +В текстовом редакторе Nano откроется конфигурвционный файл ssmtp.conf. Для использования почты Gmail туда необходимо вставить следующие строки кода: + +.. code-block:: bash + + root=<адрес>@gmail.com + mailhub=smtp.gmail.com:587 + hostname=smtp.gmail.com:587 + UseSTARTTLS=YES + AuthUser=<адрес>@gmail.com + AuthPass=<пароль> + FromLineOverride=YES + +Важно! В поле **AuthPass** нужно вводить не пароль от аккаунта Google, а специальный пароль для почтового приложения, который необходимо сгенерировать в настройках Google-аккаунта. +Это можно сделать по следующей ссылке: . Пароли для приложений можно создать только в том случае, когда для аккаунта включена двухфакторная аутентификация, поэтому предварительно включите её, если она у вас отключена. + +Для сохранения конфигурационного файла нажмите Ctrl+O. Далее необходимо внести изменения в другой конфигурационный файл. Запустите команду: + +.. code-block:: bash + + sudo nano /etc/ssmtp/revaliases + +Туда необходимо вставить следующую строчку: + +.. code-block:: bash + + root: <адрес>@gmail.com:smtp.gmail.com:587 + +Сохраняем файл. Установка и настройка конфигурации завершены. + + +Использование SSMTP +------------------------ + +Простейший способ использовать ssmtp - следующая команда: + +.. code-block:: bash + + echo "текст_письма" | mail -s "тема_письма" <адрес_получателя>@gmail.com + +Более интересно применять SSMTP внутри bash-скрипта. Например, создадим следующий скрипт: + +.. code-block:: bash + + #!/bin/bash + for i in `seq 0 9` + do + echo $i | mail -s "Hello from server" <адрес-получателя>@phystech.edu + sleep 2 + done + +Такой скрипт каждые 2 секунды будет отправлять на указанный электронный адрес письмо с темой "Hello from server", а текст сообщения будет представлять собой число от 0 до 9. Всего будет отправлено 10 писем. + +Рассмотрим более интересный пример: рассылка письма нескольким пользователям. Для начала создадим файл emails.txt, в который поместим список адресатов. + +.. code-block:: bash + + <адрес1>@gmail.com + <адрес2>@yandex.ru + <адрес3>@phystech.edu + +Далее создадим bash-скрипт mailing.sh: + +.. code-block:: bash + + #!/bin/bash + + file=emails.txt + + + while read -r line; + do + echo "Hello, $line" | mail -s "Рассылка" $line + + done < "$file" + +Этот скрипт на каждый из указанных адресов отправит письмо с темой "Рассылка" и текстом "Hello, <адрес>" + +Можно усовершенствовать этот пример, добавив возможность рассылки текста из файла нескольким адресатам. Для этого создадим файл letter.txt, в котором напишем текст письма: + + To be, or not to be, that is the question: + Whether 'tis nobler in the mind to suffer + The Slings and Arrows of outrageous Fortune + Or to take arms against a sea of troubles, + And by opposing, end them. To die, to sleep; + No more; and by a sleep to say we end + The heart-ache and the thousand natural shocks + That flesh is heir to — 'tis a consummation + Devoutly to be wish'd. + +Отредактируем файл mailing.sh: + +.. code-block:: bash + + #!/bin/bash + + file=emails.txt + + + while read -r line; + do + cat letter.txt | mail -s "Hello, $line" $line + + done < "$file" + +Теперь скрипт будет рассылать по указанным адресам текст письма из файла. + + +Практическая часть +================== + +Задачи +-------- + +#. Реализуйте описанный выше пример. + +#. Напишите скрипт, который каждые 10 секунд рассылает почтовым адресам из файла информацию о процессах, запущенных в системе. *Указание: список запущенных процессов можно посмотреть командой "ps aux"* + +#. Модифицируйте пример из введения так, чтобы он отправлял письмо с текстом из файла не по всем почтовым адресам, а только принадлежащим домену phystech.edu. \ No newline at end of file From 45df924c7f04da2c1a72f04c5b0d8580819a1e55 Mon Sep 17 00:00:00 2001 From: Gleb Date: Thu, 4 May 2023 16:17:32 +0300 Subject: [PATCH 2/4] file renamed --- content/{14_SSMTP.rst => SSMTP.rst} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename content/{14_SSMTP.rst => SSMTP.rst} (100%) diff --git a/content/14_SSMTP.rst b/content/SSMTP.rst similarity index 100% rename from content/14_SSMTP.rst rename to content/SSMTP.rst From 88749b656d3beb0c9873ab5196c2853123e01e7a Mon Sep 17 00:00:00 2001 From: Gleb Date: Thu, 4 May 2023 16:29:35 +0300 Subject: [PATCH 3/4] file edited --- content/SSMTP.rst | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/content/SSMTP.rst b/content/SSMTP.rst index ce52c1c..a79c21f 100644 --- a/content/SSMTP.rst +++ b/content/SSMTP.rst @@ -44,7 +44,7 @@ SSMTP и электронная почта FromLineOverride=YES Важно! В поле **AuthPass** нужно вводить не пароль от аккаунта Google, а специальный пароль для почтового приложения, который необходимо сгенерировать в настройках Google-аккаунта. -Это можно сделать по следующей ссылке: . Пароли для приложений можно создать только в том случае, когда для аккаунта включена двухфакторная аутентификация, поэтому предварительно включите её, если она у вас отключена. +Это можно сделать по следующей ссылке: https://myaccount.google.com/apppasswords. Пароли для приложений можно создать только в том случае, когда для аккаунта включена двухфакторная аутентификация, поэтому предварительно включите её, если она у вас отключена. Для сохранения конфигурационного файла нажмите Ctrl+O. Далее необходимо внести изменения в другой конфигурационный файл. Запустите команду: @@ -64,7 +64,7 @@ SSMTP и электронная почта Использование SSMTP ------------------------ -Простейший способ использовать ssmtp - следующая команда: +Простейший способ использовать SSMTP - следующая команда: .. code-block:: bash @@ -148,4 +148,4 @@ SSMTP и электронная почта #. Напишите скрипт, который каждые 10 секунд рассылает почтовым адресам из файла информацию о процессах, запущенных в системе. *Указание: список запущенных процессов можно посмотреть командой "ps aux"* -#. Модифицируйте пример из введения так, чтобы он отправлял письмо с текстом из файла не по всем почтовым адресам, а только принадлежащим домену phystech.edu. \ No newline at end of file +#. Модифицируйте пример из введения так, чтобы он отправлял письмо с текстом из файла не по всем почтовым адресам, а только принадлежащим домену phystech.edu. From db9113971f837aacdcbd6350142809825f77324f Mon Sep 17 00:00:00 2001 From: Gleb Date: Thu, 4 May 2023 16:33:35 +0300 Subject: [PATCH 4/4] some changes --- content/SSMTP.rst | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/content/SSMTP.rst b/content/SSMTP.rst index a79c21f..5a5ecb3 100644 --- a/content/SSMTP.rst +++ b/content/SSMTP.rst @@ -110,6 +110,8 @@ SSMTP и электронная почта Можно усовершенствовать этот пример, добавив возможность рассылки текста из файла нескольким адресатам. Для этого создадим файл letter.txt, в котором напишем текст письма: +.. code-block:: text + To be, or not to be, that is the question: Whether 'tis nobler in the mind to suffer The Slings and Arrows of outrageous Fortune @@ -119,7 +121,8 @@ SSMTP и электронная почта The heart-ache and the thousand natural shocks That flesh is heir to — 'tis a consummation Devoutly to be wish'd. - + + Отредактируем файл mailing.sh: .. code-block:: bash