Версия для печати
Архив документации на OpenNet.ru /
Раздел "Настройка почты (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.
Ориентируемся по таблице:
FEATURE | | sendmailMTAMapName
|
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.
Проблем быть не должно так как технология уже давно расписана и приводить ее небуду.
Ссылки на использованную документацию и программы