zabbix-helpers/check_email_delivery_go/README.md

131 lines
7.1 KiB
Markdown
Raw Permalink Normal View History

# 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
```