Всем доброго дня! Голову сломал.
Есть postfix 2.11 + dovecot 2.0.20 + mysql на centos 6.5 и есть ActiveDirectory на windows server 2003.
Появилась необходимость интеграции всего этого хозяйства с AD. Просто напросто юзеров очень много, и я понимаю что создавать столько почтовых ящиков дело мутарное,
а потом еще и пароли для пользователей раздавать.
Только сразу с гугл или поиск не посылайте, перерыл кучу всего. Не получается заставить Dovecot авторизовываться.
Едиственное уточнение. Домен AD - corp.contoso.com,
почтовый сервер mail.local.lan и почтовый домен соответственно local.lan

Вот конфиги.


main.cf

soft_bounce = no
queue_directory = /var/spool/postfix
command_directory = /usr/sbin
daemon_directory = /usr/libexec/postfix
data_directory = /var/lib/postfix
mail_owner = postfix
default_privs = nobody
inet_interfaces = all
myhostname = mail.analit.lan
mydomain = analit.lan
myorigin = $mydomain
mydestination = $myhostname,localhost.$myhostname,localhost
#local_recipient_maps = $virtual_mailbox_maps, $virtual_alias_maps
local_recipient_maps = proxy:unix:passwd.byname $alias_maps
unknown_local_recipient_reject_code = 550
mynetworks = 127.0.0.0/8
relay_domains =
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
mail_spool_directory = /var/mail
smtpd_banner = $myhostname ESMTP ready
recipient_delimiter = +
debug_peer_level = 2
debug_peer_list = 127.0.0.1
debugger_command =
    PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin
    xxgdb $daemon_directory/$process_name $process_id & sleep 5
sendmail_path = /usr/sbin/sendmail
mailq_path = /usr/bin/mailq
setgid_group = postdrop
html_directory = no
manpage_directory = /usr/local/man
config_directory = /etc/postfix
virtual_mailbox_domains = $mydomain
virtual_mailbox_base = /var/vmail
virtual_mailbox_maps = ldap:$config_directory/virtual_mailbox_maps.conf
virtual_alias_maps = ldap:$config_directory/virtual_alias.conf, ldap:$config_directory/virtual_mlist.conf
virtual_minimum_uid = 1150
virtual_uid_maps = static:1150
virtual_gid_maps = static:12
virtual_transport = dovecot
dovecot_destination_recipient_limit = 1
#------------------------------TSL----------------------------------
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous, noplaintext
smtpd_sasl_tls_security_options = noanonymous
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth-client
#------------------------------TSL_END------------------------------

virtual_mailbox_maps.conf

server_host = 10.2.0.105:3268
search_base = DC=corp,DC=contoso,DC=com
version = 3
scope = sub
query_filter = (&(objectClass=person)(mail=%s))
result_attribute = mail
result_format = %s/
bind = yes
bind_dn = CN=ldap_user,CN=Users,DC=corp,DC=contoso,DC=com
bind_pw = qwer1234++
start_tls = no
cache = no

Выполняю

postmap -q "user@local.lan" ldap:/etc/postfix/virtual_mailbox_maps.cf
user@local.lan/

Получается postfix авторизуется в AD.

dovecot-ldap.conf

hosts = 10.2.0.105:3268
dn = ldap_user@corp.contoso.com
dnpass = qwer1234++
auth_bind = yes
#auth_bind_userdn = %Lu
ldap_version = 3
base = DC=corp,DC=contoso,DC=com
deref = finding
scope = subtree
user_filter = (&(objectClass=person)(mail=%u))
#user_attrs =
pass_filter = (&(objectClass=person)(mail=%u))
pass_attrs = uid=mail, userPassword=password
[root@mail dovecot]# telnet localhost pop3
Trying ::1...
Connected to localhost.
Escape character is '^]'.
+OK Dovecot ready.
user ldap_user
+OK
pass qwer1234++
-ERR Authentication failed.
May 15 16:19:23 auth: Info: ldap(ldap_user,::1): unknown user
May 15 16:20:06 pop3-login: Info: Aborted login (auth failed, 1 attempts): user=<ldap_user>, method=PLAIN, rip=::1, lip=::1, secured
May 15 16:18:56 auth: Debug: Loading modules from directory: /usr/lib64/dovecot/auth
May 15 16:18:56 auth: Debug: Module loaded: /usr/lib64/dovecot/auth/libauthdb_ldap.so
May 15 16:18:56 auth: Debug: Module loaded: /usr/lib64/dovecot/auth/libdriver_sqlite.so
May 15 16:18:56 auth: Debug: Module loaded: /usr/lib64/dovecot/auth/libmech_gssapi.so
May 15 16:18:56 auth: Debug: auth client connected (pid=1930)
May 15 16:19:23 auth: Debug: client in: AUTH    1       PLAIN   service=pop3    secured lip=::1 rip=::1 lport=110       rport=44939     resp=AGxkYXBfdXNlcgBxd2VyMTIzNCsr
May 15 16:19:23 auth: Debug: ldap(ldap_user,::1): bind search: base=DC=oasupiit,DC=analitpribor,DC=com filter=(&(objectClass=person)(mail=ldap_user))
May 15 16:19:25 auth: Debug: client out: FAIL   1       user=ldap_user

Помогите подружить Dovecot с AD.

2 (16.05.2014 11:36:18 отредактировано AlfaStriker)

Как твои продвижения?

У меня получилось не до конца сделать через Dovecot + Winbind.

Учетки берутся из AD, письма отправляются, но вылезла трабла c правами и каталогом почты.

Итого работает, но нормально проверит не получается. Может косячное решение ab

3 (23.06.2014 16:17:50 отредактировано AlfaStriker)

Исходные данные:
- Машина Windows 2003, роли AD+DNS, домен - company.local, локальный ip адрес - 10.168.50.8, доменный администратор - AlfaStriker
- Машина CentOS 6.5, почтовый сервер, установлено Postfix+Dovecot+RoundCube, домен - company.ru, локальный  ip адрес - 10.168.50.2 , белый реальный ip - 111.222.333.444

Задача:
Подружить Dovecot  с Windows Active Directory

Используемые средства для достижения цели:
PAM + Winbind + Samba +Kerberos

Идем по шагам:
1. Вводим CentOS в домен - company.local
2. Настраиваем Dovecot
3. Настраиваем Postfix
4. Проверка работы из RoundCube

1. Вводим CentOS в домен - company.local
Настраиваем имя хоста:

vi /etc/hosts

Добавляем две строчки:

10.168.50.2 mx.company.local mx
10.168.50.8 pdc.company.local pdc

Настраиваем синхронизацию времени с доменным контроллером:

vi /etc/ntp.conf

Добавляем строчку:

server company.local

service ntpd restart

Устанавливаем Samba + Winbind

yum install samba samba-winbind samba-winbind-clients

authconfig --update \
--kickstart \
--enablewinbind \
--enablewinbindauth \
--smbsecurity=ads \
--smbworkgroup=company \
--smbrealm=company.local \
--smbservers=10.168.50.8 \
--winbindjoin=AlfaStriker \
--winbindtemplatehomedir=/home/%U \
--winbindtemplateshell=/bin/bash \
--enablewinbindusedefaultdomain \
--enablelocauthorize

Запросят пароль доменного администратора.

Password for AlfaStriker@COMPANY.LOCAL:

*************

Запросим билет любого доменного пользователя:

# kinit AlfaStriker@COMPANY.LOCAL

Password for AlfaStriker@COMPANY.LOCAL:

************

Убедимся что билет есть:

# klist

Ticket cache: FILE:/tmp/krb5cc_0
Default principal: AlfaStriker@COMPANY.LOCAL
Valid starting     Expires            Service principal
05/15/14 10:02:04  05/15/14 20:02:02  krbtgt/COMPANY.LOCAL@COMPANY.LOCAL
renew until 05/22/14 10:02:04

Редактируем  /etc/samba/smb.conf, вставляем текст после **end-line--:

#--authconfig--end-line--
   idmap config COMPANY.LOCAL:backend      = rid
   idmap config COMPANY.LOCAL:base_rid     = 0
   idmap config COMPANY.LOCAL:range        = 20000 - 49999
   auth methods = winbind
   winbind enum users = yes
   winbind enum groups = yes

Проверяем конфиг, вводим команду:

# testparm

Load smb config files from /etc/samba/smb.conf
rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384)
Processing section "[homes]"
Processing section "[printers]"
Loaded services file OK.
Server role: ROLE_DOMAIN_MEMBER
Press enter to see a dump of your service definitions

Ставим демоны Samba и Winbind в автозагрузку:

# chkconfig smb on

# chkconfig winbind on

Добавление машины:

net ads join -U AlfaStriker -D COMPANY.LOCAL


Проверяем:

# net ads testjoin

Join is OK

Проверки, машина:

# wbinfo -t

checking the trust secret for domain COMPANY via RPC calls succeeded

Проверяем, запросим список юзеров:

# wbinfo -u

guest
alfastriker
krbtgt
iusr_ai-documents
alfauser
support_388945a0
***************

Проверяем группы:

# wbinfo -g

domain computers
cert publishers
domain guests
domain users
group policy creator owners
domain controllers
ras and ias servers
enterprise admins
**************

Редактируем файл /etc/nsswitch.conf, строчки:

passwd:         compat winbind
group:          compat winbind

Перезапустим службы:

# service smb restart
# service nmb restart
# service winbind restart

Проверим работоспособность:
Вывод учетных записей из AD

getent passwd

Вывод групп из AD

getent group

На этом настройка входа в домен COMPANY.LOCAL -  выполнена.

2. Настраиваем Dovecot
Редактируем файл /etc/dovecot/dovecot.conf
Я приведу полный конфиг этого файла для наглядности:

+ открыть спойлер

# 2.0.9: /etc/dovecot/dovecot.conf
# OS: Linux 2.6.32-220.7.1.el6.i686 i686 CentOS release 6.2 (Final) ext4
auth_debug = yes
auth_debug_passwords = yes
auth_mechanisms = plain login ntlm gssapi
auth_krb5_keytab = /etc/krb5.keytab
auth_realms = COMPANY.RU
auth_use_winbind = yes
auth_username_format = %n
auth_winbind_helper_path = /usr/bin/ntlm_auth
auth_verbose = yes
base_dir = /var/run/dovecot/
disable_plaintext_auth = no
ssl = no
first_valid_uid = 1150
last_valid_uid = 1150
log_timestamp = %Y-%m-%d %H:%M:%S
mail_debug = yes
mail_location = maildir:/var/vmail/%d/%u
passdb {
  driver = pam
  args = dovecot
}
protocols = imap pop3
service auth {
  unix_listener /var/spool/postfix/private/dovecot-auth {
  user = postfix
  group = postfix
  mode = 0660
}
unix_listener auth-master {
  user = vmail
  group = mail
  mode = 0660
}
unix_listener auth-userdb {
  user = vmail
  group = mail
  mode = 0660
}
#user=root
}
service imap-login {
  executable = /usr/libexec/dovecot/imap-login
  inet_listener imap {
  address = *
  port = 143
}
}
service imap {
  executable = /usr/libexec/dovecot/imap
}
service pop3-login {
  executable = /usr/libexec/dovecot/pop3-login
inet_listener pop3 {
  address = *
  port = 110
}
}
service pop3 {
  executable = /usr/libexec/dovecot/pop3
}
userdb {
  args = uid=vmail gid=mail home=/var/vmail/ allow_all_users=yes
  driver = passwd
}
protocol lda {
  auth_socket_path = /var/run/dovecot/auth-master
  postmaster_address = admin@company.ru
}

Теперь отредактируем файл - /etc/pam.d/dovecot
Добавляем в файл:

auth    sufficient      pam_krb5.so
account sufficient      pam_krb5.so
auth    required        pam_unix.so nullok
account required        pam_unix.so

3. Настраиваем Postfix

# vi /etc/postfix/main.cf

+ открыть спойлер

soft_bounce = no
queue_directory = /var/spool/postfix
daemon_directory = /usr/libexec/postfix
mail_owner = postfix
default_privs = nobody
inet_interfaces = all
myhostname = mx.company.ru
mydomain = company.ru
myorigin = $mydomain
mydestination = $myhostname,localhost.$myhostname,localhost
local_recipient_maps = proxy:unix:passwd.byname $alias_maps
unknown_local_recipient_reject_code = 550
mynetworks = 127.0.0.0/8
relay_domains =
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
mail_spool_directory = /var/mail
smtpd_banner = $myhostname ESMTP
debug_peer_level = 2
debug_peer_list = 127.0.0.1
debugger_command =
    PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin
    xxgdb $daemon_directory/$process_name $process_id & sleep 5
sendmail_path = /usr/sbin/sendmail
mailq_path = /usr/bin/mailq
setgid_group = postdrop
html_directory = no
manpage_directory = /usr/local/man
config_directory = /etc/postfix
virtual_mailbox_domains = company.ru
virtual_mailbox_base = /var/vmail
#virtual_mailbox_maps = mysql:$config_directory/sql/vmailbox.cf
#virtual_alias_maps = mysql:$config_directory/sql/valias.cf
virtual_minimum_uid = 1150
virtual_uid_maps = static:1150
virtual_gid_maps = static:12
virtual_transport = dovecot
dovecot_destination_recipient_limit = 1
smtpd_sasl_auth_enable = yes
smtpd_sasl_exceptions_networks = $mynetworks
smtpd_sasl_security_options = noanonymous
broken_sasl_auth_clients = yes
smtpd_sasl_type = dovecot
smtpd_sasl_path = /var/spool/postfix/private/dovecot-auth
smtpd_recipient_restrictions = permit_mynetworks,
    permit_sasl_authenticated,
    reject_unauth_destination,
    check_policy_service unix:/var/spool/postfix/postgrey/socket,
    reject_non_fqdn_recipient,
    reject_unverified_recipient,
    reject_rbl_client cbl.abuseat.org,
    reject_rbl_client dialups.mail-abuse.org,
    permit
content_filter = scan:127.0.0.1:10025
receive_override_options = no_address_mappings

4. Проверка работы из RoundCube
Запускаем браузер, заходим http://10.168.50.2/roundcube/
При запросе логина и пароля вводим -   alfastriker@company.ru / Password
И отправляем письмо себе или на другой ящик.

4

О как интересно, буду пробовать.
Мне только вот не понятно почему на сайте dovecot ничего не сказано про такой метод

5

Я сам не давно узнал об этом способе. Только видишь тут берутся логины в AD и подставляется доменная часть.

6 (30.05.2014 08:46:17 отредактировано AlfaStriker)

Вот еще одно решение твоей проблемы:

Исходные данные:
* Машина: CentOS 6.5, Postfix+Dovecot+Roundcube
- Внутренний IP адрес: 10.168.50.2
- Имя хоста в локальной сети: mail.company.local

* Машина: Windows 2003, Active Directory
- Домен: company.local
- Имя хоста: pdc.company.local
- Внутренний IP адрес: 10.168.50.8
- Учетная запись для чтения данных из каталога: vmail / ее пароль - Ivanka123
- Учетные записи будут браться из организационной единицы company.local/users/

Настраиваем файл /etc/hosts, добавляем строчки:

10.168.50.2 mx.company.local mx
10.168.50.8 pdc.company.local pdc

Устанавливаем утилиты OpenLDAP:

yum install openldap-clients

Проверяем как работает доступ к Windows AD:

ldapsearch -x -h pdc.company.local -D 'vmail' -W -b 'cn=users,dc=company,dc=local'

Получим в выводе кучу информации которая хранится в каталоге LDAP.

Редактируем конфигурационный фал Postfix - /etc/postfix/main.cf
Меняем значения:

virtual_mailbox_domains = company.local
transport_maps = hash:/etc/postfix/transport
proxy_read_maps = $smtpd_sender_login_maps $local_recipient_maps $virtual_alias_maps $virtual_mailbox_maps
smtpd_sender_login_maps = proxy:ldap:/etc/postfix/ad_sender_login_maps.cf
virtual_mailbox_maps = proxy:ldap:/etc/postfix/ad_virtual_mailbox_maps.cf
virtual_alias_maps = proxy:ldap:/etc/postfix/ad_virtual_group_maps.cf
virtual_mailbox_base = /var/vmail

Создаем первый файлы:

vi /etc/postfix/transport

company.local dovecot

Делаем:

postmap hash:/etc/postfix/transport

Создаем файлы со следующим содержимым:

vi /etc/postfix/ad_sender_login_maps.cf

server_host     = pdc.company.local
server_port     = 389
version         = 3
bind            = yes
start_tls       = no
bind_dn         = vmail
bind_pw         = Ivanka123
search_base     = cn=users,dc=company,dc=local
scope           = sub
query_filter    = (&(userPrincipalName=%s)(objectClass=person)(!(userAccountControl=514)))
result_attribute= userPrincipalName
debuglevel      = 0

# vi  /etc/postfix/ad_virtual_mailbox_maps.cf

server_host     = pdc.company.local
server_port     = 389
version         = 3
bind            = yes
start_tls       = no
bind_dn         = vmail
bind_pw         = Ivanka123
search_base     = cn=users,dc=company,dc=local
scope           = sub
query_filter    = (&(objectclass=person)(userPrincipalName=%s))
result_attribute= userPrincipalName
result_format   = %d/%u/Maildir/
debuglevel      = 0

vi /etc/postfix/ad_virtual_group_maps.cf

server_host     = pdc.company.local
server_port     = 389
version         = 3
bind            = yes
start_tls       = no
bind_dn         = vmail
bind_pw         = Ivanka123
search_base     = cn=users,dc=company,dc=local
scope           = sub
query_filter    = (&(objectClass=group)(mail=%s))
special_result_attribute = member
leaf_result_attribute = mail
result_attribute= userPrincipalName
debuglevel      = 0

Пояснение:
%d Доменная часть без локальной части и символа @ (например, pipec.org).
%s Полный почтовый адрес (например, artem@pipec.org).
%u Локальная часть без символа @ и указания домена (например, artem).


ПРОВЕРКИ, ВЫБОРКА ДАННЫХ ИЗ КАТАЛОГА LDAP
Проверяем:

postmap -q AlfaStriker@company.local
ldap:/etc/postfix/ad_virtual_mailbox_maps.cf

Получаем:

company.local/AlfaStriker/Maildir/

Проверяем:

postmap -q AlfaStriker@company.local ldap:/etc/postfix/ad_sender_login_maps.cf

Получаем:

AlfaStriker@company.local

Создаем группу в Active Directory, назовем ее - mailgroup@company.local
В настройках этой группы заполним поле e-mail - mailgroup@company.local

Проверяем:

postmap -q mailgroup@company.local ldap:/etc/postfix/ad_virtual_group_maps.cf

Получаем:

AlfaStriker@company.local

Настройка Dovecot

Теперь создадим файл  /etc/dovecot/dovecot-ldap.conf

hosts           = pdc.company.local:389
ldap_version    = 3
auth_bind       = yes
dn              = vmail
dnpass          = Ivanka123
base            = cn=users,dc=company,dc=local
scope           = subtree
deref           = never
user_filter     = (&(userPrincipalName=%u)(objectClass=person)(!(userAccountControl=514)))
pass_filter     = (&(userPrincipalName=%u)(objectClass=person)(!(userAccountControl=514)))
pass_attrs      = userPassword=password
default_pass_scheme = CRYPT
user_attrs      = =home=/var/vmail/%Ld/%Ln/Maildir/,=mail=maildir:/var/vmail/%Ld/%Ln/Maildir/     

   

Для наглядности приведу полный конфиг файл Dovecot:

+ открыть спойлер

# 2.0.9: /etc/dovecot/dovecot.conf
# OS: Linux 2.6.32-220.7.1.el6.i686 i686 CentOS release 6.2 (Final) ext4
auth_debug = yes
auth_debug_passwords = yes
auth_mechanisms = plain login
auth_verbose = yes
base_dir = /var/run/dovecot/
disable_plaintext_auth = no
ssl = no
first_valid_uid = 1150
last_valid_uid = 1150
mail_uid = 1150
mail_gid = 12
log_timestamp = %Y-%m-%d %H:%M:%S
mail_debug = yes
mail_location = maildir:/var/vmail/%d/%u
passdb {
   args = /etc/dovecot/dovecot-ldap.conf
   driver = ldap
}
protocols = imap pop3
service auth {
unix_listener /var/spool/postfix/private/dovecot-auth {
   user = postfix
   group = postfix
   mode = 0660
}
unix_listener auth-master {
   user = vmail
   group = mail
   mode = 0660
}
unix_listener auth-userdb {
   user = vmail
   group = mail
   mode = 0660
}
#user=root
}
service imap-login {
executable = /usr/libexec/dovecot/imap-login
inet_listener imap {
   address = *
   port = 143
}
}
service imap {
   executable = /usr/libexec/dovecot/imap
}
service pop3-login {
executable = /usr/libexec/dovecot/pop3-login
inet_listener pop3 {
   address = *
   port = 110
}
}
service pop3 {
   executable = /usr/libexec/dovecot/pop3
}
userdb {
   args = /etc/dovecot/dovecot-ldap.conf
   driver = ldap
}
protocol lda {
   auth_socket_path = /var/run/dovecot/auth-master
   postmaster_address = admin@company.local
}

А также полный конфигурационный файл  Postfix:

+ открыть спойлер

soft_bounce = no
queue_directory = /var/spool/postfix
daemon_directory = /usr/libexec/postfix
mail_owner = postfix
default_privs = nobody
inet_interfaces = all
myhostname = mx.company.local
mydomain = company.local
myorigin = $mydomain
mydestination = $myhostname,localhost.$myhostname,localhost
local_recipient_maps = proxy:unix:passwd.byname $alias_maps
unknown_local_recipient_reject_code = 550
mynetworks = 127.0.0.0/8
relay_domains =
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
mail_spool_directory = /var/mail
smtpd_banner = $myhostname ESMTP
debug_peer_level = 2
debug_peer_list = 127.0.0.1
debugger_command =
    PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin
    xxgdb $daemon_directory/$process_name $process_id & sleep 5
sendmail_path = /usr/sbin/sendmail
mailq_path = /usr/bin/mailq
setgid_group = postdrop
html_directory = no
manpage_directory = /usr/local/man
config_directory = /etc/postfix
virtual_mailbox_domains = company.local
transport_maps = hash:/etc/postfix/transport
proxy_read_maps = $smtpd_sender_login_maps $local_recipient_maps $virtual_alias_maps $virtual_mailbox_maps
smtpd_sender_login_maps = proxy:ldap:/etc/postfix/ad_sender_login_maps.cf
virtual_mailbox_maps = proxy:ldap:/etc/postfix/ad_virtual_mailbox_maps.cf
virtual_alias_maps = proxy:ldap:/etc/postfix/ad_virtual_group_maps.cf
virtual_mailbox_base = /var/vmail
virtual_minimum_uid = 1150
virtual_uid_maps = static:1150
virtual_gid_maps = static:12
virtual_transport = dovecot
dovecot_destination_recipient_limit = 1
smtpd_sasl_auth_enable = yes
smtpd_sasl_exceptions_networks = $mynetworks
smtpd_sasl_security_options = noanonymous
broken_sasl_auth_clients = yes
smtpd_sasl_type = dovecot
smtpd_sasl_path = /var/spool/postfix/private/dovecot-auth
smtpd_recipient_restrictions = permit_mynetworks,
    permit_sasl_authenticated,
    reject_unauth_destination,
    check_policy_service unix:/var/spool/postfix/postgrey/socket,
    reject_non_fqdn_recipient,
    reject_unverified_recipient,
    reject_rbl_client cbl.abuseat.org,
    reject_rbl_client dialups.mail-abuse.org,
    permit
content_filter = scan:127.0.0.1:10025
receive_override_options = no_address_mappings

Проверка из RoundCube
Входим в веб интерфейс и вводим alfastriker@company.local, пароль разумеется берем из Active Directory.
Отправляем письмо себе или на другой ящик.

7 (20.05.2014 15:04:29 отредактировано mitushinem)

Да это все хорошо, но у меня домен windows и почтовый должны быть разными.
Может можно что то сделать что бы использовать разные домены

8 (21.05.2014 08:13:40 отредактировано AlfaStriker)

Тогда тебе придется сделать так:

vi /etc/postfix/ad_sender_login_maps.cf

server_host     = pdc.company.local
server_port     = 389
version         = 3
bind            = yes
start_tls       = no
bind_dn         = vmail
bind_pw         = Ivanka123
search_base     = cn=users,dc=company,dc=local
scope           = sub
query_filter    = (&(objectClass=person)(mail=%s))
result_attribute= userPrincipalName
debuglevel      = 0

vi /etc/dovecot/dovecot-ldap.conf

hosts           = pdc.company.local:389
ldap_version    = 3
auth_bind       = yes
dn              = vmail
dnpass          = Ivanka123
base            = cn=users,dc=company,dc=local
scope           = subtree
deref           = never
user_filter     = (&(objectClass=person)(mail=%u))
pass_filter     = (&(objectClass=person)(mail=%u))
pass_attrs      = userPassword=password
default_pass_scheme = CRYPT
user_attrs      = =home=/var/vmail/%Ld/%Ln/Maildir/,=mail=maildir:/var/vmail/%Ld/%Ln/Maildir/

vi /etc/postfix/main.cf

virtual_mailbox_domains = company.ru

В итоге получается: Электронные ящики берутся из поля "Почтовый адрес" учетных записей в OU - users. Например есть пользователь vanka@company.local, в настройках учетки в поле почтовый адрес прописано "barabashka@privet.ru".
Postfix и Dovecot будут оперировать полем "barabashka@privet.ru" и паролем учетной записи "vanka@company.local".

Проверь у себя, работают ли данные настройки.
Возможно я коряво что-то сделал, но должно работать.

9

Буду пробовать в общем.
О результате отпишусь

10

Все равно не получатся ничего
Postfix получает данные, а вот с dovecot что то совсем непонятно

11 (23.05.2014 19:02:21 отредактировано AlfaStriker)

Странно у тебя работает, покажи логи.
У меня почта нормально ходила, я посылал и получал.

12

Все нормально, разобрался.
Авторизация проходит проходит по полю email из AD

13 (28.05.2014 10:27:06 отредактировано mitushinem)

Нарисовалась новая проблема, точнее она и была.
Если работать через web морду, то все прекрасно посылает и принимает.
Пробую подключиться через outlook - выдает 550 error.
Dovecot нормально работает и проверяет пароль из AD

220 mail.analit.lan ESMTP
ehlo mail.analit.lan
250-mail.analit.lan
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
mail from: asup-31@analit.lan
250 2.1.0 Ok
rcpt to: asup-31@analit.lan
550 5.1.1 <asup-31@analit.lan>: Recipient address rejected: User unknown in virt
ual mailbox table

Вот полный листинг main.cf

soft_bounce = no
queue_directory = /var/spool/postfix
daemon_directory = /usr/libexec/postfix
mail_owner = postfix
default_privs = nobody
inet_interfaces = all
myhostname = mail.analit.lan
mydomain = analit.lan
myorigin = $mydomain
mydestination = $myhostname,localhost.$myhostname,localhost
local_recipient_maps = proxy:unix:passwd.byname $alias_maps
unknown_local_recipient_reject_code = 550
mynetworks = 127.0.0.0/8, 10.2.0.0/16
relay_domains =
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
mail_spool_directory = /var/mail
smtpd_banner = $myhostname ESMTP
debug_peer_level = 2
debug_peer_list = 127.0.0.1
debugger_command = 
    PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin
    xxgdb $daemon_directory/$process_name $process_id & sleep 5 
sendmail_path = /usr/sbin/sendmail
mailq_path = /usr/bin/mailq
setgid_group = postdrop
html_directory = no
manpage_directory = /usr/local/man
config_directory = /etc/postfix
virtual_mailbox_domains = $mydomain
transport_maps = hash:/etc/postfix/transport
proxy_read_maps = $smtpd_sender_login_maps $local_recipient_maps $virtual_alias_maps $virtual_mailbox_maps 
smtpd_sender_login_maps = proxy:ldap:/etc/postfix/ad_sender_login_maps.cf
virtual_mailbox_maps = proxy:ldap:/etc/postfix/ad_virtual_mailbox_maps.cf
virtual_alias_maps = proxy:ldap:/etc/postfix/ad_virtual_group_maps.cf
virtual_mailbox_base = /var/vmail
virtual_minimum_uid = 1150
virtual_uid_maps = static:1150
virtual_gid_maps = static:12
virtual_transport = dovecot
dovecot_destination_recipient_limit = 1
#---------------настройка аутентификации----------------------------------
#
smtpd_sasl_auth_enable = yes
smtpd_sasl_exceptions_networks = $mynetworks
smtpd_sasl_security_options = noanonymous
broken_sasl_auth_clients = yes
smtpd_sasl_type = dovecot
smtpd_sasl_path = /var/spool/postfix/private/dovecot-auth
#smtpd_sasl_path = private/auth
#------------------------------------------------------------------------
smtpd_recipient_restrictions = permit_mynetworks,
    permit_sasl_authenticated,
    reject_unauth_destination,
    reject_non_fqdn_recipient,
    reject_unverified_recipient,
    reject_rbl_client cbl.abuseat.org,
    reject_rbl_client dialups.mail-abuse.org,
    permit

14

Да, ты прав).
Вообщем надо сделать так, в файле

# vi  /etc/postfix/ad_virtual_mailbox_maps.cf

server_host     = 10.168.50.8
server_port     = 389
version         = 3
bind            = yes
start_tls       = no
bind_dn         = vmail
bind_pw         = 1Q2w3e4r
search_base     = cn=users,dc=asiainvest,dc=local
scope           = sub
query_filter    = (&(objectClass=person)(mail=%s)(!(userAccountControl=514)))
result_attribute= userPrincipalName
debuglevel      = 0

После чего Postfix начинает находить логины. Этот файл аналогичен файл  /etc/dovecot/dovecot-ldap.conf

Я перепутал...

15

Спасибо, работает... ab