zabbix-helpers/check_email_delivery_go/README.md

131 lines
7.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# Email Monitoring
"Сервис" проверки отправки и получения почты с возможностью мониторинга в Zabbix. Также можно просто отправлять любые сообщения с целью автоматизации чего-нибудь.
Пароли от учетных записей почты сервис может брать из Hashicorp Vault.
Программу можно запускать как в консоли так и в docker-контейнере.
# Режимы работы
# использование
Для работы используются переменные окружения (либо соответствующие им ключи (опции) командной строки), при указании параметров с командной строки , переменные окружения будут проигнорированы:
- IMAP_SERVER=imap.google.com
- IMAP_PORT=143
- IMAP_USER=some@gmail.com
- IMAP_PASSWORD=12345
- MAIL_FROM=some@localmaildomain.ru
- MAIL_MESSAGE="Message body"
- MAIL_SUBJECT="Test email subject"
- MAIL_TO=""some@gmail.com
- SMTP_SERVER=smtp.localmaildomain.ru
- SMTP_PORT=25
- SMTP_USER=some@localmaildomain.ru
- SMTP_PASSWORD=123456
- VAULT_ADDRESS=https://you.vault.address
- VAULT_TOKEN="You vault token"
- ZABBIX_SERVER=https://zabbix2
- ZABBIX_HOST=mail.localmaildomain.ru
- ZABBIX_USERNAME=zabbix_user
- ZABBIX_PASSWORD=somepass
Для отправки сообщения следует указать опцию "-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
```