Ssmtp centos 7 настройка

Обновлено: 04.07.2024

Вроде бы и задача не самая новая. И статей в гугле воз и маленькая тележка. Но почему то у меня ушла почти неделя на все эксперименты и топтания по всевозможным граблям.

Итак, задача: Сервер CentOS 7, установлен комплект LEMP, установлен сервер Zabbix 2.4.6. Нужно настроить отправку уведомлений админам на почту.

Оговорка — CentOS ставился по методу «секс и еще раз секс» — minimal installations. Ввиду этого некоторые пакеты «должные быть из коробки» не работают, ибо их никто еще не поставил.

После курения ряда мануалов стало понятно, что для отправки почты нам надо, как минимум, почтовую прокладку умеющую SMTP с авторизацией и скрипт для Zabbix.

В качестве почтового клиента используем ssmtp.


Затем в /etc/ssmtp/ssmtp.conf


Дальше была попытка выставить ssmtp в качестве подмены для sendmail и использовать команду mail (пакет mailx) для отправки почты, но письма, хоть и приходили, были не удобочитаемыми (текст приходил не в поле текста, а как бинарное вложение).

В итоге пришлось поставить mutt, в качестве замены mail.


Смотри где у нас домашний каталог пользователя zabbix:


Затем создаем файл настроек mutt в домашнем каталоге zabbix


Теперь надо написать скрипт для отправки почты и положить его в /usr/lib/zabbix/alertscripts. Имя скрипта пусть будет: send_mail.sh:


Теперь настройка самого zabbix. В Web-интерфейсе: Администрирование — Способы оповещений — Email

Тип: Скрипт
Имя скрипта: send_mail.sh
Активировано: Да (cheked)

Проверяем конфиг zabbix (/etc/zabbix/zabbix_server.conf)


Перезапускаем zabbix сервер:


И вот, если мы, в нарушение всех гайдлайнов, отключили SELinux, у нас все работает и оповещения ходят.

Однако, при включенном SELinux писем не было и нет. Переходим к дрессировке SELinux. Для ускорения дальнейшей настройки удобно завести какой-нибудь триггер, которому мы сможем легко и часто менять состояние (я не заморачивался и использовал перезагрузку сервера с zabbix, т.к. на этой виртуалке у меня никаких других нагрузок пока не было). Для выполнения настройки SELinux понадобится всего 4 действия, но их придется повторить столько раз сколько потребуется в вашей системе (у меня на это ушло 5 или 6 итераций).

Для личного «удобства» я собирал разрешающие правила не в один файл модуля SELinux, а в отдельный файл для каждой итерации, чтобы потом можно было внимательнее рассмотреть их содержимое. Поэтому имя модуля использовалось по схеме ZabSeModuleN, где N в конце имени файла — номер итерации, в итоге получается группа файлов ZabSeModule1.te, ZabSeModule1.mod, ZabSeModule1.pp, ZabSeModule2.te, ZabSeModule2.mod, ZabSeModule2.pp и т.д.

• ausearch -m avc -ts today
Если вывод отличается от — выполняем действия ниже.
• cat /var/log/audit/audit.log | audit2allow -m ZabSeModuleN > ZabSeModuleN.te
• checkmodule -M -m -o ZabSeModuleN.mod ZabSeModuleN.te
• semodule_package -o ZabSeModuleN.pp -m ZabSeModuleN.mod
• semodule -i ZabSeModuleN.pp
• rm /var/log/audit/audit.log
• reboot

Перезагрузка только метод вызвать сработку триггера «Zabbix server restarted»

Для любителей порядка — после получения полного списка правил SELinux, их можно собрать в один .te файл, и, удалив из системы предыдущие модули, создать и установить один новый.

В данной инструкции будет показана установка SSMTP, конфигурация и замена Sendmail на примере сервисов Yandex и Google.


1. Установка SSMTP
В зависимости от установленной Linux ОС, может потребоваться подключение дополнительного репозитория, в нашем случае будет рассмотрена установка на CentOS 6 .

Для установки SSMTP откроем терминал и выполним ряд команд:

Инструкция по установке и привязке SSMTP к Yandex и Google. Подключение репозитория

Инструкция по установке и привязке SSMTP к Yandex и Google. Обновление всех установленных пакетов





Установка SSMTP выполнена успешно, теперь можно переходить к настройке конфигурационных файлов для дальнейшей возможности отправки электронной почты.

Процесс создания почтового адреса электронной почты на сервисах Gmail и Yandex описываться не будет, т.к. подразумевается, что аккаунты уже созданы.

Поэтому перейдем сразу к правке первого конфигурационного файла ssmtp.conf.

Для этого выполним в терминале команду вида:

Инструкция по установке и привязке SSMTP к Yandex и Google. Редактирование конфигурационного файла


И приведем фаил к данному виду:

Инструкция по установке и привязке SSMTP к Yandex и Google. Вид в редакторе файла SSMTP.conf

1. Для сервиса Gmail :

2. Для сервиса Yandex :

Выполним настройку второго конфигурационного файла revaliases

Для этого выполним команду в терминале:

И приведем наш файл к данному виду:

Дополнительно выполним еще ряд команд в терминале:

Инструкция по установке и привязке SSMTP к Yandex и Google. Переименование файла и подмена sendmail


После всех проделанных действий можно перейти к проверке отправки электронной почты.

Для этого в терминале выполним команду вида:

В результате должны получить следующее выполнение команды:

Инструкция по установке и привязке SSMTP к Yandex и Google. Проверка отправки через SSMTP


Если выполненная команда соответствует скриншоту, то настройка выполнена успешно.

ssmtp - SMTP-клиент (не MTA?). Когда некогда настраивать Exim/Postfix, но почту отправлять надо (postfix+Яндекс.ПДД совсем недолго, но сложно если ранее не делали).

Рассмотрим пример настройки для отправки писем с трёх разных сайтов через три разные почтовые службы. Перефразируя - условные три сайта работают одновременно и отправляют почту каждый со своего почтового домена.

Вымышленные пользователи и их email адреса

Установка и настройка ssmtp

Устанавливаем SMTP клиент

Файл конфигурации /etc/ssmtp/ssmtp.conf оставляем без изменений.

Создаём новые конфигурационные файлы для каждой почтовой службы

В файл /etc/ssmtp/revaliases заранее добавляем

Почему root и другие пользователи?

Через консоль мы будем отправлять от имени root, а через php от имени системного пользователя (использую mod_ruid).


Конфигурационные файлы ssmtp

Файл /etc/ssmtp/ssmtp-gmail.conf

Файл /etc/ssmtp/ssmtp-yandex.conf

Файл /etc/ssmtp/ssmtp-mailru.conf

Проверка

Проверить отправку писем через консоль можно множеством способов.

Самый простой через pipe, добавляем здесь ключ -C для указания на конкретный конфигурационный файл (подробнее в man)

Проверка через PHP

Наступлю на грабли за вас

2 Ещё одна ошибка

3 Неверный From

Дальше я ещё сильнее расширил свои познания в Linux. Если у системного пользователя задан email, то именно он будет использоваться в поле From. Пример файла /etc/passwd

4 Если в логе

то добавьте в конфигурационный файл опцию TLS_CA_File

Путь для Ubuntu/Debian /etc/ssl/certs/ca-certificates.crt Путь для CentOS /etc/pki/tls/certs/ca-bundle.crt

Есть ли журнал/лог у ssmtp?

Да, для этого требуется добавить опцию Debug=YES. После чего в syslog будут записываться содержимое отправленных писем и почтовые заголовки.

Если не в syslog, то куда-нибудь уж точно. Найти поможет команда

Как указать сайту какой конфиг использовать

Наконец-то самое интересное

Через htaccess нельзя.

Если у каждого сайта свой php.ini, то

Либо через конфигурацию виртуального хоста

Заключение

Неразборчиво врачебным почерком у ssmtp есть есть аналог - msmtp.

В этой статье мы рассмотрим, как настроить почтовый сервер в операционной системе CentOS 7, с помощью которого вы сможете делать локальную отправку почты от приложений. Ранее мы уже рассматривали настройку почтового сервера в операционной системе Ubuntu Linux, поэтому если вы используете Ubuntu или Debian, обратитесь к руководству для этих дистрибутивов.

Настройка почтового агента

Пройдите авторизацию в операционной системе с помощью клиента SSH. В статье предполагается, что вы используете доступ к командам привилегированного режима с помощью sudo, если же вы работаете пол пользователем root, просто опускайте sudo при вводе команды.

В терминале введите команды для установки дополнительных пакетов для удобства редактирования файлов:

Для установки почтового сервера postfix введите команду:

После установки проверьте состояние сервиса postfix, для чего введите команду:

Статус postfix в Centos

По умолчанию почтовый сервер postfix выключен, поэтому вы должны его запустить. Для чего используется команда:

Для того, чтобы почтовый сервер автоматически запускался, необходимо активировать загрузку по умолчанию:

Убедимся, что служба запущена и работает:

Активный postfix в Centos

Откройте для редактирования конфигурационный файл Postfix:

В конфигурационном файле main.cf найдите строку:

и измените в ней параметр на localhost. Должно получиться так:

Далее найдите следующие строки:

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

На этом редактирование файла конфигурации Postfix завершено. Сохраните файл main.cf. Теперь необходимо перезапустить сервер Postfix:

Для корректной работы почты необходимо установить имя хоста в то, которое указано в настройках почтовой системы:

Для того, чтобы почта успешно доставлялась адресатам, необходимо, чтобы для домена отправки была задана корректная PTR запись. Обычно редактирование PTR-записей осуществляется службой поддержки компании, у которой вы приобретаете IP-адреса для сервера.

Для проверки работы отправки почты можно воспользоваться командой mail :

Настройка переадресации с локального ящика сервера на внешний ящик

Переадресация настраивается с помощью файла /etc/aliases. Рассмотрим создания правила для переадресации локальной почты для root на внешний почтовый ящик. Откройте файл /etc/aliases для редактирования:

Если другие приложения не создавали свои записи, то содержимое файла должно выглядеть так:

Внесите в файл дополнительную строку для настройки переадресации:

Для применения новых данных введите в консоли команду:

Для повышения безопасности вашего почтового сервера читайте наше руководство по дальнейшей настройке Postfix для защиты от несанкционированного использования.

Если вы хотите использовать серверы почтовых систем для обслуживания отправки почты, воспользуйтесь следующими статьями:

Предпочитаете сервисы Yandex? Тогда читайте соответствующее руководство для подключения своего домена к инфраструктуре Yandex.

Читайте также: