131 lines
7.1 KiB
Markdown
131 lines
7.1 KiB
Markdown
# 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
|
||
|
||
``` |