- Почта: настройка ssmtp
- Установка и настройка ssmtp
- Конфигурационные файлы ssmtp
- Проверка
- Наступлю на грабли за вас
- Есть ли журнал/лог у ssmtp?
- Как указать сайту какой конфиг использовать
- Заключение
- Как настроить отправку почты через SSMTP
- Получить данные SMTP для настройки
- Получить пароль для приложения
- Настроить SSMTP на сервере
- Зарегистрируйтесь в панели управления
- Читайте также:
- Как установить простой SMTP клиент (ssmtp) на Ubuntu для отправки почты с сайта.
- Tags:
- Как установить простой SMTP клиент (ssmtp) на Ubuntu для отправки почты с сайта.
- Tags:
Почта: настройка ssmtp
ssmtp — SMTP-клиент (не MTA?). Когда некогда настраивать Exim/Postfix, но почту отправлять надо (postfix+Яндекс.ПДД совсем недолго, но сложно если ранее не делали).
Рассмотрим пример настройки для отправки писем с трёх разных сайтов через три разные почтовые службы. Перефразируя — условные три сайта работают одновременно и отправляют почту каждый со своего почтового домена.
Вымышленные пользователи и их email адреса
Установка и настройка ssmtp
Устанавливаем SMTP клиент
Файл конфигурации /etc/ssmtp/ssmtp.conf оставляем без изменений.
Создаём новые конфигурационные файлы для каждой почтовой службы
# touch /etc/ssmtp/ssmtp-gmail.conf # touch /etc/ssmtp/ssmtp-yandex.conf # touch /etc/ssmtp/ssmtp-mailru.conf
В файл /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 и другие пользователи?
Через консоль мы будем отправлять от имени root, а через php от имени системного пользователя (использую mod_ruid).
В тестовом окружении можно позволить себе работать под root’ом. Но если сервер не ваш или дико важный продакшн, тогда вы ССЗБ.
Конфигурационные файлы ssmtp
Файл /etc/ssmtp/ssmtp-gmail.conf
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
Файл /etc/ssmtp/ssmtp-yandex.conf
mailhub=smtp.yandex.ru:465 AuthUser=tux@linux.com AuthPass=nvidiasuxx AuthMethod=LOGIN rewriteDomain=linux.com hostname=localhost UseTLS=Yes #UseSTARTTLS=Yes TLS_CA_File=/etc/ssl/certs/ca-certificates.crt FromLineOverride=Yes #Debug=Yes
Файл /etc/ssmtp/ssmtp-mailru.conf
mailhub=smtp.mail.ru:465 AuthUser=joker@anekdot.ru AuthPass=waiting1april AuthMethod=LOGIN rewriteDomain=anekdot.ru hostname=localhost UseTLS=Yes #UseSTARTTLS=Yes TLS_CA_File=/etc/ssl/certs/ca-certificates.crt FromLineOverride=Yes #Debug=Yes
Проверка
Проверить отправку писем через консоль можно множеством способов.
Самый простой через pipe, добавляем здесь ключ -C для указания на конкретный конфигурационный файл (подробнее в man)
echo "Test text" | ssmtp -C/etc/ssmtp/ssmtp-gmail.conf vvp@kermlin.su echo "Test text" | ssmtp -C/etc/ssmtp/ssmtp-yandex.conf vvp@kermlin.su echo "Test text" | ssmtp -C/etc/ssmtp/ssmtp-mailru.conf vvp@kermlin.su
mail('vvp@kermlin.ru', 'Пенсионная реформа', 'Смерть ворогам!'); ?>
Наступлю на грабли за вас
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: (501 sender address must match authenticated user)
В revaliases добавляем нужных пользователей. В моём случае php-скрипты запускаются от имени системного пользователя, а не от nobody или www-data/httpd, поэтому в revaliases помимо root указаны логины системных пользователей.
3 Неверный From
Дальше я ещё сильнее расширил свои познания в Linux. Если у системного пользователя задан email, то именно он будет использоваться в поле From. Пример файла /etc/passwd
dx:x:1001:1001:username@gmail.com:/home/dx:/usr/sbin/nologin
4 Если в логе
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
Есть ли журнал/лог у ssmtp?
Да, для этого требуется добавить опцию Debug=YES. После чего в syslog будут записываться содержимое отправленных писем и почтовые заголовки.
Если не в syslog, то куда-нибудь уж точно. Найти поможет команда
Как указать сайту какой конфиг использовать
Наконец-то самое интересное
Если у каждого сайта свой php.ini, то
sendmail_path "/usr/sbin/ssmtp -t -C/etc/ssmtp/ssmtp-gmail.conf"
Либо через конфигурацию виртуального хоста
. . php_admin_value sendmail_path "/usr/sbin/ssmtp -t -C/etc/ssmtp/ssmtp-gmail.conf"
fastcgi_param PHP_VALUE "sendmail_path=/usr/sbin/ssmtp -t -C/etc/ssmtp/ssmtp-gmail.conf";
Заключение
Неразборчиво врачебным почерком у ssmtp есть есть аналог — msmtp.
Сайт rtfm.wiki использует cookies и трекинг посещений. Продолжая использовать этот сайт, вы соглашаетесь с сохранением файлов cookie на вашем компьютере. Если вы не согласны покиньте сайт или включите Adblock 😎 Окэйси Что такое cookies? 🍪
Как настроить отправку почты через SSMTP
Настройка отправки почты через SSMTP реализуется в три шага. Для этого нужно:
- Выбрать сервис для отправки писем:
- mailganer,
- Sendsay,
- UniSender,
- почта Google Workspace,
- почта Microsoft Office 365,
- почта Яндекс 360.
- Получить данные SMTP для настройки.
- Настроить SSMTP на сервере. Для настройки SMTP используются данные, которые получены у выбранного сервиса для отправки писем.
Ниже мы подробнее поговорим про получение данных и настройку.
Получить данные SMTP для настройки
Для настройки SMTP используются данные, которые получены у выбранного сервиса для отправки писем. Мы будем рассматривать настройку на примере существующей учетной записи у поставщика почты Gmail (аналогично можно использовать почту Яндекса).
Для настройки потребуются:
- имя сервера (hostname);
- порт (port). Для предупреждения несанкционированных почтовых рассылок, 25 TCP-порт заблокирован Selectel для исходящих соединений в направлении публичных IPv4 и IPv6 адресов. Рекомендуем использовать TCP-порт 587 и 465;
- логин (login);
- пароль (password). Получите пароль для приложения, это позволит избежать проблемы с двухфакторной авторизацией и не использовать свой основной пароль.
Получить пароль для приложения
- Откройте страницу своего аккаунта Google. При необходимости выполните вход.
- На странице Безопасность перейдите к разделу Вход в аккаунт Google.
- Нажмите Пароли приложений.
- Войдите в свою учетную запись Google.
- На странице Пароли приложений заполните значения параметров и нажмите Создать.
- Сохраните сгенерированный пароль, посмотреть пароль еще раз будет невозможно. Если пароль утерян, удалите его и создайте новый.
- Нажмите Готово.
Настроить SSMTP на сервере
Настройка выполняется через терминал.
1. Установите SSMTP.
# yum update # yum install ssmtp
# apt update # apt install ssmtp
2. Если у вас не установлен nano, установите его.
3. Настройте конфигурационный файл ssmtp.conf.
mailhub=smtp.gmail.com:587 hostname=smtp.gmail.com:587 root=ваш_аккаунт@gmail.com AuthUser=ваш_аккаунт@gmail.com AuthPass=ваш_пароль_для_приложения UseSTARTTLS=YES UseTLS=YES FromLineOverride=YES TLS_CA_File=/etc/pki/tls/certs/ca-bundle.crt
hostname=localhost FromLineOverride=YES AuthUser=ваш_аккаунт@yandex.ru AuthPass=ваш_пароль_для_приложения smtp.yandex.ru:465 rewriteDomain=yandex.ru UseTLS=YES TLS_CA_File=/etc/pki/tls/certs/ca-bundle.crt
4. Настройте конфигурационный файл revaliases:
root:ваш_аккаунт@gmail.com:smtp.gmail.com:587
root:ваш_аккаунт@yandex.ru:smtp.yandex.ru:465
5. Замените отправщик почты, который используется по умолчанию, на настроенный ssmtp:
# mv /usr/sbin/sendmail /usr/sbin/sendmail.orig
6. Создайте симлинк на ssmtp вместо sendmail:
# ln -s /usr/sbin/ssmtp /usr/sbin/sendmail
7. Проверьте отправку электронной почты:
# $ echo test | mail -v -s "testing ssmtp" адрес@получателя
9. Если письма не отправляются, отключите капчу для новых логинов приложений и повторите проверку.
Зарегистрируйтесь в панели управления
И уже через пару минут сможете арендовать сервер, развернуть базы данных или обеспечить быструю доставку контента.
Читайте также:
Как написать свой REST API на Go? Разрабатываем сокращатель ссылок
Как начать работу с публичным облаком на базе VMware в Selectel
Знакомство с публичным облаком на базе VMware в Selectel
Как установить простой SMTP клиент (ssmtp) на Ubuntu для отправки почты с сайта.
В этой статье я покажу как можно легко и быстро поставить простой SMTP клиент на Ubuntu, который будет подключаться к серверам Яндеса, например для того что бы можно было отправлять почту с сайта. Очень часто советуют ставить postfix, либо sendmail, но я считаю, если вам нужно отправлять почту от имени одного пользователя, например для регистрации на сайте, уведомлений и т.п., то ставить эти программы — как стрелять из пушки по воробьям. Во первых они довольно сложны в настройке, во вторых их функционал будет использоваться на очень маленький процент от их возможностей. Есть такая программа — ssmtp, на форумах почему то о нем часто забывают, а он в свою очередь очень маленькиий, очень простой в настройке, поддерживает шифрование и со своей задачей справляется на ура.
Ставим ssmtp из терминала:
sudo apt-get install ssmtp
sudo nano /etc/ssmtp/ssmtp.conf
В нем нужно отредактировать строчки:
#от имени кого будут отправляться письма [email protected] #С какого домена будут приходить письма rewriteDomain=mytechnote.ru #Сервер яндекса mailhub=smtp.yandex.ru:465 #имя нашего сервера hostname=mytechnote.ru #Разрешаем шифрование UseTLS=YES #авторизация на Яндексе [email protected] AuthPass=yourpassword #разрешаем пользователям менять поле From FromLineOverride=YES
Далее нужно отредактировать еще один конфиг
sudo nano /etc/ssmtp/revaliases
В должны быть примерно такие строчки:
root:[email protected]:smtp.yandex.ru:465 www.mytechnote.ru:[email protected]:smtp.yandex.ru:465 www-data:[email protected]:smtp.yandex.ru:465
Как вы уже поняли — первое поле тут — имя пользователя, второе — поле from, третье — smtp сервер и порт.
После того как конфиги будут отредактированы можно попробовать что нибудь отправить для этого набираем:
ssmtp [email protected] To: [email protected] From: [email protected] Subject: test #между темой и телом письма должна быть одна пустая строка, то бы ssmtp понял, что начинается тело. test #для отправки нужно нажать ctrl+D
Письмо должно уйти. На этом настройка ssmtp для сайта закончена.
Tags:
Поделитесь статьей с друзьями в соц. сетях, возможно, она будет им полезна.
Как установить простой SMTP клиент (ssmtp) на Ubuntu для отправки почты с сайта.
В этой статье я покажу как можно легко и быстро поставить простой SMTP клиент на Ubuntu, который будет подключаться к серверам Яндеса, например для того что бы можно было отправлять почту с сайта. Очень часто советуют ставить postfix, либо sendmail, но я считаю, если вам нужно отправлять почту от имени одного пользователя, например для регистрации на сайте, уведомлений и т.п., то ставить эти программы — как стрелять из пушки по воробьям. Во первых они довольно сложны в настройке, во вторых их функционал будет использоваться на очень маленький процент от их возможностей. Есть такая программа — ssmtp, на форумах почему то о нем часто забывают, а он в свою очередь очень маленькиий, очень простой в настройке, поддерживает шифрование и со своей задачей справляется на ура.
Ставим ssmtp из терминала:
sudo apt-get install ssmtp
sudo nano /etc/ssmtp/ssmtp.conf
В нем нужно отредактировать строчки:
#от имени кого будут отправляться письма [email protected] #С какого домена будут приходить письма rewriteDomain=mytechnote.ru #Сервер яндекса mailhub=smtp.yandex.ru:465 #имя нашего сервера hostname=mytechnote.ru #Разрешаем шифрование UseTLS=YES #авторизация на Яндексе [email protected] AuthPass=yourpassword #разрешаем пользователям менять поле From FromLineOverride=YES
Далее нужно отредактировать еще один конфиг
sudo nano /etc/ssmtp/revaliases
В должны быть примерно такие строчки:
root:[email protected]:smtp.yandex.ru:465 www.mytechnote.ru:[email protected]:smtp.yandex.ru:465 www-data:[email protected]:smtp.yandex.ru:465
Как вы уже поняли — первое поле тут — имя пользователя, второе — поле from, третье — smtp сервер и порт.
После того как конфиги будут отредактированы можно попробовать что нибудь отправить для этого набираем:
ssmtp [email protected] To: [email protected] From: [email protected] Subject: test #между темой и телом письма должна быть одна пустая строка, то бы ssmtp понял, что начинается тело. test #для отправки нужно нажать ctrl+D
Письмо должно уйти. На этом настройка ssmtp для сайта закончена.
Tags:
Поделитесь статьей с друзьями в соц. сетях, возможно, она будет им полезна.