Created attachment 6080 [details] Патч - добавление проверки на наличие файлов ключа и сертификата В /etc/init.d/cyrus-imapd есть такой код: start() { is_yes "$NETWORKING" || return 0 ssl_generate "cyrus" cp -f "$SSL_CERTDIR"/cyrus.cert /var/lib/imap/ssl/ cp -f "$SSL_KEYDIR"/cyrus.key /var/lib/imap/ssl/ chmod 0640 /var/lib/imap/ssl/cyrus.{cert,key} chown root:cyrus /var/lib/imap/ssl/cyrus.{cert,key} find -L "$SSL_CERTDIR" -type l -delete start_daemon --pidfile "$PIDFILE" --lockfile "$LOCKFILE" --expect-user cyrus -- \ cyrus-master "$CYRUSOPTIONS" RETVAL=$? return $RETVAL } Патч прилагаю.
На Sisyphus.
Столько лет использую, а в init-скрипт не смотрел ни разу... Вопрос, а это копирование требуется вообще тут ? Может, вынести в какой-нибудь updatecert ?
Как раз сейчас настраиваю сервер в очередной раз: Первый запуск: # service cyrus-imapd restart Service cyrus-master is not running. [PASSED] Generating cyrus SSL private key: [ DONE ] Generating cyrus SSL certificate request: [ DONE ] Generating cyrus SSL self-signed certificate: [ DONE ] Generating cyrus SSL PEM certificate: [ DONE ] Starting cyrus-master service: [ DONE ] Второй запуск: # service cyrus-imapd start Starting cyrus-master service: [ DONE ] То есть, они копируются, но одни и те же. Сдаётся мне, что тут задумка была у vvk@ (commit d6980a67e42316b8433a60ae9994a522919a4aff) в том, чтобы сертификаты были скопированы в случае их обновления. Чем мешает копирование в момент рестарта ? Или у Вас сертификаты не лежат в общем хранилище дистрибутива (/var/lib/ssl) ?
Да, свои серверные сертификат и ключ не стал складывать в /var/lib/ssl Я просто сделал линки на сертификаты, которые положил к себе в домашний каталог (с нужными правами), но это уже несущественно. Я не понимаю, зачем при каждом запуске писать одно и то же в фаловую систему, которая вполне может быть и на флешке или SSD. Если необходимо копировать новые сертификаты, достаточно проверить время создания файлов (образцового и рабочего), это можно следать командой make. при большом желании можно и CRС сравнивать
(In reply to comment #4) > Я не понимаю, зачем при каждом запуске писать одно и то же в фаловую систему, > которая вполне может быть и на флешке или SSD. И что ? Во-первых, у современных флешек и, тем более, SSD достаточно большой ресурс. Во-вторых, cyrus-imapd должен работать - это же сервер, в конце концов. Если он перезапускается хотябы раз в сутки (а это всего 365 перезаписей в год), это уже безобразие какое-то. Кроме того, в /var/lib/imap/ существуют вообще постоянно меняющиеся данные, например, deliver.db, /var/lib/imap/db/*, /var/lib/imap/lock/*. Тут нет никакого сравнения по частоте перезаписи с копированием ключей. Таким образом, про флешку - не аргумент. > Если необходимо копировать новые сертификаты, достаточно проверить Лишний ненужный код. Единственное, что стоит обсуждать, это вариант, когда сертификаты не хранятся в /var/lib/ssl. Хорошо это, или плохо, пока не знаю. Но можно завести какой-нибудь флаг, а-ля AUTO_COPY_CERT (или USE_SYSTEM_CERT), в sysconfig/cyrus-imapd, и проверять его в скрипте.
cyrus-imapd-2.4.18-alt1 -> sisyphus: * Fri Jul 10 2015 Sergey Y. Afonin <asy@altlinux> 2.4.18-alt1 - 2.4.18 - added lsb init header - added ability to disable copying of certificates in init script (Closes: #29984)
"Ручка" для отключения лежит в /etc/sysconfig/cyrus-imapd