Страницы

2 ноября 2018 г.

Arch Linux. Отправка содержимого файла почтовым сообщением по расписанию



Установить ssmtp:
sudo pacman -S ssmtp

Отредактировать файл конфигурации ssmtp
sudo nano /etc/ssmtp/ssmtp.conf

Удалить все из /etc/ssmtp/ssmtp.conf и вставляем это:
mailhub=smtp.gmail.com:587
UseTLS=YES
UseSTARTTLS=YES
hostname=ubuntu
authuser=******@gmail.com
authpass=***********
FromLineOverride=YES
Debug=YES

где:
smtp.gmail.com:587 - реквизиты SMTP Gmail (не менять, если ящик на Gmail);
UseTLS=YES, UseSTARTTLS=YES, FromLineOverride=YES - должно присутствовать для авторизации на Gmail;
hostname=ubuntu - имя хоста отправителя;
authuser=******@gmail.com - почтовый ящик отправителя;
authpass=*********** - пароль к почтовому ящику отправителя.

Отредактировать файл revaliases
sudo nano /etc/ssmtp/revaliases

Удалить все из /etc/ssmtp/revaliases и вставляем это:
username:mymailbox@gmail.com:smtp.gmail.com:587

где:
username - имя пользователя в системе (изменить на свое значение);
mymailbox@gmail.com - почтовый ящик отправителя на Gmail (изменить на свое значение);
smtp.gmail.com:587 - реквизиты SMTP Gmail (не менять, если ящик на Gmail).

Установить пакет sendmail из AUR.
Смотрим, куда ведет mail
whereis mail

Видим строку следующего вида:
mail: /usr/bin/mail.mailutils /usr/bin/mail /etc/mail /usr/share/man/man1/mail.1.gz

Проверить симлинк:
cd /usr/sbin && ls -l | grep sendmail

Видим что-то вида:
lrwxrwxrwx 1 root root         5 фев 18  2017 sendmail -> ssmtp

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

Синтаксис такой:
echo "Тестовое сообщение" | ssmtp -v -s <получатель>@domain.com

Пример:
echo "Это тестовое письмо из консоли" | ssmtp -v -s mymail@inbox.ru

Вывод консоли примерно такой:
[<-] 220 smtp.gmail.com ESMTP p128sm754712lfb.32 - gsmtp
[->] EHLO ubuntu
[<-] 250 SMTPUTF8
[->] STARTTLS
[<-] 220 2.0.0 Ready to start TLS
[->] EHLO ubuntu
[<-] 250 SMTPUTF8
[->] AUTH LOGIN
[<-] 334 VXBlcm5hbXU6
[->] bXkuYjB0Y2tiYHhAZ21haWwuY29t
[<-] 334 UGFzc3vvcmQ6
[<-] 235 2.7.0 Accepted
[->] MAIL FROM:<my.mail@gmail.com>
[<-] 250 2.1.0 OK p128sm754712lfb.32 - gsmtp
[->] RCPT TO:<mymail@inbox.ru>
[<-] 250 2.1.5 OK p128sm754712lfb.32 - gsmtp
[->] RCPT TO:</home/box/file@ubuntu>
[<-] 250 2.1.5 OK p128sm754712lfb.32 - gsmtp
[->] DATA
[<-] 354  Go ahead p128sm754712lfb.32 - gsmtp
[->] Received: by ubuntu (sSMTP sendmail emulation); Fri, 12 Aug 2016 03:34:46 -0500
[->] From: "box" <my.mail@gmail.com>
[->] Date: Fri, 12 Aug 2016 03:34:46 -0500
[->] Это тестовое письмо из консоли
[->]
[->] .
[<-] 250 2.0.0 OK 1470990888 p128sm754712lfb.32 - gsmtp
[->] QUIT
[<-] 221 2.0.0 closing connection p128sm754712lfb.32 - gsmtp

Отправляем текстовое сообщение из файла

Создаем файл и пишем в него текст сообщения
echo "Тестовое сообщение" > /home/<имя пользователя>/message

Отправляем текст из файла
ssmtp <получатель>@domain.com < /home/<имя пользователя>/message

Установим планировщик cronie:

sudo pacman -S cronie

Запустить и добавить в автозагрузку:
sudo systemctl start cronie.service
sudo systemctl enable cronie.service

Создать символьную ссылку
ln /etc/systemd/system/multi-user.target.wants/cronie.service -> /usr/lib/systemd/system/cronie.service.

Поправить crontab:
crontab -e

Проверить crontab:
crontab -l

Памятка для crontab

.---------------- минута (0 - 59)
| .-------------- час (0 - 23)
| | .------------ день месяца (1 - 31)
| | | .---------- месяц (1 - 12) ИЛИ jan,feb,mar ...
| | | | .-------- день недели (0 - 6) (Воскресенье=0 или 7) ИЛИ sun,mon,tue ...
| | | | |
* * * * * команда для выполнения

Самые распространенные примеры расписаний cron заданий:

* * * * *           «Запуск каждую минуту»
*/5 * * * *        «Запуск каждые 5 минут»
*/30 * * * *      «Запуск каждые 30 минут»
0 * * * *           «Запуск каждый час»
0 */3 * * *        «Запуск каждые 3 часа»
0 13 * * *         «Запуск каждый день в 13:00»
30 2 * * *         «Запуск каждый день в 2:30»
0 0 * * *           «Запуск каждый день в полночь»
0 0 * * 0           «Запуск каждое Воскресенье»
0 0 * * 1           «Запуск каждый Понедельник»
0 0 1 * *           «Запуск в первый день каждого месяца»
0 0 1 1 *           «Запуск каждый год первого Января»

Команды для создания и отправки текста из файла

Создаем файл и пишем в него текст сообщения
echo "Тестовое сообщение" > /home/<имя пользователя>/message

Отправляем текст из файла

ssmtp <получатель>@domain.com < /home/<имя пользователя>/message

Комментариев нет:

Отправить комментарий