В продолжение группы заметок об особенностях настройки серверной инфраструктуры под Linux (про Samba и AppArmor я уже писал), привожу свои изыскания на тему установки почтового сервера в CentOS.
В принципе, при настройке почтового сервера можно столкнуться с тремя проблемами:
1. Авторизация пользователей
2. Взаимодействие компонентов почтового сервера (транспортного агента и агента доставки)
3. Ограничения SELinux/AppArmor/TrustedBSD/...
Если первым двум вопросам посвящено несчётное число статей и книг, то последнему вопросу почему-то уделяют достаточно мало внимания, а если и уделяют, то чаще всего рекомендуют "разрешить всё" (либо выключением SELinux, либо, более локально, но не менее топорно, добавлением контекста службы в список неконтролируемых командой типа
На данный момент наиболее информативный материал по SELinux на русском языке мне удалось найти на портале проекта Fedora, собственно, прочитав данный материал, я и обозначил оптимальный путь решения проблем с dovecot.
Итак, мой почтовый сервер сконфигурирован на хранение локальных почтовых баз в каталоге
В принципе, при настройке почтового сервера можно столкнуться с тремя проблемами:
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
[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 является достаточным для нормального функционирования почтовой системы.
Комментариев нет:
Отправить комментарий