postfix_dovecot_active_directory
Различия
Показаны различия между двумя версиями страницы.
| — | postfix_dovecot_active_directory [2022/03/25 14:00] (текущий) – создано - внешнее изменение 127.0.0.1 | ||
|---|---|---|---|
| Строка 1: | Строка 1: | ||
| + | ====== Почта Postfix + Dovecot с интеграцией в MS Active Directory ====== | ||
| + | ===== Введение ===== | ||
| + | В данной статье я хочу структурировать клочки информации по теме, которые мне удалось найти в интернете. Данная тема не новая, но внятного-понятного howto, с пояснениями и т.д. найти не удалось, | ||
| + | Итак, в данном мануале будет рассмотрен вопрос разворачивания внутренней корпоративной почты, т.е. почта которая работает только в пределах локальной сети, для внутренних нужд организации, | ||
| + | Для чего все это нужно? Ну, во-первых, | ||
| + | |||
| + | Итак, имеем домен под управлением Windows Server 2012, режим леса и режим домена - 2012. Почтовый сервер - GNU/Debian 7.0 (Postfix 2.9, Dovecot 2.1). | ||
| + | |||
| + | ===== Установка ===== | ||
| + | |||
| + | Устанавливаем все необходимое | ||
| + | < | ||
| + | # apt-get install dovecot-common dovecot-ldap dovecot-imapd dovecot-pop3d postfix postfix-ldap | ||
| + | </ | ||
| + | |||
| + | ===== Dovecot ===== | ||
| + | Начнем с Dovecot. Конфиг у него достаточно объемный, | ||
| + | |||
| + | / | ||
| + | # Включаем plaintext аунтификацию, | ||
| + | # А если нужна безопасность, | ||
| + | disable_plaintext_auth = no | ||
| + | | ||
| + | / | ||
| + | # Указываем куда класть дополнительные логи | ||
| + | | ||
| + | debug_log_path = / | ||
| + | | ||
| + | # Ну и включаем всевозможные логи, помогут нам при отладке, | ||
| + | # особенно логирование паролей | ||
| + | | ||
| + | auth_verbose = yes | ||
| + | auth_debug = yes | ||
| + | auth_debug_passwords = yes | ||
| + | mail_debug = yes | ||
| + | | ||
| + | / | ||
| + | # Указываем путь, по которому будет хранится пользовательская почта, также указываем формат(maildir) | ||
| + | # %u - полное имя пользователя(с доменной частью: | ||
| + | # %n - короткое имя пользователя(без доменной части: user) | ||
| + | # %d - доменная часть(domail.local), | ||
| + | # %h - домашний каталог, | ||
| + | | ||
| + | mail_location = maildir:/ | ||
| + | | ||
| + | # Два нижних параметра очень важны, они указывают дефолтные uid и gid пользователя, | ||
| + | # не удалось извлечь из AD. Эти данные используются для установки прав доступа к maildir пользователя. | ||
| + | # Почтовику нужно знать хотя бы uid, иначе, если не указать эти данные, | ||
| + | # " | ||
| + | # поля: uidNumber и gidNumber, но они пусты по-умолчанию, | ||
| + | # никакого смысла, | ||
| + | # показывать как это делать) и смотрим идентификатор этого пользователя и идентификатор его группы | ||
| + | # (id vmail), затем вписываем их в параметры ниже. Теперь вся почта будет принадлежать пользователю vmail. | ||
| + | # Поля, в которых Dovecot ищет нужную информацию задаются параметром user_attrs. | ||
| + | | ||
| + | mail_uid = 1001 | ||
| + | mail_gid = 1001 | ||
| + | |||
| + | / | ||
| + | # Local Delivery Agent - через этот механизм postfix будет контактировать с dovecot. | ||
| + | protocol lda { | ||
| + | hostname = mail.domain.local | ||
| + | mail_plugin_dir = / | ||
| + | postmaster_address = admin@domail.local | ||
| + | sendmail_path = / | ||
| + | } | ||
| + | | ||
| + | / | ||
| + | passdb { | ||
| + | driver = ldap | ||
| + | args = / | ||
| + | } | ||
| + | | ||
| + | userdb { | ||
| + | driver = ldap | ||
| + | args = / | ||
| + | | ||
| + | # Тут мы снова задаем дефолтные значения для некоторых важных параметров | ||
| + | default_fields = home=/ | ||
| + | } | ||
| + | | ||
| + | / | ||
| + | # Задаем адрес нашего DC, либо его имя. А еще лучше указать имя домена domain.local, | ||
| + | # соединение будет устанавливаться с любым доступным DC в домене(при условии корректно | ||
| + | # функционирующего DNS). Но на этапе отладки лучше прописать IP-адрес. | ||
| + | uris = ldap:// | ||
| + | | ||
| + | # Здесь прописываем путь к пользователю, | ||
| + | # необходимой информации. В целях безопасности этот пользователь должен иметь права только на чтение. | ||
| + | # Пользователя в AD нужно создать заранее. Вроде, здесь можно использовать формат reader@domail.local | ||
| + | dn = cn=reader, | ||
| + | | ||
| + | # Пароль этого пользователя. | ||
| + | dnpass = passw0rd | ||
| + | | ||
| + | # Использовать ли защищенное соединение? | ||
| + | tls = no | ||
| + | | ||
| + | # Подключаться к AD | ||
| + | auth_bind = yes | ||
| + | | ||
| + | # Формат имени пользователя | ||
| + | auth_bind_userdn = %n@domain.local | ||
| + | | ||
| + | # Версия протокола | ||
| + | ldap_version = 3 | ||
| + | | ||
| + | # Где искать пользователей, | ||
| + | # всех подразделениях | ||
| + | base = ou=AllUsers, | ||
| + | | ||
| + | deref = searching | ||
| + | | ||
| + | scope = subtree | ||
| + | | ||
| + | # Фильтрация пользователей. Также указываем по чему будем идентифицировать их. Если домен AD и | ||
| + | # почтовый домен совпадают - проще всего по userPrincipalName, | ||
| + | # При желании можно с помощью побитовых фильтров отсечь заблокированных пользователей: | ||
| + | # user_filter = (& | ||
| + | # pass_filter = (& | ||
| + | | ||
| + | user_filter = (& | ||
| + | pass_filter = (& | ||
| + | | ||
| + | На этом все, теперь можно попробовать почтовым клиентом забрать почту. В качестве логина нужно указывать имя пользователя с доменной частью: | ||
| + | <note important> | ||
| + | Не забудьте назначить владельцем каталога /srv/vmail пользователя vmail. | ||
| + | </ | ||
| + | |||
| + | ===== Postfix ===== | ||
| + | Конфиг Postfix привожу целиком, | ||
| + | |||
| + | / | ||
| + | # Понятное дело, тут надо указать свой адрес интерфейса | ||
| + | inet_interfaces = 192.168.0.10 | ||
| + | smtpd_banner = $myhostname ESMTP ready | ||
| + | biff = no | ||
| + | append_dot_mydomain = no | ||
| + | | ||
| + | # Включаем TLS | ||
| + | smtpd_tls_cert_file=/ | ||
| + | smtpd_tls_key_file=/ | ||
| + | smtpd_use_tls=yes | ||
| + | smtpd_tls_session_cache_database = btree: | ||
| + | smtp_tls_session_cache_database = btree: | ||
| + | | ||
| + | # Base parameters | ||
| + | | ||
| + | myhostname = mail.domail.local | ||
| + | alias_maps = hash:/ | ||
| + | alias_database = hash:/ | ||
| + | myorigin = domail.local | ||
| + | mydomain = domail.local | ||
| + | mydestination = $myhostname, | ||
| + | relayhost = | ||
| + | mynetworks = 127.0.0.0/ | ||
| + | recipient_delimiter = + | ||
| + | inet_interfaces = all | ||
| + | unknown_local_recipient_reject_code = 550 | ||
| + | debug_peer_level = 2 | ||
| + | debug_peer_list = 127.0.0.1, domail.local | ||
| + | message_size_limit = 50000000 | ||
| + | | ||
| + | # ---------------------- VIRTUAL DOMAINS START ---------------------- | ||
| + | virtual_transport = dovecot | ||
| + | virtual_mailbox_base | ||
| + | virtual_mailbox_domains | ||
| + | | ||
| + | # Указываем на конфиг, | ||
| + | virtual_mailbox_maps | ||
| + | | ||
| + | # Указываем на конфиги, | ||
| + | virtual_alias_maps | ||
| + | | ||
| + | virtual_minimum_uid | ||
| + | | ||
| + | # Идентификатор пользователя vmail | ||
| + | virtual_uid_maps | ||
| + | virtual_gid_maps | ||
| + | virtual_transport | ||
| + | dovecot_destination_recipient_limit = 1 | ||
| + | # ---------------------- VIRTUAL DOMAINS END ---------------------- | ||
| + | | ||
| + | # Т.к. у меня почта локальная, | ||
| + | smtpd_recipient_restrictions = check_recipient_access hash: | ||
| + | smtpd_sender_restrictions = check_sender_access hash: | ||
| + | |||
| + | В этот файл, в конец добавялем описание транспорта Dovecot / | ||
| + | # Dovecot LDA | ||
| + | dovecot | ||
| + | flags=DRhu user=vmail: | ||
| + | | ||
| + | / | ||
| + | # Адрес LDAP-сервера, | ||
| + | server_host = ldap:// | ||
| + | | ||
| + | # Где искать пользователей | ||
| + | search_base = ou=AllUsers, | ||
| + | version = 3 | ||
| + | | ||
| + | # По какому полю идентифицируем пользователей | ||
| + | query_filter = (& | ||
| + | result_attribute = userPrincipalName | ||
| + | | ||
| + | result_format = %u/ | ||
| + | bind_dn = reader@domain.local | ||
| + | bind_pw = passw0rd | ||
| + | cache = no | ||
| + | |||
| + | / | ||
| + | version = 3 | ||
| + | server_host = ldap:// | ||
| + | search_base = ou=AllUsers, | ||
| + | timeout = 3 | ||
| + | | ||
| + | # Поле, в котором будем искать почтовые псевдонимы. Я использовал mail, т.к. оно доступно через редактирование свойств пользователя | ||
| + | # стандартными средствами, | ||
| + | # псевдонимов, | ||
| + | # query_filter = (otherMailbox=%s) | ||
| + | # но в этом случае придется его редактировать через ADSI edit, что не очень удобно. | ||
| + | # Альтернативный вариант - добавить в main.conf в секцию virtual_alias_maps еще один аналогичный файл, только с otherMailbox вместо mail, | ||
| + | # тогда псевдонимы будут просматриваться в обоих местах. | ||
| + | | ||
| + | query_filter = (mail=%s) | ||
| + | | ||
| + | result_filter = %s | ||
| + | result_attribute = userPrincipalName | ||
| + | special_result_attribute = member | ||
| + | scope = sub | ||
| + | bind = yes | ||
| + | bind_dn = reader@burut.org | ||
| + | bind_pw = readerpass | ||
| + | | ||
| + | / | ||
| + | #debuglevel = 0 | ||
| + | version = 3 | ||
| + | server_host = ldap:// | ||
| + | search_base = ou=AllUsers, | ||
| + | timeout = 3 | ||
| + | | ||
| + | # Запрашиваем группы распространения(специальный тип групп в AD), отфильтровываем мы их с помощью sAMAccountType=268435457, | ||
| + | # любого объекта можно также через ADSI edit, у групп распространения он соответствует 268435457 | ||
| + | | ||
| + | query_filter = (& | ||
| + | | ||
| + | result_filter = %s | ||
| + | result_attribute = userPrincipalName | ||
| + | special_result_attribute = member | ||
| + | scope = sub | ||
| + | bind = yes | ||
| + | bind_dn = reader@domain.local | ||
| + | bind_pw = passw0rd | ||
| + | |||
| + | Чтобы создать группу рассылки, | ||
| + | |||
| + | Теперь создаем список разрешенных доменов (он у нас один). | ||
| + | < | ||
| + | # echo " | ||
| + | |||
| + | # postmap / | ||
| + | </ | ||
| + | |||
| + | На этом настройка закончена, | ||
| + | |||
| + | ===== Почтовый клиент ===== | ||
| + | Настройка почтового клиента никаких особых хитростей не имеет, единственное что надо учитывать, | ||
| + | |||
| + | Также, при условии, | ||
| + | |||
| + | Для этого заходим в параметры учетной записи -> Составление и адресация -> Адресация, | ||
| + | |||
| + | {{ : | ||
| + | |||
| + | В появившемся окне жмем " | ||
| + | |||
| + | {{ : | ||
| + | |||
| + | Кликаем несколько раз ОК и в последнем окне выбираем наш каталог и еще раз кликаем ОК. Все, на этом настройка завершена. | ||
| + | |||
| + | {{ : | ||
| + | ===== Использованная литература ===== | ||
| + | |||
| + | - [[http:// | ||
| + | - [[http:// | ||
| + | - [[http:// | ||
| + | |||
