The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"exim && Active Directory"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы OpenNET: Виртуальная конференция (Public)
Изначальное сообщение [ Отслеживать ]

"exim && Active Directory"  +/
Сообщение от tux2002 email on 08-Июл-08, 10:27 
Собрано по статьям интернет добрых людей (в т.ч. opennet.ru) с небольшими изменениями и дополнением собственного опыта. Может кому полезно будет. Тестовая версия (Делал для внутреннего сайта).

Почтовый сервер exim && Active Directory

groupware.domain.ru

Аппаратная платформа: HP Proliant ML350
Операционная система: Linux Slackware 12.1

На текущий момент использованы программные пакеты:

MIT krb5-1.6.3
cirus-sasl-2.1.22
exim-4.69
samba-3.0.29 (Пока только для ввода в домен)

Сборка пакетов:
MIT krb5-1.6.3
Опции сборки:
./configure \
--prefix=/usr \
--build=$ARCH-slackware-linux
cirus-sasl-2.1.22
Опции сборки:
./configure \
--prefix=/usr \
--sysconfdir=/etc \
--localstatedir=/var \
--disable-static \
--enable-login \
--enable-digest \
--enable-cram \
--enable-gssapi=/usr \
--enable-gss-mutexes \
--enable-krb4 \
--enable-plain \TMPDIR="/tmp"
--enable-ntlm \
--enable-anon \
--with-openssl=/usr \
--with-gss_impl=mit\
--with-ldap=/usr \
--with-saslauthd \
--with-gdbm \
--with-dblib=gdbm
exim-4.69
Makefile:
BIN_DIRECTORY=/usr/bin
CONFIGURE_FILE=/etc/mail/exim4.conf
EXIM_USER=exim
SPOOL_DIRECTORY=/var/spool/mail
ROUTER_ACCEPT=yes
ROUTER_DNSLOOKUP=yes
ROUTER_IPLITERAL=yes
ROUTER_MANUALROUTE=yes
ROUTER_QUERYPROGRAM=yes
ROUTER_REDIRECT=yes
ROUTER_IPLOOKUP=yes
TRANSPORT_APPENDFILE=yes
TRANSPORT_AUTOREPLY=yes
TRANSPORT_PIPE=yes
TRANSPORT_SMTP=yes
SUPPORT_MAILDIR=yes
SUPPORT_MAILSTORE=yes
SUPPORT_MBX=yes
LOOKUP_DBM=yes
LOOKUP_LSEARCH=yes
LOOKUP_DNSDB=yes
LOOKUP_LDAP=yes
LDAP_LIB_TYPE=OPENLDAP2
LOOKUP_INCLUDE=-I /usr/local/ldap/include -I /usr/local/mysql/include
LOOKUP_LIBS=-L/usr/local/lib -lldap -llber -lmysqlclient
WITH_CONTENT_SCAN=yes
FIXED_NEVER_USERS=root
AUTH_CRAM_MD5=yes
AUTH_CYRUS_SASL=yes
AUTH_DOVECOT=yes
AUTH_PLAINTEXT=yes
AUTH_SPA=yes
AUTH_NTLM=yes
AUTH_GSSAPI=yes
AUTH_LIBS=-lsasl2
HEADERS_CHARSET="ISO-8859-1"
HAVE_ICONV=yes
SUPPORT_TLS=yes
TLS_LIBS=-lssl -lcrypto
TLS_LIBS=-L/usr/local/openssl/lib -lssl -lcrypto
TLS_INCLUDE=-I/usr/local/openssl/include/
INFO_DIRECTORY=/usr/share/info
LOG_FILE_PATH=syslog:/var/log/exim_%slog
SYSLOG_LONG_LINES=yes
SYSLOG_LOG_PID=yes
EXICYCLOG_MAX=10
COMPRESS_COMMAND=/usr/bin/gzip
COMPRESS_SUFFIX=gz
ZCAT_COMMAND=/usr/bin/zcat
CYRUS_SASLAUTHD_SOCKET=/var/state/saslauthd/mux
SYSTEM_ALIASES_FILE=/etc/aliases
TMPDIR="/tmp"
samba-3.0.29
Опции сборки:
CFLAGS="-g $SLKCFLAGS" ./configure \
--enable-cups \
--enable-static=no \
--enable-shared=yes \
--with-fhs \
--with-acl-support=yes \
--with-automount \
--prefix=/usr \
--localstatedir=/var \
--bindir=/usr/bin \
--sbindir=/usr/sbin \
--with-lockdir=/var/cache/samba \
--sysconfdir=/etc \
--with-configdir=/etc/samba \
--with-privatedir=/etc/samba/private \
--with-swatdir=/usr/share/swat \
--with-smbmount \
--with-quotas \
--with-syslog \
--with-utmp \
--with-libsmbclient \
--with-winbind \
--with-ldap \
--with-ads \
--with-krb5 \
--build=$ARCH-slackware-linux

Первоначальная настройка настройка:

1) less /etc/krb5.conf
[libdefaults]
        default_realm = DOMAIN.RU
        no-addresses = TRUE

[realms]
        DOMAIN.RU = {
                kdc = DC.DOMAIN.RU
        }


2) less /etc/samba/smb.conf
[global]
dos charset = 866
unix charset = KOI8-T
display charset = KOI8-T
workgroup = DOMAIN2
realm = DOMAIN.RU
server string = Тестовый сервер
interfaces = 10.0.0.122/24
bind interfaces only = yes
security = ADS
auth methods = winbind
update encrypted = yes
client schannel = yes
allow trusted domains = no
map to guest = Bad User
passdb backend = tdbsam
lanman auth = yes
client NTLMv2 auth = yes
client lanman auth = no
client plaintext auth = no
log level = 0
syslog = 0
syslog only = yes
log file = /var/log/samba-log
debug pid = yes
debug uid = yes
name resolve order = wins host bcast
time server = yes
deadtime = 120
dos filetimes = yes
getwd cache = no
stat cache = no
os level = 32
preferred master = no
local master = no
domain master = no
wins server = 10.0.0.253, 192.168.1.247
wins support = yes
oplocks = yes
fake oplocks = false
#kernel oplocks = false
oplock break wait time = 250
locking = yes
posix locking = no
strict locking = no
strict sync = no
sync always = no
ldap ssl = no
lock directory = /var/lock/samba
utmp directory = /var/run
utmp = yes
remote announce = 192.168.1.255 10.0.255.255
remote browse sync = 192.168.1.255 10.0.255.255
socket address = 10.0.0.250
idmap domains = DOMAIN2
idmap alloc backend = tdb
idmap config DOMAIN2:default = yes
idmap config DOMAIN2:backend = tdb
idmap config DOMAIN2:range = 10000 - 50000
idmap alloc config:range = 10000 - 1000000
invalid users = root, news, ftp, work, mail, daemon, @root
create mask = 0660
directory mask = 2770
force directory mode = 2770
hide special files = yes
map archive = no
csc policy = disable
posix locking = no
strict locking = no
dont descend = /proc,/dev,/tmp,/var/tmp,/sys
printing = cups
load printers = yes
nt acl support = yes
acl check permissions = yes
acl compatibility = Auto
acl group control = yes
acl map full control = no
inherit permissions = yes
inherit acls = yes
inherit owner = yes
map acl inherit = yes
hide unreadable = yes


less less /etc/nsswitch.conf

passwd: files winbind
shadow: files winbind
group: files winbind
hosts: files dns
networks: files
services: files
protocols: files
rpc: files
ethers: files
netmasks: files
netgroup: files
bootparams: files
automount: files
aliases: files

3) Вводим host в домен:
net time
net ads join -U Administrator

Получаем в домене учётную запись компьютера groupware$. Эта учётная запись уже связана с двумя принципалами HOST/groupware.domain.ru и HOST/GROUPWARE (они указаны в свойстве "servicePrincipalName" см. оснасткой ADSI Edit). Нам нужны два принципала host/groupware.domain.ru@DOMAIN.RU и smtp/groupware.domain.ru@DOMAIN.RU (соблюдая регистр букв). Ключ первого используется saslauthd, ключ второго используется exim. Принципал smtp/groupware.domain.ru@DOMAIN.RU делаем как пользователя c NetBIOS наименованием smtp_groupware и задаём ему пароль. Принципал host/groupware.domain.ru@DOMAIN.RU уже как бы есть у учётной записи компьютера. Далее выполняем две команды на контроллере домена (учитывая регистр) :
ktutil -out smtp.keytab -princ smtp/groupware.domain.ru@DOMAIN.RU -pass * -mapuser smtp_groupware -crypto DES-CBC-MD5
Вводим пароль, заданный пользователю smtp/groupware.domain.ru@DOMAIN.RU
ktutil -out host.keytab -princ host/groupware.domain.ru@DOMAIN.RU -pass * -mapuser groupware$ -crypto DES-CBC-MD5
Вводим произвольный пароль.
Поскольку мы переназначили пароь groupware$, вдальнейшем для Samba в smb.conf возможно придётся указать параметр keytab =
Переносим полученные файлы ключей smtp.keytab и host.keytab на groupware.domain.ru и объединяем их утилитой ktutil (из пакета MIT Kerberos) (man ktutil) в файл /etc/krb5.keytab.

Проверяем klist -5 -k
Keytab name: FILE:/etc/krb5.keytab
KVNO Principal
1 host/groupware.domain.ru@DOMAIN.RU
2 smtp/groupware.domain.ru@DOMAIN.RU

Я сделал группу "kerberos" и включил в неё пользователя "exim".
ls -l /etc/krb5.keytab
-rw-rw---- 1 root kerberos 132 2008-07-04 12:13 /etc/krb5.keytab

Таким образом сервер exim имеет доступ к файлу /etc/krb5.keytab через cyrus-sasl API (когда не используется явно saslauthd)

4) Запускаем saslauthd -a kerberos5 (Изменяем для этого /etc/rc.d/rc.saslauthd)
5) Делаем файл
cat /usr/lib/sasl2/exim.conf

ntlm_server: dc.domain.ru

^D
Этот файл служит для настройки NTLM авторизации в exim

Основные настройки подсистем произведены, настраиваем exim


/etc/mail/exim4.conf

Изменёния конфигурации по умолчанию:

Главная конфигурация (начало файла секция main):
ldap_default_servers = <; dc.domain.ru:389
LDAP_AD_BINDDN = "CN=exim,CN=Users,DC=domain,DC=ru"
LDAP_AD_PASS = some password

smtp_banner = "$primary_hostname, ESMTP EXIM"

helo_allow_chars = _

primary_hostname = groupware.domain.ru

domainlist local_domains = domain.ru
hostlist relay_from_hosts = 127.0.0.1
qualify_domain = domain.ru

Секция аутентификации:
begin authenticators

PLAIN:
driver = plaintext
public_name = PLAIN
server_condition = ${if saslauthd{{$2}{$3}}{1}{0}}
server_set_id = $2

LOGIN:
     driver = plaintext
     public_name = LOGIN
     server_prompts = "Username:: : Password::"
     server_condition = ${if saslauthd{{$1}{$2}}{1}{0}}
     server_set_id = $1

NTLM:
driver = cyrus_sasl
public_name = NTLM
server_set_id = $1


GSSAPI:
driver = cyrus_sasl
public_name = GSSAPI
server_set_id = $1

Примечание: в секциях NTLM и GSSAPI намеренно убраны строки server_realm = DOMAIN.RU. Для GSSAPI этот параметр берётся как параметр по умолчанию /etc/krb5.conf. Для NTLM сервер аутентификации указан в /usr/lib/sasl2/exim.conf. Причина - иногда адрес отправителя из user@domain.ru преобразовывлся в user@domain.ru@DOMAIN.RU. Вообщем без этих параметров нормально работает и адрес отправителя корректный.

Секция acl:

acl_check_data:

deny condition = ${if and{{ eq{$tls_peerdn}{} }{ eq{$authenticated_id}{} }}{yes}{no}}
message = Must be authenticated

accept authenticated = *
log_message = Client authenticated: $authenticated_id, Sender: $sender_address

Это включение авиторизации отправителя.

Секция маршрутизаторов (порядок важен).

begin routers

dnslookup:
driver = dnslookup
domains = ! +local_domains
transport = remote_smtp
ignore_target_hosts = 0.0.0.0 : 127.0.0.0/8
no_more

system_aliases:
driver = redirect
allow_fail
allow_defer
data = ${lookup{$local_part}lsearch{/etc/aliases}}
file_transport = address_file
pipe_transport = address_pipe

adsi_check:
driver = redirect
domains = +local_domains
allow_fail
allow_defer

data = ${lookup ldap {LDAP_AD_MAIL_RCPT} {${local_part}} {:fail: User unknown}}
redirect_router = local_adsi_user

local_adsi_user:
driver = accept
transport = local_delivery
cannot_route_message = Unknown user

Секцию транспортов не меняли, но возможно требуется добавить в транспорт локальной доставки флаги задания chmod и chown почтовых ящиков.

Проверяем поддерживаемые механизмы exim:

exim -d -v
trusted user
admin user
changed uid/gid: privilege not needed
uid=1000 gid=100 pid=3201
auxiliary group list: 12 100 102
Cyrus SASL knows about: NTLM
Cyrus SASL driver NTLM: NTLM initialised
Cyrus SASL knows about: GSSAPI
Cyrus SASL driver GSSAPI: GSSAPI initialised
originator: uid=0 gid=0 login=root name=
sender address = root@domain.ru
Exim is a Mail Transfer Agent. It is normally called by Mail User Agents,
not directly from a shell command line. Options and/or arguments control
what it does when called. For a list of options, see the Exim documentation

Запускаем exim -bd -qq10m

telnet groupware 25
Trying 10.0.0.122...
Connected to groupware.domain.ru (10.0.0.122).
Escape character is '^]'.
220 groupware.domain.ru, ESMTP EXIM
ehlo wks1198.domain.ru
250-groupware.domain.ru Hello wks1198.domain.ru 10.0.201.26external link
250-SIZE 52428800
250-PIPELINING
250-AUTH PLAIN LOGIN NTLM GSSAPI
250 HELP

Высказать мнение | Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "exim && Active Directory"  +/
Сообщение от ALex_hha (ok) on 08-Июл-08, 10:55 
>Собрано по статьям интернет добрых людей (в т.ч. opennet.ru) с небольшими изменениями
>и дополнением собственного опыта. Может кому полезно будет. Тестовая версия (Делал
>для внутреннего сайта).
>
>Почтовый сервер exim && Active Directory
>
>groupware.domain.ru
>
>Аппаратная платформа: HP Proliant ML350
>Операционная система: Linux Slackware 12.1

Неужели на этом убожестве до сих пор нет кербероса?

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "exim && Active Directory"  +/
Сообщение от tux2002 email on 08-Июл-08, 11:25 
В дистрибутиве нет. Но есть репозитарии типа slacky.eu. Берёшь Slackbuild и проверяешь и собираешь.


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "exim && Active Directory"  +/
Сообщение от tux2002 email on 08-Июл-08, 11:28 
К тому же может и убожество, но бинарному дистрибутиву I386 не место даже на таком сервере. Slackware и Gentoo тюнингуются по проще.


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

4. "exim && Active Directory"  +/
Сообщение от ALex_hha (ok) on 08-Июл-08, 15:03 
>К тому же может и убожество, но бинарному дистрибутиву I386 не место
>даже на таком сервере. Slackware и Gentoo тюнингуются по проще.

Понятно, еще один тюнингатор и оптимизатор :)

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

5. "exim && Active Directory"  +/
Сообщение от tux2002 email on 08-Июл-08, 15:26 
>Понятно, еще один тюнингатор и оптимизатор :)

Ситуация заставляет :). Гигагерцы с Гигабайтами на соседнем газоне не растут. Покупка сервера за 150 т.р. - событие года :).


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

6. "exim && Active Directory"  +/
Сообщение от ALex_hha (ok) on 08-Июл-08, 16:25 
>>Понятно, еще один тюнингатор и оптимизатор :)
>
>Ситуация заставляет :). Гигагерцы с Гигабайтами на соседнем газоне не растут. Покупка
>сервера за 150 т.р. - событие года :).

Та какая разница сколько стоит сервер. Я говорил про саму ОС. Ладно, не будем разводить очередной холивар.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

7. "exim && Active Directory"  +/
Сообщение от Zirf on 10-Дек-09, 14:57 
>>Понятно, еще один тюнингатор и оптимизатор :)
>
>Ситуация заставляет :). Гигагерцы с Гигабайтами на соседнем газоне не растут. Покупка
>сервера за 150 т.р. - событие года :).

А з/п при таком сопровождении <150 за год? Я к тому, что если нет денег на систему и поддержку, на админа (некрасноглазого) откуда они возьмутся?

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру