|
|
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, lissyara
gmirror
Удалённое создание софтверного зеркала средствами gmirror, на диске разбитом с использованием gpart. Использование меток дисков для монтирования разделов.
2013-08-20, zentarim
Scan+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, zentarim
Wi-FI роутер + DHCP + DNS
Настройка Wi-Fi роутера на Freebsd 8 + DNS сервер + DHCP сервер: чтобы Wi-Fi клиенты были в одной подсети с проводными, проводные и беспроводные клиенты получали адреса автоматически по DHCP, кэширующ
2011-06-15, -ZG-
Охранная система на FreeBSD+LPT
В этой статье описана попытка реализации простой охранной системы на базе FreeBSD с подключением к ней охранных устройтсв на LPT порт и видеорегистрацией.
2011-03-13, terminus
ng_nat
Описание работы ng_nat, практическое использование, достоинства и недостатки в сравнении с ipfw nat
2011-02-20, Капитан
Nagios+Digitemp
Статья описывает создание системы оповещения о превышении температуры в специальных помещениях на основе Nagios с использованием программы Digitemp.
2011-02-17, Le1
Zyxel Configuration
Скрипт для массового изменения конфига свичей Zyxel. Берет из файла iplist список ip-шек, заходит последовательно на каждый и выполняет комманды из файла commands, записывая происходящее в лог файл.
2011-02-16, fox
hast 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, m4rkell
Syslog server
Как то буквально на днях, у нас завалилось, что то в еве) или не в еве не суть. Суть в том, что когда захотели снять логи с хостов esx обнаружили, что хранят эти негодяи логии только за последнии сутк
2011-01-07, lissyara
Canon/gphotofs
Монтирование цифровых фотоаппаратов Canon (PTP) как файловой системы, автоматизация этого процесса через события devd и внешние скрипты.
2010-12-13, Al
IPSec
Описание принципов работы IPSEC и способов аутентификации.
2010-12-07, manefesto
FreeBSD on flash
Было принято решении переехать на USB Flash и установить минимальный джентельменский набор для работы своего роутера. Делаем =)
2010-12-05, Fomalhaut
root ZFS, GPT
Инструкция по установке FreeBSD с использованием в качестве таблицы разделов GPT и в качестве основной файловой системы - ZFS
2010-09-05, Cancer
Настройка аудиоплеера на ximp3
Цели: Простенький аудиоплеер, для того что бы тетя продавец в магазине утром пришла нажала на кнопку Power и заиграла в зале музыка, так же был доступ по сети, общая шара куда можно заливать музыку, к
2010-08-31, Cancer
Установка и настройка OpenVPN
На днях появилась задача - объединить головной офис и 3 филиала в одну сеть через интернет посредством OpenVPN, чтобы люди могли подключаться через RDP к базам 1С на серверах.
2010-08-25, manefesto
freebsd lvm
Использование linux_lvm для работы с LVM разделами из-под FreeBSD. Проблемы которые возники при монтирование lvm раздела
2010-04-30, gonzo111
proftpd file auth"a
Proftpd - квоты и авторизация из файлов, без использования базы данных и/или системных пользователей
2010-04-22, lissyara
tw_cli
Пошаговая инструкция по восстановлению RAID на контроллере 3ware, из которого выпал один диск. Настройка мониторинга состояния рейда и отчётов о его состоянии на email.
|
Комментарии пользователей [10 шт.]