ssmtp настройка отправки почты с Ubuntu/Debian/Linux

Устанавливаем ssmtp
Отправляем почту из консоли
Отрпавка текстового сообщения из файла message.txt
Отправим почтовое сообщение через PHP
Отправка письма при отсутвии пинга
Проблемы

Устанавливваем ssmtp

apt-get install ssmtp

Полный список параметров

man -m 5 ssmtp.conf

Делаем бекап файла конфигуации

mv /etc/ssmtp/ssmtp.conf /etc/ssmtp/ssmtp.conf.default

Копируем болванку файла конфигурации ssmtp.conf, столкнулся еще с тем что после последней строки
AuthPass=password, необходим перевод строки, иначе аутентификация не пройдет.

wget -P /etc/ssmtp http://itautsors.ru/ssmtp.conf

Редактируем файл конфигурации

nano /etc/ssmtp/ssmtp.conf

Содержимое файла ssmtp.conf

# cat ssmtp.conf
# /etc/ssmtp.conf -- конфигурационный файл для sSMTP sendmail.
#
# Пользователь, который получает всю почту для userids < 1000
# Сделайте пустым для отключения перезаписи. Или укажите пользователя.
# А также вы можете указать нужный е-майл на который будет
# приходить почта для root.
root=postmaster
 
# Место, где идет почта. Настоящее имя машины не требуются
# MX записи. Обычно mailhosts является именем mail.domain.com
# Например если вы находитесь в domain.com ваш mailhub с таким же именем.
# Пример для SMTP портом 2525
# mailhub=mail.your.domain:2525
# Пример для SMTP портом 25 (Standard/RFC)
# mailhub=mail.your.domain
# Пример для SSL шифрованного соединения
# mailhub=mail.your.domain:465
#Адрес и порт доверенного smtp сервера, с которого будет осуществляться отправка ваших почтовых сообщений
#Для гугла
mailhub=smtp.gmail.com:587
#Для яндекса
#mailhub = smtp.yandex.ru:465
 
#От кого якобы должна приходить почта?
#если используете pdd.yandex.ru можно указать свой домен mydomain.ru
rewriteDomain=
 
# Полное имя машины
#если закомментировано, ssmtp определяет параметр самостоятельно
hostname=_HOSTNAME_
 
# Установите это чтобы никогда не переписывать "From:" (если не указано) и
# использовать этот адрес в "from line" оболочки.
#  Если YES Поле From: будет выставляться самим smtp переписывая значение вводимое скриптами
# Если NO, скрипты смогут записывать свое значение в поле From:
#Должно присутсвовать обязательно, иначе не пройдет авторизация Gmail.
#FromLineOverride=YES
 
# Использовать SSL/TLS, чтобы отправить безопасные сообщения на сервер.
#Должно присутсвовать обязательно, иначе не пройдет авторизация Gmail:
#UseSTARTTLS=YES
# Использовать SSL/TLS сертификат для аутентификации на SMTP-хосте.
#UseTLSCert=YES
 
# Используйте этот сертификат RSA.
#TLSCert=/usr/local/etc/ssmtp/ssmtp.pem
 
# Получить расширенное (* действительно * расширенную) отладочную информацию в логах
# Если вы хотите иметь отладке в конфигурационных отпарсенных файлах, переместите этот
# параметр в начало файла конфигурации и раскомментируйте
#Debug=YES
 
#Параметры существующего аккаунта почты
# Указываем имя пользователя на smtp-сервере (от какого пользователя шлем почту).
# Указываем пароль от smtp-аккаунта:
AuthPass=password
#End Of File
 
 
Далее правим файл revaliases
nano /etc/ssmtp/revaliases
Содержимое файла revaliases
 
# sSMTP aliases
#
# Format: local_account:outgoing_address:mailhub
#
# Example: root:your_login@your.domain:mailhub.your.domain[:port]
# where [:port] is an optional port number that defaults to 25.
# В данном конфиге явно указывается, почта от какого пользователя и с какого ящика может уходить.
# Данная настройка позволяет защитить сервер от возможности слать через него спам с пользовательских учеток.
# для яндекса
root:my-yandex-email@mydomain.ru:smtp.yandex.ru:465
# для гугла
root:my-gmail-account@gmail.com:smtp.gmail.com:587
 

В *NIX-мире для передачи почты первым был написан сервер sendmail. Этот сервер долгое время был стандартом де-факто. Постепенно была сформирована концепция MTA — то есть, концепция Mail Transfer Agent. MTA — это элемент системы передачи почты, который занимается только процессом передачи почтовых сообщений.

Однако исторически в системе Linux принято, что программа для передачи почтовых сообщений должна быть именно sendmail. Поэтому, когда устанавливается любая из MTA-программ, она создает файлы линков /usr/sbin/sendmail и /usr/lib/sendmail, которые указывают на нужную программу.

Посмотрим куда у нас ведет mail

whereis mail


Проверяем файл симилинк,

$ cd /usr/sbin && ls -l | grep sendmail

Должны увидеть

lrwxrwxrwx 1 root root 5 2011-04-07 03:09 sendmail -> ssmtp

Если же нет то виртуальный пакет mail-transfer-agent не ссылается на пакет ssmtp, и это необходимо исправить. Удалив пакеты на которые ссылается mail-transfer-agent, к примеру posfix. 

Примеры работы ssmtp

Отправляем почту из консоли

echo "Это тестовое письмо из консоли" | ssmtp -v -s адрескудаотправляем@domain.com

если письмо пришло то ssmpt работает

теперь отправляем

echo "Наше тест-сообщения" | mail -v -s "Наш заголовак письма" адрескудаотправляем@domain.com

если присьмо пришло то линки настроены правильно

Отрпавка текстового сообщения из файла message.txt

Создаем файл и пишем в него текст сообщения

echo "это наше сообщение из файла" > /home/NameUser/message.txt

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

ssmtp адрескудаотправляем@domain.com < /home/NameUser/message.txt

Отправим почтовое сообщение через PHP

Отправка писем для своего сайта, использующего php
Изменения файле php.ini, который может находится в разных каталогах в зависимости от способа подключения интерпретатора php:

# php подключен как модуль apache
$ nano /etc/php/apache2-php5.2/php.ini
# php в режиме php-fpm для nginx
$ nano /etc/php/fpm-php5.3/php.ini

Найдите в php.ini строку sendmail_path и отредактируйте ее до следующего вида:

sendmail_path = /usr/sbin/ssmtp -t

Для проверки сделанных настроек создайте файл в корневой директории вашего сервера вида phpinfo.php и вставьте в него следующий код:

<?php
phpinfo();
?>

Откройте созданную страницу в браузере http://мойсайт/phpinfo.php и в секции Configuration PHP Core найдите значение параметра sendmail_path.

Создать файл для проверки работы функции PHP mail():

<?php
mail('адрескудаотправляем@domain.com', 'Заработало', 'Это проверка работы ssmtp');
?>

Соответственно, на указанный ящик вы должны получить письмо.

Отправка письма при отсутвии пинга

создаем файл скрипта

touch /home/NameUser/test_ping.sh

Содержимое файла test_ping.sh

#! /bin/bash
SENDTO="адрескудаотправляем@domain.com" #куда отсылаем
ADDRESS="192.168.XXX.YYY" # что пингуем
 
if ping -c 10 -s 10 -W 10 $ADDRESS
then
echo "Статус сервера $ADDRESS Online"
else
#отправим сообщение по почте
echo "Недоступен хост $ADDRESS" | mail -v -s "Не доступен $ADDRESS" $SENDTO
fi
 
# End Of File
 
или скачиваем его
wget -P /home/NameUser/ http://itautsors.ru/ping_test.sh

Делаем файл исполняемым

chmod +x /home/NameUser/ping_test.sh

Зайдем в крон

crontab -e

И пропишем запуск нашего скрипта

SHELL=/bin/bash
MAILTO=user
0-59 * * * * /home/UserName/ping_test.sh

Проблемы

В конфигурационном файле ssmtp.conf Добавляем в самое начало конфига строчку:

Debug=YES


Далее в одной консоли запускаем

tail -f /var/log/maillog

из другой консоли шлем письмо

 

Таксаномия: 

Комментарии

Добрый день добавьте к "div#atstbx2 {position:relative; z-index:-1}" ибо он перекрывает весь контент и ссылки на конфиги неразворачиваются.

Добавить комментарий