Всем привет.
Потребовалось по работе настроить Zabbix на проверку почты и последующим оповещением. Решил сделать с помощью fetchmail.
Подробности ниже.
Небольшое уточнение: почтовик, который требовалось мониторить был установлен скриптом iRedMail.
Дело в том, что при установке почтового сервера генерируется самоподписанный сертификат. А fetchmail’у это не нравится. Есть у него параметр, который должен игнорить это, но в моем случае не заработало.
Гуглил много всяких рекомендаций, конфигураций и ошибок выдываемых в процессе. В итоге здесь опубликую то, что у меня гарантированно заработало. Ссылки на статьи и их сохраненные копии в конце заметки.
На почтовом сервере перегенерировал сертификат, что бы не было ошибок:
1) создаем приватный (private) ключ. Потом с ним сгенерируем новый сертификат:
1 | openssl genrsa -out private.key 2048 |
private.key — название ключа. Может быть любым, расширание key обязательно. Для простоты назвал private.
2048 — размер ключа
2) создадим сертификат с ранее сгенерерированным ключом
1 | openssl req -new -x509 -days 3650 -key private.key -out mail.crt |
-days — кол-во дней (срок сертификата). Вданном случае 10 лет.
-key — ранее созданный ключ.
mail.crt — название сертификата. Может быть любым, расширение crt обязательно.
3) Теперь полученный ключ и сертификат перемещу в системные каталоги /etc/ssl
certs — для сертификатов,
private — для ключей.
4) В конфигурационных файла сервисов dovecot и posftix изменить имена сертификатов на только что созданные. В соответствующих разделах конфигурационных файлов:
1 2 | sudo nano /etc/dovecot/dovecot.conf sudo nano /etc/postfix/main.cf |
После внесенных изменений перезапустть сервисы:
1 | sudo systemctl restart dovecot && sudo systemctl restart postfix |
На этом серверная часть закончена.
Теперь на машине, где будет проверятся почта, установим и настроим fetchmail.
1) Установка
1 | sudo aptitude install fetchmail |
Если надо, то можно проверить установленную версию
1 | fetchmail -V |
и получим вот такой вывод (может отличаться в зависимости от ОС):
This is fetchmail release 6.4.2+GSS+NTLM+SDPS+SSL-SSLv2-SSLv3+NLS+KRB5
2) Теперь получим сертификат и сохраним
1 | echo "quit" | openssl s_client -connect 192.168.1.157:993 -showcerts 2>&1 | awk '/^[\-]+BEGIN CERTIFICATE[\-]+$/,/^[\-]+END CERTIFICATE[\-]+$/ {if (/^[\-]+BEGIN CERTIFICATE[\-]+$/) { count=count+1; flag=1 } if (count==1 && flag==1) { print $0 } if (/^[\-]+END CERTIFICATE[\-]+$/) { flag=0 }}' > test.ru.pem |
3) создадим каталог для сертификата
1 | mkdir .fetchmailsslcerlts |
перенесем полученный сертификат и выполним команду
1 | c_rehash .fetchmailsslcerlts/ |
4) получим отпечаток сертификата
1 | YPATH=".fetchmailsslcerlts"; openssl x509 -in $HOME/${MYPATH}/test.ru.pem -noout -md5 -fingerprint | cut -d '=' -f2,2 | awk -v path=${MYPATH} '{print "sslcertpath "path"\nsslfingerprint "$0}' |
Полученный вывод потребуется для файла конфигурации.
Создаем для нашего ящика, который будем проверять — .fetchmailrc:
1 2 3 4 5 6 7 8 | poll test.ru protocol IMAP port 993 user "user@test.ru" pass "MyP@ssW0rd" ssl sslfingerprint "[то что получили на шаге 4]" sslcertpath /var/lib/zabbix/.fetchmailsslcerlts |
Все параметры тут понятны.
2 последние строчки из предыдущего шага.
И, собственно, проверка из консоли:
1 | fetchmail -c -k -f .fetchmailrc |
-c — проверка
-k — оставить письма в ящике
-f — какой файл использовать
можно добавить -v для подробного вывода (рекомендуется для тестирования).
и вот такой вывод
1 message (1 seen) for test@test.ru at test.ru.
Ссылки:
Перевод руководства | Сохраненная копия.
Статья, которая мне помогла | Сохраненная копия.
If you found an error, highlight it and press Shift + Enter or to inform us.