zabbix-helpers/check_email_delivery_go
svkalinin 9e23e5a7c9 Added GO-realisation email check service 2022-07-06 12:36:21 +03:00
..
zabbix_templates Added GO-realisation email check service 2022-07-06 12:36:21 +03:00
.gitignore Added GO-realisation email check service 2022-07-06 12:36:21 +03:00
Dockerfile Added GO-realisation email check service 2022-07-06 12:36:21 +03:00
README.md Added GO-realisation email check service 2022-07-06 12:36:21 +03:00
cronjobs Added GO-realisation email check service 2022-07-06 12:36:21 +03:00
docker-compose.yml Added GO-realisation email check service 2022-07-06 12:36:21 +03:00
email-check.go Added GO-realisation email check service 2022-07-06 12:36:21 +03:00
go.mod Added GO-realisation email check service 2022-07-06 12:36:21 +03:00
go.sum Added GO-realisation email check service 2022-07-06 12:36:21 +03:00

README.md

Email Monitoring

"Сервис" проверки отправки и получения почты с возможностью мониторинга в Zabbix. Также можно просто отправлять любые сообщения с целью автоматизации чего-нибудь.

Пароли от учетных записей почты сервис может брать из Hashicorp Vault.

Программу можно запускать как в консоли так и в docker-контейнере.

Режимы работы

использование

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

Для отправки сообщения следует указать опцию "-send" и задать все остальные параметры (адреса, пользователей и так далее), для проверки получения сообщения надо указать "-recieve". Если указать обе опции то будет протестирована отправка и получение одного сообщения. Если Тема (mail-subject) и Сообщение (mail-message) не указаны то будет сгенерирован уникальный код, который будет вставлен в сообщение.

При указании адреса vault и токена с командной строки или через переменные окружения, пароли будут взяты оттуда. В качестве ключа используются значения SMTP_USER (-smtp-user), IMAP_USER (-imap-user), ZABBIX_USER (-zabbix-api-user). Если секреты для почтовых адресов и пароли от заббикса (API) хрянятся в разных разделах, то путь к хранилищу VAULT можно построить указав отдельные пути при помощи опций "-vault-email-secret-path" и "-vault-zabbix-secret-path". Т.е.:

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

  -vault-address="https://vault:8200/v1/secret/data/"
  -vault-email-secret-path="email"
  -vault-zabbix-secret-path="zabbix/helpers"

или

  -vault-address="https://vault:8200"
  -vault-email-secret-path="/v1/secret/data/email"
  -vault-zabbix-secret-path="/v1/secret/data/zabbix/helpers"

То, получим полный путь "https://vault:8200/v1/secret/data/email" или https://vault:8200/v1/secret/data/zabbix/helpers".

Для отправки результатов проверки в zabbix можно использовать как Zabbix API (опция "-zabbix-api") так и zabbix-sender (опция "-zabbix-sender"). При указании одного из этих вариантов требуется также указывать параметры работы с заббикс (адрес сервера, узел, пользователя -zabbix-api-user и пароль -zabbix-api-password (в случае АПИ)). Но предварительно следует настроить узел в заббикс и подключить к нему приложенный шаблон (шаблон настроен на использование zabbix-sender).

Пример команды

Отправка сообщения через локальный SMTP сервер с авторизацией (пароли будут взяты из хрфнилища секретов Vault), и проверка получения этого сообщения в учетной записи gmail по imap:

email-check -mail-from "some@localmaildomain.ru" -mail-to "some@gmail.com" \
-smtp-user="some@localmaildomain.ru" -smtp-server="smtp.localmaildomain.ru" -smtp-port="25" \
-imap-port="993" -vault-address="https://vault:8200/v1/secret/data/email" \
-imap-user="some@gmail.com" -imap-server="imap.google.com" -send -recieve -delay 20

Опция "-delay" устанавливает задержку между отправкой и получением (чтением) сообщения и по умолчанию равна 10 секунд. Это необходимо для того, чтобы сообщение успело пройти все фильтры и проверки почтовой системы.

Краткая помощь по программе

Опции командной строки:

  -delay int
    	Pause is required between operations (default 10)
  -direction string
    	Direction of email checking. Must be an: 'local', 'incoming', 'outgoing'. (default "local")
  -imap-password string
    	IMAP user password (IMAP_PASSWORD)
  -imap-port string
    	IMAP server port (IMAP_PORT) (default "993")
  -imap-server string
    	IMAP server address (IMAP_SERVER)
  -imap-user string
    	IMAP user (IMAP_USER)
  -mail-from string
    	Mail sender address 'From' (MAIL_FROM)
  -mail-message string
    	Mail message body (MAIL_MESSAGE)
  -mail-subject string
    	Mail message subject (MAIL_SUBJECT)
  -mail-to string
    	Mail receiver address 'From' (MAIL_TO)
  -receive
    	receive message is ON
  -send
    	Sending message is ON
  -smtp-password string
    	SMTP user password (SMTP_PASSWORD)
  -smtp-port string
    	SMTP server port (SMTP_PORT) (default "25")
  -smtp-server string
    	SMTP server address (SMTP_SERVER)
  -smtp-user string
    	SMTP user (SMTP_USER)
  -use-zabbix-sender
    	Send metrics or discovery data into zabbix via zabbix-sender
  -vault-address string
    	Hashicorp (c) vault address (VAULT_ADDRESS)
  -vault-email-secret-path string
    	Path to Vault email secret, where 'full Vault path' = 'vault-address' + 'vault-email-secret-path'
  -vault-token string
    	Vault access token (VAULT_TOKEN)
  -vault-zabbix-secret-path string
    	Path to Vault zabbix secret, where 'full Vault path' = 'vault-address' + 'vault-zabbix-secret-path'
  -zabbix-api
    	Send metrics or discovery data into zabbix via Zabbix API (not implemented yet)
  -zabbix-api-password string
    	Zabbix server API password
  -zabbix-api-user string
    	Zabbix server API user
  -zabbix-host string
    	Zabbix monitoring host name
  -zabbix-port int
    	Zabbix server port (default 10051)
  -zabbix-server string
    	Zabbix server address