Сначала прочтите предыдущую часть
Эта статья является шестой частью серии «Настройка почтового сервера на Linux».
В предыдущей части мы завершили проектирование таблицы виртуальных учетных записей пользователей с использованием PostgreSQL.
Если вы еще не ознакомились с ней, настоятельно рекомендуем это сделать.
👉 Предыдущая часть: Понятие виртуальных пользователей Dovecot и проектирование таблицы PostgreSQL
Что такое настройка auth-sql.conf.ext
для Dovecot?
Чтобы Dovecot аутентифицировал виртуальных пользователей через базу данных, а не через системные учетные записи, необходимо настроить файл auth-sql.conf.ext
.
С помощью этой настройки Dovecot может получать информацию о пользователях из PostgreSQL и производить аутентификацию.
Настройка SQL аутентификации для Dovecot (auth-sql.conf.ext
)
Основные элементы, которые необходимо настроить для подключения Dovecot к PostgreSQL, следующие:
1. Путь к файлу конфигурации
Файл конфигурации располагается по следующему пути.
/etc/dovecot/conf.d/auth-sql.conf.ext
Если файл отсутствует, его можно создать следующей командой:
sudo touch /etc/dovecot/conf.d/auth-sql.conf.ext
2. Основные элементы настройки
driver = sql
connect = host=localhost dbname=mail user=mailadmin password=yourpassword
default_pass_scheme = SHA256-CRYPT
password_query = SELECT email AS user, password FROM mail_users WHERE email='%u';
user_query = SELECT home_directory AS home FROM mail_users WHERE email='%u';
Описание настроек
driver = sql
→ Использование аутентификации на основе SQLconnect = host=localhost dbname=mail user=mailadmin password=yourpassword
→ Информация о подключении к PostgreSQLdefault_pass_scheme = SHA256-CRYPT
→ Указание алгоритма хеширования паролей по умолчанию. Если используется bcrypt, установить 'BLF-CRYPT'password_query
→ Сравнение введенного пользователем пароля с хешем, полученным из базы данныхuser_query
→ Возврат пути хранения почты пользователя
3. Перезапуск службы Dovecot
После применения настроек необходимо перезапустить Dovecot.
sudo systemctl restart dovecot
Тестирование интеграции Dovecot и PostgreSQL
Чтобы проверить, правильно ли применены настройки, используйте следующую команду.
1. Тест аутентификации
doveadm auth test user@example.com password123
Если настройки выполнены корректно, аутентификация с помощью passdb
должна пройти успешно.
2. Проверка логов на ошибки
Если настройки применены некорректно, можно проверить логи для анализа причины.
journalctl -xe | grep dovecot
Способы хеширования паролей (Сравнение и применение MD5, SHA-256, BCRYPT)
Когда Dovecot и PostgreSQL интегрируются, пароли должны храниться только в хешированном виде.
Поскольку разные способы хеширования имеют различную безопасность и производительность, следует быть внимательным при их выборе.
1. Сравнение методов хеширования
Метод хеширования | Уровень безопасности | Скорость | Примеры использования |
---|---|---|---|
MD5 | Уязвимый (возможны коллизии) | Быстрый | Не рекомендован |
SHA-256 | Средний (относительная безопасность) | Умеренный | При необходимости общей безопасности |
BCRYPT | Высокая безопасность | Медленный | При высоких требованиях к безопасности |
Поскольку у MD5 известна уязвимость, его лучше не использовать.
SHA-256 обычно широко используется и сбалансирован между скоростью и безопасностью.
BCRYPT предлагает наивысший уровень безопасности, но имеет более медленную скорость, что может потребовать учета производительности в специфичных условиях.
Хеширование паролей с использованием команды Dovecot (doveadm pw
)
Вы также можете непосредственно хешировать пароли в Dovecot.
1. Хеширование SHA-256
doveadm pw -s SHA256-CRYPT
После ввода пароля будет сгенерировано следующее хеш-значение.
{SHA256-CRYPT}$5$rounds=5000$abc123def456$ABCDEF1234567890ABCDEF1234567890
2. Хеширование BCRYPT
doveadm pw -s BLF-CRYPT
Пример вывода:
{BLF-CRYPT}$2a$05$abcdefghij1234567890ABCDEFGHIJKL$CDEFGHIJKLMNOPQRSTUVWXYZ123456
Это хеш-значение необходимо сохранить в таблице mail_users
PostgreSQL.
Хеширование непосредственно в PostgreSQL с использованием расширения pgcrypto
С помощью расширения pgcrypto
в PostgreSQL вы можете хешировать пароли без doveadm
.
1. Активируйте расширение pgcrypto
CREATE EXTENSION IF NOT EXISTS pgcrypto;
2. Хранение пароля с хешированием SHA-256
INSERT INTO mail_users (domain_id, email, password, home_directory)
VALUES (1, 'user@example.com', crypt('mypassword', gen_salt('bf')), '/var/mail/vmail/user@example.com');
3. Хранение пароля с хешированием BCRYPT
INSERT INTO mail_users (domain_id, email, password, home_directory)
VALUES (1, 'user@example.com', crypt('mypassword', gen_salt('bf', 12)), '/var/mail/vmail/user@example.com');
Итоги и следующие шаги
Темы, рассмотренные в этой статье
- Как настроить auth-sql.conf.ext
для Dovecot
- Как протестировать интеграцию Dovecot с PostgreSQL
- Как применить хеширование SHA-256 и BCRYPT
- Как хешировать напрямую в PostgreSQL
Анонс следующей части: Интеграция SMTP аутентификации Postfix и Dovecot
Теперь, когда Dovecot настроен, следующий шаг - это настройка Postfix для использования аутентификации Dovecot.
👉 Следующая часть: Интеграция SMTP аутентификации Postfix и Dovecot (Скоро!)
댓글이 없습니다.