The OpenNET Project / Index page

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

Каталог документации / Раздел "Настройка почты (sendmail, postfix, qmail)" (Архив | Для печати)

Сохраняем настройки Sendmail в дирректориях LDAP.

Andrey Afletdinov
Оригинал документа на http://www.sgb.irk.ru/~andrek/mail2ldap/

В этом документе рассказано с как можно управлять политиками почтового сервера sendmail, хранящиеся в дирректориях openLDAP.

Вступление.
Для дальнейшей работы необходимо иметь работающие и настроенные сервера sendmail и LDAP.
Рекомендуется сохранить все базы sendmail перед изменениями, либо, как поступил я, протестировать sendmail на локальной машине.
Все описанное ниже было протестированно на следующих версиях программ sendmail-8.12.1, openldap-2.0.25.

Начало.
Если вы используете sendmail из дистрибутива, то скорее всего он уже скомпилирован с поддержкой LDAP, проверяем:
sendmail -d0.1 -bv root | grep LDAP

В результате должны увидеть строку содержащей слово LDAPMAP. У меня на локальной машине стоит mandrake-8.2 и sendmail уже был собран с поддержкой LDAP.
В противном случае собираем sendmail из исходников. Для этого, перед компиляцией, необходимо добавить в файл devtools/Site/site.config.m4 следующие строки:
 APPENDDEF(`confMAPDEF', `-DLDAPMAP')
 APPENDDEF(`confLIBS', `-lldap -llber')
 APPENDDEF(`confINCDIRS', `-I/usr/local/include')
 APPENDDEF(`confLIBDIRS', `-L/usr/local/lib')
Соответственно должны быть уже установлены библиотеки openLDAP, измените путь usr/local там где они у вас находится.

Настройка sendmail сводится к добавлению строк в файл конфигурации sendmail.mc, с последующим его преобразованием в cf.
 -информация об сервере LDAP (ldap.sgb - сервер LDAP, dc=sgb root дирректория)
 define(`confLDAP_DEFAULT_SPEC',`-h ldap.sgb -b dc=sgb')dnl
 -для aliases
 define(`ALIAS_FILE',`ldap:')dnl
 -для access
 FEATURE(`access_db',`LDAP')dnl
Если используем virtusertable, domaintable и т.д. -то для них тоже самое по аналогии с access.
Ориентируемся по таблице:

FEATUREsendmailMTAMapName
access_db LDAP access
authinfo LDAP authinfo
bitdomain LDAP bitdomain
domaintable LDAP domain
genericstable LDAP generics
mailertable LDAP mailer
uucpdomain LDAP uucpdomain
virtusertable LDAP virtuser

Я кроме aliases и access ничего больше не использовал в связи с простотой моего локального сервера sendmail.

На стороне сервера LDAP необходимо добавить схему sendmail.schema в дирректорию схем и внести путь в конфигурационный файл slapd.conf.

Заполняем дирректории LDAP.
Создаем группу mail. В ней у нас будут находится все связанное с sendmail
 dn: ou=mail,dc=sgb
 objectClass: top
 objectClass: organizationalUnit
 ou: mail
Создаем группу aliases. В ней будут храниться записи aliases
 dn: ou=aliases,ou=mail,dc=sgb
 objectClass: top
 objectClass: organizationalUnit
 ou: aliases
Создаем группу access. В ней будут хранится записи access
 dn: ou=access,ou=mail,dc=sgb
 objectClass: top
 objectClass: organizationalUnit
 ou: access
Все эти записи, вносим в ldif файл и добавляем в каталоги LDAP комадой ldapadd, либо используем программы с графическим интерфейсом.

Aliases.
Разберем на примере файл aliases:
 bin:		root
 daemon:	root
 games:		root
 nobody:	root
 system:	root
 manager:	root
 root:		andrek
Описание записи bin
 dn: sendmailMTAKey=bin,ou=aliases,ou=mail,dc=sgb
 objectClass: top
 objectClass: sendmailMTA
 objectClass: sendmailMTAAlias
 objectClass: sendmailMTAAliasObject
 sendmailMTAHost: boss.sgb
 sendmailMTAAliasGrouping: aliases
 sendmailMTAKey: bin
 sendmailMTAAliasValue: root
Описание записи daemon
 dn: sendmailMTAKey=daemon,ou=aliases,ou=mail,
                                      dc=sgb
 objectClass: top
 objectClass: sendmailMTA
 objectClass: sendmailMTAAlias
 objectClass: sendmailMTAAliasObject
 sendmailMTAHost: boss.sgb
 sendmailMTAAliasGrouping: aliases
 sendmailMTAKey: daemon
 sendmailMTAAliasValue: root
В поле sendmailMTAHost указываем имя sendmail сервера, для которого действует альяс.
Остальные альясы (games, nobody, manager и т.д.) вносим аналогично.

Access.
Разберем на примере файл access.
 localhost.localdomain	RELAY
 localhost		RELAY
 127.0.0.1		RELAY
 192.168.2.11		RELAY
Описание записи localhost.localdomain
 dn: sendmailMTAKey=localhost.localdomain,
                     ou=access,ou=mail,dc=sgb
 objectClass: top
 objectClass: sendmailMTA
 objectClass: sendmailMTAMap
 objectClass: sendmailMTAMapObject
 sendmailMTAMapName: access
 sendmailMTAKey: localhost.localdomain
 sendmailMTAMapValue: RELAY
Описание записи 192.168.2
 dn: sendmailMTAKey=192.168.2,ou=access,
                            ou=mail,dc=sgb
 objectClass: top
 objectClass: sendmailMTA
 objectClass: sendmailMTAMap
 objectClass: sendmailMTAMapObject
 sendmailMTAMapName: access
 sendmailMTAKey: 192.168.2
 sendmailMTAMapValue: RELAY
Остальные записи (localhost, 127.0.0.1 и т.д.) также аналогичны.

Virtusertable, mailertable, domaintable и т.д.
Заносятся по аналогии с access. С изменением поля sendmailMTAKey (см. таблицу) и необходимых значений в sendmailMTAKey и sendmailMTAValue.
Так же это все достаточно хорошо описано с примерами в документации к sendmail.

Учетные записи пользователей
Описывается пока только теория.
На сервере sendmail:
-Ставим клиента ldap, nss_ldap.
-Правим файл nssswith.conf
После этого добавление пользователей сведется к добавлению учетных записей в каталог LDAP.
Все это протестирую в ближайшем будущем при обновлении сервера sendmail.
Проблем быть не должно так как технология уже давно расписана и приводить ее небуду.

Ссылки на использованную документацию и программы



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

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