| 
 
 
   |   |  www.lissyara.su—> статьи—> FreeBSD—> почтовые системы—> exim + dovecot + win2003 AD
 
 exim + dovecot с использованием в качестве БД юзеров, домена Windows 2003
Автор: lissyara.
 
       Предисловие - статья изначально урезанная, на полноценное хав-ту - не тянет, это, скорей, заметка для себя - чтоб не забыть - как авторизовать saslauthd, как напрямую искать в ldap и как заставить dovecot работать в подобных конфигурациях.Возникла нужда собрать эталонный сервер для филиалов - у нас их много, и наконец прило время децентрализовать почту. После разборов - что же там будет в итоге жить, вроде остановились на exim+dovecot. Авторизация — доменная (домен живёт на Win2003 AD). Было одно интеерсное требование, продиктованное реалиями жизни - необходимо уменьшить число запросов к серверу AD - каналы в регионах не резиновые (что не очень важно - траффик копеечный), и падучие (что более актуально - лучше пусть юзер авторизуется из кэша, проверит что ничё не пришло, отправит своё - хотя бы до локального сервера, чем будет по каждому пропаданию связи на несколько минут, теребить админа на местах - ли в голове, при отсутствии местного).
 Собственно - с exim затруднениой особых не возникло - saslauthd умеет лазить в AD и кэшировать результаты. Однако, вот dovecot не умеет работать с saslauthd - аффтар посчитал, что вполне хватит встроенного sasl`a... Вот с этого момента начались пляски с бубном - напрямую в AD dovecot лазить умеет, умеет даже авторизоваться от имени пользователя, однако, у меня не заработало - искался пользователь vasya@my-domain.local а ldap, врезультате поиска возвращал просто vasya - что ему и не нравилось... Указание просто васи - приводило к "инвалид крединтиалс" :(. Подумавши - сообразил, на машинке живёт самба (железка мультифункциональная - до кучи ещё и файлпомойка) с авторизацией из AD - а winbindd тоже умеет кэшировать данные.
 В итоге родилось такое чудо, с разными методами авторизации - dovecot через pam winbindd (который тоже умеет кэшировать - время кэширования выставляется в конфиге самбы), и exim - через saslauthd (или же напрямую через ldap - а процессе поисков нашёл и такое решение). Всё работало - но не понравилось, что методы разные, соответственно, exim был причёсан к авторизации через pam. Сиё решение и выкладываю (остальные аутентификаторы - оставил в конфиге закомменчеными, заодно выложу и конфиг sasauthd - жалко ещё раз терять пару часов на ровном месте, сидя с tcpdump :)).
 Ставим exim, для чего добавляем такие строки в /etc/make.conf:
 
 
		
| PORTSDIR?=              /usr/ports
.if ${.CURDIR} == ${PORTSDIR}/mail/exim
# Поддержка MySQL
WITH_MYSQL=             yes
# Контентное сканирование
WITH_CONTENT_SCAN=      yes
# Дефолтовая кодировка заголовков
WITH_DEFAULT_CHARSET?=  koi8-r
# Отключаем IPv6
WITHOUT_IPV6=           yes
# Подрубаем LDAP
WITH_OPENLDAP=          yes
# Версия BDB - в чём ведёт свои БД подсказок
WITH_BDB_VER=           1
# Проверки SPF
WITH_SPF=               yes
# Подержка перекодировки (для заголовков)
WITH_ICONV=             yes
WITH_PAM=               yes
WITH_AUTH_CRAM_MD5=     yes
WITH_AUTH_PLAINTEXT=    yes
#WITH_AUTH_SPA=         yes
#WITH_AUTH_SASL=        yes
# для авторизации через saslauthd
#WITH_SASLAUTHD=        yes
#
.endif
 |      После чего компилим exim:
 
		
| cd /usr/ports/mail/exim
make install clean
 |      И рисуем конфиг (конфиг поскипан - можно взять конфиг из этой статьи), из которого я привожу тока аутентификаторы - ибо не имеет смысла одно и то же писать по нескольку раз, и, самое главное, - лень, у меня там свой конфиг - с поисками филиалов по лдапу и прочей хиромантией:
 
		
| #plain_saslauthd:
#       driver                  = plaintext
#       public_name             = PLAIN
#       server_prompts          = :
#       server_condition        = ${if saslauthd{{$auth2}{$auth3}}{1}{0}}
#       server_set_id           = $auth2
#login_saslauthd:
#       driver                  = plaintext
#       public_name             = LOGIN
#       server_prompts          = "Username:: : Password::"
#       server_condition        = ${if saslauthd{{$auth1}{$auth2}}{1}{0}}
#       server_set_id           = $auth1
#plain_ldap:
#       driver                  = plaintext
#       public_name             = PLAIN
#       server_prompts          = :
#       server_condition        = ${if ldapauth \
#                       {user="${quote_ldap_dn:$auth2}@my-domain.local" \
#                               pass=${quote_ldap:$auth3} \
#                               ldap://my-domain.local/}{yes}{no}}
#       server_set_id           = $auth2
#login_ldap:
#       driver                  = plaintext
#       public_name             = LOGIN
#       server_prompts          = Username:: : Password::
#       server_condition        = ${if ldapauth \
#                       {user="${quote_ldap_dn:$auth1}@my-domain.local" \
#                       pass=${quote_ldap:$auth2} \
#                       ldap://my-domain.local/}{yes}{no}}
#       server_set_id           = $auth1
plain_pam:
        driver                  = plaintext
        public_name             = PLAIN
        server_prompts          = :
        server_condition        = ${if pam{$auth2:${sg{$auth3}{:}{::}}}}
        server_set_id           = $auth2
login_pam:
        driver                  = plaintext
        public_name             = LOGIN
        server_prompts          = Username:: : Password::
        server_condition        = ${if pam{$auth1:${sg{$auth2}{:}{::}}}}
        server_set_id           = $auth1
 |      Для saslauthd (если используем его) пишем такой конфиг /usr/local/etc/saslauthd.conf:
 
		
| ldap_servers: ldap://my-domain.local/
#ldap_bind_dn: cn=lissyara,DC=my-domain,DC=local
ldap_bind_dn: lissyara@my-domain.local
ldap_bind_pw: secret_passwd
ldap_version: 3
ldap_search_base: dc=my-domain,dc=local
#ldap_filter: (sAMAccountName=%u)
ldap_filter: (&(sAMAccountName=%u))
ldap_debug: -1
 |      Дальше, ставим dovecot, с такими опциями:
 
		
|      +--------------------------------------------------------------------+
     |                    Options for dovecot 1.0.0                       |
     | +----------------------------------------------------------------+ |
     | |                [X] KQUEUE    kqueue(2) support                 | |
     | |                [X] SSL       SSL support                       | |
     | |                [ ] IPV6      IPv6 support                      | |
     | |                [ ] POP3      POP3 support                      | |
     | |                [X] LDA       LDA support                       | |
     | |                [ ] GSSAPI    GSSAPI support                    | |
     | |                [ ] VPOPMAIL  VPopMail support                  | |
     | |                [ ] LDAP      OpenLDAP support                  | |
     | |                [ ] PGSQL     PostgreSQL support                | |
     | |                [ ] MYSQL     MySQL support                     | |
     | |                [ ] SQLITE    SQLite support                    | |
     | |                                                                | |
     | |                                                                | |
     | |                                                                | |
     | |                                                                | |
     |-+----------------------------------------------------------------+-|
     |                       [  OK  ]       Cancel                        |
     +--------------------------------------------------------------------+
 |  
 
		
| cd /usr/ports/mail/dovecot
make install clean
 |      И рисуем для него конфиг:
 
		
| protocols = imap
listen = *
disable_plaintext_auth = no
ssl_disable = yes
mail_location = maildir:/var/mail/exim/%Lu
mail_extra_groups = mail
verbose_proctitle = yes
first_valid_uid = 26
last_valid_uid = 26
first_valid_gid = 6
last_valid_gid = 6
maildir_copy_with_hardlinks = yes
protocol imap {
  imap_client_workarounds = delay-newmail outlook-idle tb-extra-mailbox-sep
}
protocol lda {
  postmaster_address = lissyara@my-domain.local
  sendmail_path = /usr/sbin/sendmail
  # UNIX socket path to master authentication server to find users.
  auth_socket_path = /var/run/dovecot/auth-master
#  log_path = /var/log/dovecot/deliver.log
#  info_log_path = /var/log/dovecot/deliver.log
}
auth_cache_size = 1024
auth_username_format = %Lu
auth default {
  mechanisms = plain
  passdb pam {
    args = exim
  }
  userdb static {
    args = uid=26 gid=6 home=/var/mail/exim/%Lu allow_all_users=yes
  }
  user = root
  socket listen {
    master {
      path = /var/run/dovecot/auth-master
      mode = 0600
      # Default user/group is the one who started dovecot-auth (root)
      user = mailnull
      #group = mail
    }
  }
}
 |      Полный конфиг, со всеми комментариями на русском, можно посмотреть тут - опять же, нет желания повторяться. Тут будут отдельные комменты - для доставки почты используется deliver, и при таком конфиге dovecot он примет и положит в заданную директорию всю почту, что будет ему передана. Несмотря на то, что, пользователи практически системные, deliver почему-то пытается сохранить почту в директории, проставив на неё группу пользователя, такую же как его имя - что некорректно - нет таких групп в виндовом домене. Поэтому, и извратился с жёстким задание одного пользователя, от которого сохраняется вся почта.После этого, ставим samba, например, по этой инструкции - внимательно читаем комменты!
 Рисуем файлик для pam-авторизации exim`a /etc/pam.d/exim:
 
 
		
| # auth
auth required /usr/local/lib/pam_winbind.so try_first_pass
 |      После чего всё запускаем - должно работать.
 
 
 
				
					| размещено: 2007-06-04,последнее обновление: 2007-08-19,
 автор: lissyara
 |  |  
 
 
   |   |   
 2014-07-27, lissyaragmirror
 Удалённое создание софтверного зеркала средствами gmirror, на диске разбитом с использованием gpart. Использование меток дисков для монтирования разделов.
 2013-08-20, zentarimScan+Print server FreeBSD 9
 Настройка сервера печати и сервера сканирования под управлением операционной системы FreebSD 9 для МФУ Canon PIXMA MP540
 2011-11-20, BlackCatРазъём на WiFi-карту
 Делаем съёмной несъёмную антену на WiFi-карте путём установки ВЧ-разъёма
 2011-09-14, manefestoНастройка git+gitosis
 Настройка системы контроля версия исходного кода в связке git+gitosis+ssh 
 2011-08-14, zentarimWi-FI роутер + DHCP + DNS
 Настройка Wi-Fi роутера на Freebsd 8 + DNS сервер + DHCP сервер: чтобы Wi-Fi клиенты были в одной подсети с проводными, проводные и беспроводные клиенты получали адреса автоматически по DHCP, кэширующ
 2011-06-15, -ZG-Охранная система на FreeBSD+LPT
 В этой статье описана попытка реализации простой охранной системы на базе FreeBSD с подключением к ней охранных устройтсв на LPT порт и видеорегистрацией.
 2011-03-13, terminusng_nat
 Описание работы ng_nat, практическое использование, достоинства и недостатки в сравнении с ipfw nat
 2011-02-20, КапитанNagios+Digitemp
 Статья описывает создание системы оповещения о превышении температуры в специальных помещениях на основе Nagios с использованием программы Digitemp.
 2011-02-17, Le1Zyxel Configuration
 Скрипт для массового изменения конфига свичей Zyxel. Берет из файла iplist список ip-шек, заходит последовательно на каждый и выполняет комманды из файла commands, записывая происходящее в лог файл.
 2011-02-16, foxhast carp zfs ucarp cluster
 HAST (Highly Available Storage), CARP, UCARP, ZFS, Cluster настройка и одаптация плюс личные размышления…
 2011-02-04, BlackCatВосстановление ZFS
 История о том, как был восстановлен развалившийся RAIDZ ZFS-пул (перешедший в FAULTED) с помощью скотча и подручных средств. Или о том, какие приключения ожидают тех, кто не делает резервных копий.
 2011-02-03, Капитан1-Wire
 Статья описывает самостоятельное изготовление контроллера DS9097 для съёма показаний с датчиков температуры DS1820 с помощью программы Digitemp.
 2011-01-28, КапитанТемпература в серверной
 Статья описывает построение системы наблюдения за температурой в помещении серверной с использованием программы Digitemp и выводом графиков в MRTG
 2011-01-21, m4rkellSyslog server
 Как то буквально на днях, у нас завалилось, что то в еве) или не в еве не суть. Суть в том, что когда захотели снять логи с хостов esx обнаружили, что хранят эти негодяи логии только за последнии сутк
 2011-01-07, lissyaraCanon/gphotofs
 Монтирование цифровых фотоаппаратов Canon (PTP) как файловой системы, автоматизация этого процесса через события devd и внешние скрипты.
 2010-12-13, AlIPSec
 Описание принципов работы IPSEC и способов аутентификации.
 2010-12-07, manefestoFreeBSD on flash
 Было принято решении переехать на USB Flash и установить минимальный джентельменский набор для работы своего роутера. Делаем  =)
 2010-12-05, Fomalhautroot ZFS, GPT
 Инструкция по установке FreeBSD с использованием в качестве таблицы разделов GPT и в качестве основной файловой системы - ZFS
 2010-09-05, CancerНастройка аудиоплеера на ximp3
 Цели: Простенький аудиоплеер, для того что бы тетя продавец в магазине утром пришла нажала на кнопку Power и заиграла в зале музыка, так же был доступ по сети, общая шара куда можно заливать музыку, к
 2010-08-31, CancerУстановка и настройка OpenVPN
 На днях появилась задача - объединить головной офис и 3 филиала в одну сеть через интернет посредством OpenVPN, чтобы люди могли подключаться через RDP к базам 1С на серверах.
 2010-08-25, manefestofreebsd lvm
 Использование linux_lvm для работы с LVM разделами из-под FreeBSD. Проблемы которые возники при монтирование lvm раздела
 2010-04-30, gonzo111proftpd file auth"a
 Proftpd - квоты и авторизация из файлов, без использования базы данных и/или системных пользователей
 2010-04-22, lissyaratw_cli
 Пошаговая инструкция по восстановлению RAID на контроллере 3ware, из которого выпал один диск. Настройка мониторинга состояния рейда и отчётов о его состоянии на email.
 
 | 
	
Комментарии пользователей [10 шт.]