no way to compare when less than two revisions
Differences
This shows you the differences between two versions of the page.
Previous revision | |||
— | linux_faq:postfix-dovecot-и-active-directory [2019/02/11 09:13] (current) – external edit 127.0.0.1 | ||
---|---|---|---|
Line 1: | Line 1: | ||
+ | ====== postfix, dovecot и Active Directory ====== | ||
+ | Реализовать почтовик на Linux с пользователями из **Active Directory** можно по-разному. Рассмотрим случай, | ||
+ | ====== Postfix ====== | ||
+ | **Postfix** фильтрует входящую почту как своими средствами (проверка на различные аспекты соответствия письма и сервера отправителя rfc), а так же прогоняет ее через **amavisd**, | ||
+ | |||
+ | В этом пункте стоит обратить внимание на то, как **postfix** связан c **Active Directory**, | ||
+ | |||
+ | В нашей системе есть обычные пользователи, | ||
+ | |||
+ | Заглянем в наш **/ | ||
+ | < | ||
+ | virtual_alias_maps = ldap:/ | ||
+ | \\ | ||
+ | В файле **/ | ||
+ | |||
+ | **/ | ||
+ | < | ||
+ | debuglevel = 0 | ||
+ | version = 3 | ||
+ | server_host = ldap:// | ||
+ | search_base = ou=Users, | ||
+ | query_filter = (userPrincipalName=%s) | ||
+ | result_attribute = sAMAccountName | ||
+ | result_format = %u/ | ||
+ | bind_dn = ldap-bind@domain.local | ||
+ | bind_pw = p@$$word | ||
+ | cache = no | ||
+ | </ | ||
+ | |||
+ | **/ | ||
+ | < | ||
+ | version = 3 | ||
+ | server_host = ldap:// | ||
+ | search_base = ou=Users, | ||
+ | timeout = 3 | ||
+ | query_filter = (otherMailbox=%s) | ||
+ | result_filter = %s | ||
+ | result_attribute = userPrincipalName | ||
+ | special_result_attribute = member | ||
+ | scope = sub | ||
+ | bind = yes | ||
+ | bind_dn = ldap-bind@domain.local | ||
+ | bind_pw = p@$$word | ||
+ | </ | ||
+ | |||
+ | **/ | ||
+ | < | ||
+ | mail:/ | ||
+ | debuglevel = 0 | ||
+ | version = 3 | ||
+ | server_host = ldap:// | ||
+ | search_base = ou=Users, | ||
+ | timeout = 3 | ||
+ | query_filter = (& | ||
+ | result_filter = %s | ||
+ | result_attribute = mail | ||
+ | special_result_attribute = member | ||
+ | scope = sub | ||
+ | bind = yes | ||
+ | bind_dn = ldap-bind@domain.local | ||
+ | bind_pw = p@$$word | ||
+ | </ | ||
+ | |||
+ | **/ | ||
+ | < | ||
+ | version = 3 | ||
+ | server_host = ldap:// | ||
+ | search_base = ou=Users, | ||
+ | timeout = 3 | ||
+ | query_filter = (& | ||
+ | result_filter = %s | ||
+ | result_attribute = userPrincipalName | ||
+ | special_result_attribute = member | ||
+ | scope = sub | ||
+ | bind = yes | ||
+ | bind_dn = ldap-bind@domain.local | ||
+ | bind_pw = p@$$word | ||
+ | </ | ||
+ | Как видно, пользователей **postfix** обнаруживает по заполненному атрибуту **mail**, алиас по списку адресов в атрибуте **otherMailboxes**, | ||
+ | |||
+ | Таким образом, | ||
+ | |||
+ | ======dovecot====== | ||
+ | За доставку почты в ящики | ||
+ | В **main.cf** указан транспорт\\ | ||
+ | < | ||
+ | |||
+ | И описываем этот транспорт в **master.cf**: | ||
+ | < | ||
+ | |||
+ | Так как пользователи у нас виртуальный, | ||
+ | Куда же падают наши письма? | ||
+ | < | ||
+ | |||
+ | где **%Lu** тут - имя пользователя.\\ | ||
+ | |||
+ | Почта в ящике! Осталось ее забрать :-)\\ | ||
+ | Править конфиг по-умолчанию практически не приходится. Существенный момент - позаботимся об авторизации. Будем использовать запросы к **LDAP**. В разделе **auth default** (все в том же **dovecot.conf**) добавим: | ||
+ | < | ||
+ | |||
+ | И сам **dovecot-ldap.conf** (напоминает нам конфиги **postfix**): | ||
+ | < | ||
+ | dn = CN=ldap-user, | ||
+ | dnpass = P@$$word | ||
+ | auth_bind = yes | ||
+ | ldap_version = 3 | ||
+ | base = dc=domain, | ||
+ | deref = searching | ||
+ | scope = subtree | ||
+ | user_filter = (& | ||
+ | pass_filter = (& | ||
+ | |||
+ | Таким образом, | ||
+ | |||
+ | Немного более подробно я описал настроку почтовика на примере **iRedMail**: |