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