ssmtp - примитивный SMTP клиент для отправки почты через сторонний почтовый сервер с авторизацией.
Установка:
Делаем резервную копию
Редактируем настройки /etc/ssmtp/ssmtp.conf
В конце файла /etc/ssmtp/ssmtp.conf добавить переменные для авторизации:
Пример конфигурационного файла:
Описание:
Обязательно в файл /etc/ssmtp/revaliases добавляем:
или так:
root, www-data, batman - пользователи, от имени которых будет отправляться почта. Если вышеуказанное не прописать, то почта не отправится!
Для проверки работоспособности почты, выполнить:
И отправляем письмо по адресу user@domain.com:
Или так можно в одну строку написать и отправить письмо:
USER NAME - отображаемый текст "От кого" в письме.
UserFrom@domain.com - обратный адрес
Theme - тема письма
Test text - Первая строка тела письма
Тестовый текст - Вторая строка тела письма
UserTo@domain.com - адрес получателя письма
Второй вариант отправки письма в одну строку:
Текстовый вариант письма:
Вариант отправки письма через скрипт:
Проблемы и их решение
1 Для mail.ru и Yandex: перед отравкой почты необходимо зайти в почтовый ящик через веб-интерфейс. В противном случае будет ошибка:
ssmtp: 550 Message was not accepted -- invalid mailbox. You need to complete your registration in order to send your mail. Please visit http://e.mail.ru/signup?NeedMoreInfo=1
2 Если выскакивает ошибка RCPT TO:<dimon@gov.ru> (501 sender address must match authenticated user)то
В revaliases добавляем нужных пользователей. В моём случае php-скрипты запускаются от имени системного пользователя, а не от nobody или www-data/httpd, поэтому в revaliases помимо root указаны логины системных пользователей.
3 Если в логах ошибка Creating SSL connection to host
SSL not working: certificate verify failed (20)
Cannot open smtp.gmail.com:587
то добавьте в конфигурационный файл опцию TLS_CA_File
Путь для Ubuntu/Debian /etc/ssl/certs/ca-certificates.crt Путь для CentOS /etc/pki/tls/certs/ca-bundle.crt
WIKI: https://wiki.archlinux.org/index.php/SSMTP
Сайт: https://openwrt.org/docs/guide-user/services/email/smtp.client
Установка:
Код: Выделить всё
opkg update
opkg install ssmtp
Делаем резервную копию
Код: Выделить всё
cp /etc/ssmtp/ssmtp.conf /etc/ssmtp/ssmtp.conf.bak
Редактируем настройки /etc/ssmtp/ssmtp.conf
В конце файла /etc/ssmtp/ssmtp.conf добавить переменные для авторизации:
Код: Выделить всё
AuthUser=username@domain.com
AuthPass=Password
Пример конфигурационного файла:
Код: Выделить всё
mailhub=smtp.gmail.com:465
AuthUser=batman@gmail.com
AuthPass=BWisthebest
AuthMethod=LOGIN
rewriteDomain=gmail.com
hostname=localhost
UseTLS=Yes
#UseSTARTTLS=Yes
TLS_CA_File=/etc/ssl/certs/ca-certificates.crt
FromLineOverride=Yes
#Debug=Yes
Описание:
Код: Выделить всё
# cat ssmtp.conf
# /etc/ssmtp.conf -- конфигурационный файл для sSMTP sendmail.
#
# Пользователь, который получает всю почту для userids < 1000
# Сделайте пустым для отключения перезаписи. Или укажите пользователя.
# А также вы можете указать нужный е-майл на который будет
# приходить почта для root.
root=postmaster
# Место, где идет почта. Настоящее имя машины не требуются
# MX записи. Обычно mailhosts является именем mail.domain.com
# Например если вы находитесь в domain.com ваш mailhub с таким же именем.
mailhub=mail
# Пример для SMTP портом 2525
# mailhub=mail.your.domain:2525
# Пример для SMTP портом 25 (Standard/RFC)
# mailhub=mail.your.domain
# Пример для SSL шифрованного соединения
# mailhub=mail.your.domain:465
# От кого якобы должна приходить почта?
rewriteDomain=
# Полное имя машины
hostname=_HOSTNAME_
# Установите это чтобы никогда не переписывать "From:" (если не указано) и
# использовать этот адрес в "from line" оболочки.
#FromLineOverride=YES
# Использовать SSL/TLS, чтобы отправить безопасные сообщения на сервер.
#UseTLS=YES
# Использовать SSL/TLS сертификат для аутентификации на SMTP-хосте.
#UseTLSCert=YES
# Используйте этот сертификат RSA.
#TLSCert=/usr/local/etc/ssmtp/ssmtp.pem
# Получить расширенное (* действительно * расширенную) отладочную информацию в логах
# Если вы хотите иметь отладке в конфигурационных отпарсенных файлах, переместите этот
# параметр в начало файла конфигурации и раскомментируйте
#Debug=YES
Обязательно в файл /etc/ssmtp/revaliases добавляем:
Код: Выделить всё
batman:batman@gmail.com:smtp.gmail.com:465
tux:tux@linux.com:smtp.yandex.ru:465
joker:joker@anekdot.ru:smtp.mail.ru:465
или так:
Код: Выделить всё
root:batman@gmail.com:smtp.gmail.com:465
www-data:batman@gmail.com:smtp.gmail.com:465
batman:batman@gmail.com:smtp.gmail.com:465
root, www-data, batman - пользователи, от имени которых будет отправляться почта. Если вышеуказанное не прописать, то почта не отправится!
Для проверки работоспособности почты, выполнить:
Код: Выделить всё
echo "Тело тестового письма" > /tmp/newmail.txt
И отправляем письмо по адресу user@domain.com:
Код: Выделить всё
ssmtp -v user@domain.com </tmp/newmail.txt
Или так можно в одну строку написать и отправить письмо:
Код: Выделить всё
echo -e "From: USER NAME<UserFrom@domain.com>\nSubject: Theme\nTest text\nТестовый текст" | ssmtp UserTo@domain.com
USER NAME - отображаемый текст "От кого" в письме.
UserFrom@domain.com - обратный адрес
Theme - тема письма
Test text - Первая строка тела письма
Тестовый текст - Вторая строка тела письма
UserTo@domain.com - адрес получателя письма
Второй вариант отправки письма в одну строку:
Код: Выделить всё
echo "Subject: test message" > /tmp/newmessage;echo "From: otpravitel@gmail.com" >> /tmp/newmessage;echo "Это новое тестовое сообщение" >> /tmp/newmessage; ssmtp poluchatel@yandex.ru </tmp/newmessage
Текстовый вариант письма:
From: Vasya Pupkin <vasya@domain.com>
Subject: тестовое письмо 77
Привет, это тестовое письмо.
Вариант отправки письма через скрипт:
Код: Выделить всё
#!/bin/sh
echo "Subject: Movment detect" > /tmp/newmessage;echo "From: otpravitel@gmail.com" >> /tmp/newmessage
echo "Alert!!!! Home movement detect" >> /tmp/newmessage; ssmtp poluchatel@yandex.ru </tmp/newmessage
Проблемы и их решение
1 Для mail.ru и Yandex: перед отравкой почты необходимо зайти в почтовый ящик через веб-интерфейс. В противном случае будет ошибка:
ssmtp: 550 Message was not accepted -- invalid mailbox. You need to complete your registration in order to send your mail. Please visit http://e.mail.ru/signup?NeedMoreInfo=1
2 Если выскакивает ошибка RCPT TO:<dimon@gov.ru> (501 sender address must match authenticated user)то
В revaliases добавляем нужных пользователей. В моём случае php-скрипты запускаются от имени системного пользователя, а не от nobody или www-data/httpd, поэтому в revaliases помимо root указаны логины системных пользователей.
3 Если в логах ошибка Creating SSL connection to host
SSL not working: certificate verify failed (20)
Cannot open smtp.gmail.com:587
то добавьте в конфигурационный файл опцию TLS_CA_File
Путь для Ubuntu/Debian /etc/ssl/certs/ca-certificates.crt Путь для CentOS /etc/pki/tls/certs/ca-bundle.crt
WIKI: https://wiki.archlinux.org/index.php/SSMTP
Сайт: https://openwrt.org/docs/guide-user/services/email/smtp.client