- Почта: настройка ssmtp
- Установка и настройка ssmtp
- Конфигурационные файлы ssmtp
- Проверка
- Наступлю на грабли за вас
- Есть ли журнал/лог у ssmtp?
- Как указать сайту какой конфиг использовать
- Заключение
- Установка SMTP-клиента SSMTP на базе Ubuntu Server 14.04 LTS / Debian 8 Jessie. Настройка отправки почты.
- Установка SSMTP
- Конфигурация 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? 🍪
Установка SMTP-клиента SSMTP на базе Ubuntu Server 14.04 LTS / Debian 8 Jessie. Настройка отправки почты.
Разберем как установить и настроить простой SMTP-клиент SSMTP ( Simple Mail Transfer Protocol — простой протокол передачи почты) на базе Ubuntu Server 14.04 LTS / Debian 8 Jessie.
Установка SSMTP
Перед началом установки обновляем систему до актуального состояния:
sudo apt-get update && sudo apt-get upgrade -y
Устанавливаем SSMTP из репозиториев:
sudo apt-get install ssmtp
Конфигурация SSMTP сервера
Делаем резервную копию файла конфигурации:
sudo cp /etc/ssmtp/ssmtp.conf /etc/ssmtp/ssmtp.conf.backup
Редактируем файл конфигурации /etc/ssmtp/ssmtp.conf:
# Адрес SMTP-сервера mailhub=192.168.1.2:587 # Авторизация на SMTP-сервере AuthUser=test@test.ru AuthPass=Aa1234567 # Разрешать скриптам выбирать с какого ящика отправлять письмо FromLineOverride=YES # Принудительное переписывание домера в поле FROM: rewriteDomain=test.ru # Использовать SSL/TLS шифрования #UseSTARTTLS=YES # Использовать TLS шифрования UseTLS=YES # Ящик, куда будет отправляться вся локальная почта предназначенная пользователям с uid < 1000. В том числе, root. root=test@test.ru
Для защиты сервера от возможности слать через него спам с пользовательских учеток, необходимо указать явно почта от какого пользователя и с какого ящика может уходить. Редактируем файл алиасов /etc/ssmtp/revaliases:
root:test@test.ru:192.168.1.2:587
Установим использование SSMTP по-умолчанию в системе. Выполняем:
sudo mv /usr/sbin/sendmail /usr/sbin/sendmail.old sudo ln -s /usr/sbin/ssmtp /usr/sbin/sendmail
echo "Test message" | mail -s Test test@test.ru
Если все настроено верно, то письмо отправится.
Понравилась или оказалась полезной статья, поблагодари автора
ПОНРАВИЛАСЬ ИЛИ ОКАЗАЛАСЬ ПОЛЕЗНОЙ СТАТЬЯ, ПОБЛАГОДАРИ АВТОРА
Как установить простой 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:
Поделитесь статьей с друзьями в соц. сетях, возможно, она будет им полезна.