97 lines
5.3 KiB
Markdown
97 lines
5.3 KiB
Markdown
|
# Проверка прохождения почтовых сообщений
|
|||
|
|
|||
|
Набор скриптов для проведения проверок прохождения почтовых сообщений на/с почтовые сервера при помощи zabbix.
|
|||
|
|
|||
|
За основу взяты скрипты от nagios http://nagiosplugins.org/
|
|||
|
|
|||
|
Сервис можно запускать как локально по времени (cron-ом) так и в docker-контейнерах. В данном примере все конфиги представлены для запуска проверки на двух почтовых серверах.
|
|||
|
|
|||
|
## Описание
|
|||
|
|
|||
|
Для запуска проверки прохождения почты нужно запустить файл ```check_email_send_delivery.sh```
|
|||
|
Формат команды запуска
|
|||
|
|
|||
|
```
|
|||
|
check_email_send_delivery.sh METHOD MAIL_SERVER
|
|||
|
```
|
|||
|
|
|||
|
Где METHOD - это тип проверки, должен быть:
|
|||
|
|
|||
|
* "local" - локальная проверка (внутри сети)
|
|||
|
* "incoming" - проверка прохождения входящей почты (отправка извне)
|
|||
|
* "outgoing" - проверка прохождения исходящей почты (отправка изнутри наружу)
|
|||
|
|
|||
|
MAIL_SERVER - FQDN имя почтового сервера
|
|||
|
|
|||
|
## Использование
|
|||
|
|
|||
|
Скрипт можно запускать как по времени так и ввиде docker-контейнера
|
|||
|
|
|||
|
### Настройка переменных окружения
|
|||
|
|
|||
|
Настройки для каждого почтового сервера заданы в отдельных файлах (формат имени ".FQDN.env"):
|
|||
|
```
|
|||
|
.mail2.exampla.com.env
|
|||
|
.mail1.example.com.env
|
|||
|
```
|
|||
|
Соответствующий файл будет загружен при запуске скрипта.
|
|||
|
|
|||
|
### Запуск по времени
|
|||
|
|
|||
|
Предварительно требуется скопировать рабочие файлы, файлы настроек серверов cron-a и настроить узлы в zabbix (можно применить скрипт zabbix_create_host.sh) Для этого можно выполнить следующие команды:
|
|||
|
```
|
|||
|
cp check_email_send_delivery.sh /usr/local/bin/
|
|||
|
cp check_email_delivery-0.7.1b/check_* /usr/local/bin/
|
|||
|
cp check_email_delivery-0.7.1b/imap_* /usr/local/bin/
|
|||
|
cp email_delivery_check.cron /etc/cron.d/email_delivery_check
|
|||
|
cp sample.env /usr/local/etc/.mail1.example.com.env
|
|||
|
cp sample.env /usr/local/etc/.mail2.example.com.env
|
|||
|
source /usr/local/etc/.mail1.example.com.env
|
|||
|
./zabbix_create_host.sh
|
|||
|
source /usr/local/etc/.mail2.example.com.env
|
|||
|
./zabbix_create_host.sh
|
|||
|
```
|
|||
|
Файлы настроек "sample.env" правятся соответсвенно проверямемым серверам. Затем перезапускаем службу crond
|
|||
|
|
|||
|
```systemctl restart crond```
|
|||
|
|
|||
|
### Запуск в Docker-контейнере
|
|||
|
|
|||
|
Предварительно требуется скопировать файл примерных настроек и отредактировать, согласно Вашим требованиям (FQDN полное имя вашего почтового сервера такое-же как и в docker-compose.yml)
|
|||
|
|
|||
|
```cp sample.env .FQDN.env```
|
|||
|
|
|||
|
При первом запуске контейнеров будут созданы узлы в заббикс и подключены шаблоны, при повторных запусках добавятся обнаруженные элементы данных. Это связанно с особенностями работы заббикса (временной промежуток). Данные будут поступать после 2-3 запуска контейнера.
|
|||
|
|
|||
|
Контейнеры запускаются автоматически раз в 5 (Check_email_delivery) минут. Настройки производятся через переменные окружения.
|
|||
|
|
|||
|
Перед запуском следует установить данные переменные (остальные можно оставить по умолчанию, полный список см. в docker-compose.yml):
|
|||
|
|
|||
|
Пользователь заббикс:
|
|||
|
|
|||
|
- ZABBIX_USER=
|
|||
|
- ZABBIX_PASSWORD=
|
|||
|
- ZABBIX_TEMPLATE_NAME=Template_Email_Delivery_Check
|
|||
|
|
|||
|
Почтовые аккаунты (для двух MTA используются разные ящики из-за ограничения гугла на количество сообщений в сутки):
|
|||
|
|
|||
|
- SENDER_EMAIL=delivery_speed@example.com
|
|||
|
- SENDER_PASSWORD=
|
|||
|
- RECEIVER_EMAIL=delivery_speed_local@example.com
|
|||
|
- RECEIVER_PASSWOR=
|
|||
|
- EXT_SENDER_EMAIL=external@gmail.com
|
|||
|
- EXT_SENDER_PASSWORD=
|
|||
|
- EXT_RECEIVER_EMAIL=external@gmail.com
|
|||
|
- EXT_RECEIVER_PASSWORD=
|
|||
|
- EXT_SENDER_EMAIL_2=external2@gmail.com
|
|||
|
- EXT_RECEIVER_EMAIL_2=external2@gmail.com
|
|||
|
|
|||
|
Сборка контейнера в локальном репозитории:
|
|||
|
|
|||
|
```docker build --rm -t email_delivery_check .```
|
|||
|
|
|||
|
Проверка для каждого сервера запускается в отдельном контейнере. Запуск осуществляется при помощи docker-compose:
|
|||
|
|
|||
|
```docker-compose up -d```
|
|||
|
|