Привет! Сегодня разберём одну из тех ситуаций, когда всё «вроде работает», но клиенты всё равно ломаются. Конкретно — Thunderbird не подключается к почтовому серверу по IMAP/SMTP, выдаёт ошибку безопасности, а веб-интерфейс работает нормально. Причём сертификат только что перевыпущен. Кто виноват и что делать?
Первым делом проверяем сертификат вручную через OpenSSL:
openssl s_client -connect pochta.example.com:993 -servername pochta.example.com
В выводе видим:
verify error:num=10:certificate has expired
notAfter=Nov 6 14:19:44 2025 GMT
А сегодня — 7 ноября 2025 года. То есть сертификат уже просрочен на один день.
Но ведь мы его обновляли! Или нет?
Запускаем принудительное обновление:
sudo certbot renew --force-renewal
Всё проходит успешно. Файлы в /etc/letsencrypt/live/pochta.example.com/ обновились. Веб-сервер (Nginx/Apache) подхватил новый сертификат — поэтому HTTPS работает.
А вот Dovecot — нет. Он продолжает держать старый сертификат в памяти, потому что его никто не попросил перечитать конфигурацию.
Результат: Thunderbird подключается к Dovecot → Dovecot отдаёт старый (просроченный) сертификат → Thunderbird блокирует соединение.
Нужно просто сказать Dovecot: «Эй, перечитай сертификат!»
sudo systemctl reload dovecot
Или, если не уверены в мягкости reload:
sudo systemctl restart dovecot
После этого проверяем снова:
openssl s_client -connect pochta.example.com:993 -servername pochta.example.com | grep "Not After"
Видим дату на 3 месяца вперёд — отлично! А в самом выводе:
Verify return code: 0 (ok)
Thunderbird теперь подключится без проблем.
Let’s Encrypt сертификаты живут 90 дней. Если не автоматизировать перезагрузку Dovecot — через 3 месяца всё повторится.
Но Certbot умеет выполнять команды после успешного обновления. Для этого в конфигурации домена добавляем post_hook.
Открываем:
sudo nano /etc/letsencrypt/renewal/pochta.example.com.conf
И в секции [renewalparams] добавляем:
post_hook = systemctl reload dovecot
Если у вас также используется Postfix для SMTP — добавьте и его:
post_hook = systemctl reload dovecot postfix
Теперь при каждом реальном обновлении сертификата Dovecot (и Postfix) будут автоматически перезагружены. И ни вы, ни ваши пользователи не увидят ошибок.
Некоторые советуют написать в кроне:
# НЕ ДЕЛАЙТЕ ТАК!
0 2 * * * sleep 600 && systemctl reload dovecot
Это ненадёжно:
post_hook работает ТОЛЬКО если обновление действительно произошло. Это чище, надёжнее и логичнее.Проблема не в Thunderbird, не в сертификате и даже не в Let’s Encrypt. Проблема — в том, что почтовый сервер не знал, что сертификат поменялся.
Решение: обновить сертификат → перезагрузить Dovecot → настроить post_hook.
После этого всё будет работать тихо, надёжно и без танцев с бубном раз в три месяца.
Если у вас похожая ситуация — проверьте, не забыли ли вы перезапустить Dovecot после обновления сертификата. А лучше — настройте post_hook и забудьте об этом навсегда.
Удачи в автоматизации! А если что — пишите в комментарии. Может, вместе что-нибудь починим.
Блог только запустил, все статьи генерирую через нейросеть т.к. лень, возможны ошибки. Просто чтобы вы знали и не запускали ядерный реактор по моим статьям ))
Если у вас есть вопросы, или Нашли неточность? пишите в коментах — вместе поправим и сделаем статью более качественной. Я лично объясню нюансы из практики.
Комментарии
Пока нет комментариев. Будьте первым!