Пару дней назад, а именно 30 сентября отправился в мир иной один из сертификатов УЦ активно использующихся Let’s Encrypt и не только. А вместе с ним и всё по цепочке ниже.

На случай если такой абзац повторится, а он повторится рано или поздно. Ниже инструкция как забанить от использования такого больше не товарища.

Читать далее Прощай DST Root CA X3

Во второй версии dovecot’а есть возможность указывать разные сертификаты для разных доменов (IP адресов и протоколов).

Для этого создаем шаблон:

[ req ]
default_bits = 1024
encrypt_key = yes
distinguished_name = req_dn
x509_extensions = cert_type
prompt = no

[ req_dn ]
# country (2 letter code)
#C=FI

# State or Province Name (full name)
#ST=

# Locality Name (eg. city)
#L=Helsinki

# Organization (eg. company)
#O=Dovecot

# Organizational Unit Name (eg. section)
OU=IMAP server

# Common Name (*.example.com is also possible)
CN=imap.example.com

# E-mail contact
emailAddress=postmaster@example.com

[ cert_type ]
nsCertType = server

и сертификат:

# openssl req -new -x509 -nodes -config cert.cnf -out dovecot-domain-crt.pem -keyout dovecot-domain-key.pem -days 365

перемещаем сертификат и ключ куда надо, задаем права на файлы и т.д.

#  mv dovecot-crt.pem /etc/pki/dovecot/cert/dovecot-domain-crt.pem

#  mv dovecot-key.pem /etc/pki/dovecot/private/dovecot-domain-key.pem

# chmod 0600 /etc/pki/dovecot/cert/dovecot-domain-crt.pem

# chmod 0600 /etc/pki/dovecot/private/dovecot-domain-key.pem

# openssl x509 -subject -fingerprint -noout -in /etc/pki/dovecot/certs/dovecot-domain-crt.pem

далее необходимо поправить конфигурацию ssl для dovecot /etc/dovecot/conf.d/10-ssl.conf находим

ssl_cert = </etc/pki/dovecot/certs/dovecot.pem
ssl_key = </etc/pki/dovecot/private/dovecot.pem

и НИЖЕ ДОБАВЛЯЕМ

local xx.xx.xx.xx {
protocol pop3 {
ssl_cert = </etc/pki/dovecot/certs/dovecot-domain-crt.pem
ssl_key = </etc/pki/dovecot/private/dovecot-domain-key.pem
}
}

Стандартную секцию необходимо оставить, иначе вы будете получать ошибку doveconf: Error: ssl enabled, but ssl_cert not set

вместо local <ваш IP> можно использовать local_name domain.tld, в этом случае секция с protocol pop3 не нужна, но вам понадобится поддержка TLS SNI (Server Name Indication)!

Настраивая что-нибудь в центоси вы обязательно огребете проблем если у вас включен SELinux.

Таким замечательным примером может служить настройка Postfix с SASL аутентификацией в Dovecot. Вы спокойно сделали конфиги, всё проверили, рестартанули сервисы, а в результате нижуя не работает! WTF? Это няши, SELinux.

Идем в лог /var/log/maillog и любуемся такой вот ошибкой:

localhost postfix/smtpd: warning: SASL: Connect to private/auth failed: Permission denied

Благодарим это чудо за чудесную ночь секаса или же берем клаву и ставив на место это безобразие (:

grep smtpd_t /var/log/audit/audit.log | audit2allow -M postfixsasl

коротко о команде — найти smtpd_t в логе аудита и создать на основе этого правило для selinux

semodule -i posfixsasl.pp

добавляем правило в проклятый selinux, перезапускаем сервис(ы) и всё няшно. Эх, если бы я нашла эту фичку год назад…

 

Дополнительно:

Иногда может случиться так, что вы вроде бы всё добавили (например, модули для munin), а что-то всё ещё не работает из-за SELinux’a. Причиной этому может быть то, что события блокировки попадают под donotaudit события. В этом случае можно временно включить donotaudit события командой:

semodule -DB

и потом вернуть обратно

semodule -B

 

Так же, помимо описанного выше способа поиска для создания правил. Можно воспользоваться командой:

ausearch -m avc -ts today | audit2allow -M myfix

Которая автоматически поищет все события и создаст правила для их разрешения.

 

p.s.

Вот тут: гайд как это работает + ещё примеры для тех кто любит и пожестче.