Каковы риски перехода с паролей MD5 на CRAM-MD5 в базе данных, особенно с учетом следующего, и как подойти к этому для существующей установки (при условии, что я знаю пароли в виде обычного текста)?
С (переходом на) CRAM-MD5,
doveadm pw
) при создании пользователя и изменении пароляПункт 2 может не иметь большого значения, поскольку я не планирую заменять Dovecot (и даже если у него есть хорошо документированные пути миграции, IMHO). Пункт 3 не имеет большого значения все же (поскольку я не знаю таких инструментов). За кулисами есть также SASL, который, IIRC, снова выполняет эту часть своей работы с помощью Dovecot (например, smtpd_sasl_type=dovecot
в конфиге Postfix). Но, может быть, я что-то упустил - будь то еще одна проблема или другой вариант.
Есть подсказки? Что бы вы порекомендовали (кроме полностью разные настройки)?
Я нахожусь в процессе настройки нового почтового сервера, использую Dovecot, Postfix, PostfixAdmin, Sieve, некоторые дополнительные компоненты - все они связаны с MySQL в качестве бэкэнда (не следуя этот немецкий учебник). Пока у меня все работает, но потом я заметил, что для аутентификации IMAP доступны только PLAIN и LOGIN. Не имеет большого значения для местный соединения (например, веб-почтовая программа Roundcube на том же компьютере) и другие «зашифрованные соединения» (HTTPS / IMAPS / POP3S / SMTPS) - но я боюсь, что некоторые пользователи будут использовать вместо этого незашифрованные соединения, которые я не хочу полностью отключить (есть ситуации, когда это может понадобиться).
Поэтому я включил CRAM-MD5 и DIGEST-MD5 в Dovecot - что, конечно, не могло работать: PostfixAdmin хранит пароли в базе данных, используя свою внутреннюю процедуру MD5, и поэтому Dovecot не может сопоставить их (см. мой ответ здесь подробнее). Что в основном оставляет мне 3 варианта, один из которых даже не таковой:
Из исследования «участников» вот сравнение возможностей:
PwdStore MD5 PwdStore CRAM-DM5 Webmail (Roundcube) Client/Server HTTPS only (HTTP requests would be upgraded, so PLAIN = OK) IMAP PLAIN PLAIN / CRAM-MD5 (internal)² SMTP PLAIN PLAIN / CRAM-MD5 (internal)² Native Clients (connecting to Postfix/Dovecot) IMAP³ PLAIN / LOGIN PLAIN / LOGIN / CRAM-MD5 SMTP³ PLAIN / LOGIN PLAIN / LOGIN / CRAM-MD5 POP3³ PLAIN / LOGIN PLAIN / LOGIN / CRAM-MD5 IMAPS PLAIN / LOGIN PLAIN / LOGIN / CRAM-MD5 SMTPS PLAIN / LOGIN PLAIN / LOGIN / CRAM-MD5 POP3S PLAIN / LOGIN PLAIN / LOGIN / CRAM-MD5 PostfixAdmin Create/Update MD5 (internal) CRAM-MD5 (via dovecotadm)⁴
1: Я только что проверил источники и обнаружил в postfixadmin/functions.inc.php
в строке 928:
Use proc_open call to avoid safe_mode problems and to prevent showing plain password in process table
Так что этот контраргумент, похоже, не выдерживает критики.
2: roundcube/program/lib/Roundcube/rcube_imap_generic.php
строка 90ff, в function authenticate()
3: ОБЫЧНЫЙ / ВХОД обычно отключен для незашифрованных соединений
4: Может быть переписан с использованием кода из Roundcube, поскольку оба написаны на PHP, но PostfixAdmin
Поскольку я не получил ответов, я поэкспериментировал сам и, наконец, переключился, и все прошло гладко. Преимущество, как было сказано изначально, состоит в том, CRAM-MD5
доступны для аутентификации на незашифрованном транспорте, если шифрованный транспорт недоступен (да, такое случается), плюс упрощает переход со старого сервера для тех, кто уже использует там CRAM-MD5. Кроме того, побочных эффектов не наблюдалось. все же - хотя это может занять некоторое время :)
Итак, для заинтересованных, вот шаги, которые необходимо выполнить:
default_pass_scheme
из MD5-CRYPT
к CRAM-MD5
в твоем /etc/dovecot/dovecot-mysql.conf
(или соответствующий файл, который вы используете), затем добавьте cram-md5
к auth_mechanisms
в /etc/dovecot/dovecot.conf
smtpd_sasl_type=dovecot
) - так что тут делать нечегоconfig.inc.php
: $CONF['encrypt'] = 'md5crypt';
должен быть изменен на $CONF['encrypt'] = 'dovecot:CRAM-MD5';
. Также проверьте $CONF['dovecotpw'] = "/usr/sbin/doveadm pw";
- например, на Debian Wheezy, doveadm
проживает в /usr/bin
и поэтому требует, чтобы этот параметр был измененГотово. Теперь вы можете проверить, все ли работает. В моем случае это было так: Roundcube все еще мог аутентифицировать PLAIN - и теперь удаленный клиент мог использовать CRAM-MD5. Дело решено, для меня.