Главная > IT > Ubuntu 8.04 Mail Server (Postfix+Dovecot+AD)

Ubuntu 8.04 Mail Server (Postfix+Dovecot+AD)

Ершов Илья
Почтовый сервер на Ubuntu 8.04 с авторизацией в Active Directory
16 ноября 2009

Сегодня я напишу о том, как настроить IMAP сервер с авторизацией в Active Directory и шифрованием по TLS.
Настраивать будем связку Postfix+Dovecot+Active Directory. Основной идеей решения является то, что адрес электронной почты пользователя хранится в поле mail каждого пользователя Active Directory, желающего иметь почту.

architect

Ставим необходимые пакеты

apt-get install postfix postfix-ldap dovecot-common dovecot-imapd

В ходе установки отвечаем на следующие вопросы:

Create directories for web-based administration? – No
General type of mail configuration – Internet Site
System mail name - fqdn

Переходим к настройке Postfix

Postfix — агент передачи почты (Mail Transfer Agent, MTA). Занимается пересылкой почты, пришедшей на порт 25 (SMTP).

postconf –e 'myorigin = MYDOMAIN.ORG'
postconf -e 'virtual_mailbox_domains = /etc/postfix/domains.cf'
postconf -e 'virtual_mailbox_base = /var/mail'
postconf -e 'virtual_mailbox_maps = ldap:/etc/postfix/ldap-users.cf'
postconf -e 'virtual_minimum_uid = 8'
postconf -e 'virtual_uid_maps = static:8'
postconf -e 'virtual_gid_maps = static:8'
postconf -e 'virtual_transport = dovecot'
postconf -e 'dovecot_destination_recipient_limit = 1'
postconf -e 'message_size_limit = 20480000'
postconf -e 'smtpd_sasl_auth_enable = no'
postconf -e 'smtpd_sasl_exceptions_networks = $mynetworks'
postconf -e 'smtpd_sasl_security_options = noanonymous'
postconf -e 'broken_sasl_auth_clients = yes'
postconf -e 'smtpd_sasl_type = dovecot'
postconf -e 'smtpd_sasl_path = private/auth'
postconf -e 'smtpd_recipient_restrictions = permit_mynetworks,permit_sasl_authenticated,reject_unauth_destination,permit'

В нашем случае он будет принимать лишь почту для отдельных доменов (virtual_mailbox_domains) – список этих доменов хранится в виде простого списка /etc/postfix/domains.cf

mydomain.org

Проверка того, существует ли на данном сервере адресат, которому предназначено письмо, осуществляется через LDAP-запросы (virtual_mailbox_maps).
Cодержимое файла /etc/postfix/ldap-users.cf

version = 3
server_host = IP_адрес_контроллера_домена:3268
query_filter = (&(objectclass=user)(mail=%s))
result_attribute = samaccountname
result_format = %s
bind = yes
bind_dn = MYDOMAIN\логин_пользователя
bind_pw = Пароль_пользователя

Разберемся в том, что здесь к чему. В качестве входного параметра выступает строка %s, содержащая адрес электронной почты пользователя. После этого осуществляется LDAP-запрос от имени пользователя MYDOMAIN\логин_пользователя. Производится поиск объекта класса user с адресом %s. Если такой объект (то есть пользователь) найден, то возвращается поле sAMAccountName — поиск успешен. После этого Postfix считает, что такой пользователь в базе есть, и передает письмо сервису Dovecot (virtual_transport).
Финальный аккорд настройки postfix – прописываем сервис dovecot в файле /etc/postfix/master.cf

dovecot unix - n n - - pipe
flags=DRhu user=mail:mail argv=/usr/lib/dovecot/deliver -d ${recipient}

Переходим к настройке Dovecot

Dovecot выполняет роли доставщика писем от Postfix в локальные каталоги /var/mail. Вся настройка осуществляется через конфигурационный файл /etc/dovecot/dovecot.conf

base_dir = /var/run/dovecot/
protocols = imap
disable_plaintext_auth = no
log_timestamp = "%Y-%m-%d %H:%M:%S "
login_greeting = Welcome to IMAP/POP3 server
mail_location = maildir:/var/mail/%d/%n
mail_privileged_group = mail
mail_debug = no
first_valid_uid = 8
last_valid_uid = 8
maildir_copy_with_hardlinks = yes
protocol imap {
login_executable = /usr/lib/dovecot/imap-login
mail_executable = /usr/lib/dovecot/imap
imap_max_line_length = 65536
mail_plugin_dir = /usr/lib/dovecot/modules/imap
imap_client_workarounds: outlook-idle outlook-idle netscape-eoh tb-extra-mailbox-sep
}
protocol lda {
postmaster_address = postmaster@mail.domain.ru
hostname=mail.domain.ru
sendmail_path = /usr/lib/sendmail
auth_socket_path = /var/run/dovecot/auth-master
}
auth_verbose = no
auth_debug = no
auth_debug_passwords = no
auth default {
mechanisms = plain
passdb ldap {
args = /etc/dovecot/ldap.conf
}
userdb static {
args = uid=8 gid=8 allow_all_users=yes
}
user = nobody
socket listen {
master {
path = /var/run/dovecot/auth-master
mode = 0660
user = mail
group = mail
}
client {
path = /var/spool/postfix/private/auth
mode = 0660
user = postfix
group = postfix
}
}
}

Авторизация происходит через LDAP-запрос. Параметры подключения к LDAP-серверу находятся в файле /etc/dovecot/ldap.conf

hosts = IP_контроллера_домена:3268
dn = имя_пользователя@MYDOMAIN.ORG
dnpass = пароль_пользователя
auth_bind = yes
ldap_version = 3
base = dc=MYDOMAIN,dc=ORG
deref = never
scope = subtree
default_pass_scheme = CRYPT
pass_filter = (&(objectclass=user)(mail=%n@%d))

Источник:
1. Ubuntu IMAP-server
2. Ubuntu+Dovecot
3. Postfix

Реклама
  1. 14.01.2010 в 02:53

    Пожалуй так оно и есть, на самом деле все очень просто :)

  2. m0ps
    06.05.2010 в 14:11

    а как быть если у пользователя email отличен от логина?
    к примеру логин user1 а email i.ivanov@example.com

  3. Ozzy
    07.05.2010 в 08:39

    Да на самом деле все нормально. Просто при подключении в почтовой программе указываешь правильный ящик и верные параметры авторизации.

    • m0ps
      07.05.2010 в 15:36

      я это понимаю… а можно ли как-то сделать, что б для авторизации использовались имя пользователя AD, а не его email?

  4. Ozzy
    11.05.2010 в 09:56

    Можно попробовать поиграться с фильтром LDAP-запроса в настройках postfix
    query_filter = (&(objectclass=user)(mail=%s))
    указав вместо mail samaccountname.

    • m0ps
      11.05.2010 в 12:19

      да, ну тогда email и логин должны быть одинаковы. мне нужно что бы имя пользователя AD и его почтовый адрес были разными

  5. 17.05.2010 в 13:44

    Пробывал зделать все по вашей инструкцие нечего не вышло :(

    • Ozzy
      17.05.2010 в 13:58

      Печально
      Было бы проще помочь, если бы вы указали что именно не получилось

  6. Михаил
    03.06.2010 в 15:29

    Вроде сделал все по инструкции но не могу понять почему не проходит авторизация. Вот выдержка из логов:

    03-06-2010 16:19:45 auth(default): Info: client in: AUTH 2 PLAIN service=imap lip=192.168.1.234 rip=192.168.1.230 lport=143 $
    03-06-2010 16:19:45 auth(default): Info: ldap(mike,192.168.1.230): bind search: base=DC=*******, DC=***** filter=(&(ObjectClass=user)(mail=mike))
    03-06-2010 16:19:45 auth(default): Info: ldap(mike,192.168.1.230): unknown user
    03-06-2010 16:19:47 auth(default): Info: client out: FAIL 2 user=mike
    03-06-2010 16:20:47 imap-login: Info: Disconnected (auth failed, 2 attempts): user=, method=PLAIN, rip=192.168.1.230, lip=192.168.1.234

    Где копать не подскажите?

    • Ozzy
      03.06.2010 в 15:39

      Копать в имени пользователя.

      Производится поиск объекта класса user с адресом %s. Если такой объект (то есть пользователь) найден, то возвращается поле sAMAccountName – поиск успешен.

      У вас передается почта как mike

      (&(ObjectClass=user)(mail=mike))

  7. 02.07.2010 в 19:52

    Объявления о продаже автомобилей — продажа автомобилей.

  8. Pin
    16.07.2010 в 15:37

    отваливается smtp если подрубаешь ldap авторизацию
    virtual_mailbox_maps = ldap:/etc/postfix/ldap-users.cf
    стоит закоментить начинает работать
    никто не сталкивался?

  9. Pin
    19.07.2010 в 09:58

    Разобрался, почему-то не postfix-ldap не хотел работать на новом postfix. Откатившись на версию 2.5.5 все заработало

  1. No trackbacks yet.

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s

%d такие блоггеры, как: