Статьи‎ > ‎

Настройки SELinux для работы почтового сервера Dovecot

В продолжение группы заметок об особенностях настройки серверной инфраструктуры под Linux (про Samba и AppArmor я уже писал), привожу свои изыскания на тему установки почтового сервера в CentOS.
В принципе, при настройке почтового сервера можно столкнуться с тремя проблемами:
1. Авторизация пользователей
2. Взаимодействие компонентов почтового сервера (транспортного агента и агента доставки)
3. Ограничения SELinux/AppArmor/TrustedBSD/...
Если первым двум вопросам посвящено несчётное число статей и книг, то последнему вопросу почему-то уделяют достаточно мало внимания, а если и уделяют, то чаще всего рекомендуют "разрешить всё" (либо выключением SELinux, либо, более локально, но не менее топорно, добавлением контекста службы в список неконтролируемых командой типа semanage permissive -a dovecot_t), чем низвергают саму идею использования технологии улучшенной безопасности.
На данный момент наиболее информативный материал по SELinux на русском языке мне удалось найти на портале проекта Fedora, собственно, прочитав данный материал, я и обозначил оптимальный путь решения проблем с dovecot.
Итак, мой почтовый сервер сконфигурирован на хранение локальных почтовых баз в каталоге /var/vmail. При попытке доступа клиентов к своим сообщениям по imap, я получал маловразумительную ругань в maillog и жалобы SELinux в messages: Aug 15 11:23:08 centserv setroubleshoot: SELinux is preventing /usr/libexec/dovecot/imap from write access on the directory vmail. For complete SELinux messages. run sealert -l 5067c69c-7b82-4b05-9676-1ba77bb56f04. Привычный мне способ многократного запуска setroubleshoot с последующим созданием исключений audit2allow и их импортом, в данном случае выглядел явным костылём, и я заставил себя отправиться "в библиотеку", откуда я вынес замечательное решение - надо объявить SELinux, что /var/vmail является местом хранения почтовых ящиков dovecot, для чего необходимо изменить контекст данному каталогу:

[root@centserv var]# semanage fcontext -a -t mail_home_rw_t /var/vmail

[root@centserv var]# restorecon -v /var/vmail
restorecon reset /var/vmail context unconfined_u:object_r:var_t:s0->unconfined_u:object_r:mail_home_rw_t:s0

Хотелось бы ещё заменить unconfined_u на system_u, но в принципе, mail_home_rw_t является достаточным для нормального функционирования почтовой системы.

Comments