Поиск на сайте: Расширенный поиск


Новые программы oszone.net Читать ленту новостей RSS
CheckBootSpeed - это диагностический пакет на основе скриптов PowerShell, создающий отчет о скорости загрузки Windows 7 ...
Вы когда-нибудь хотели создать установочный диск Windows, который бы автоматически установил систему, не задавая вопросо...
Если после установки Windows XP у вас перестала загружаться Windows Vista или Windows 7, вам необходимо восстановить заг...
Программа подготовки документов и ведения учетных и отчетных данных по командировкам. Используются формы, утвержденные п...
Red Button – это мощная утилита для оптимизации и очистки всех актуальных клиентских версий операционной системы Windows...
OSzone.net Видео Unix Интернет Почта Интеграция qmail с LDAP RSS

Интеграция qmail с LDAP

Текущий рейтинг: 5 (проголосовало 2)
 Посетителей: 2287 | Просмотров: 3190 (сегодня 0)  Шрифт: - +
  
   Данный материал посвящен интеграции
   почтового агента (MTA) qmail с сервером LDAP. Предполагается, что
   читатель уже знаком как с основами управления LDAP сервером, так и с
   основами qmail и электронными почтовыми системами в целом.

   qmail-ldap - это патч к qmail-1.03, позволяющий запрашивать данные о
   пользователях не только из файлов на дисках, но и из LDAP директории,
   тем самым позволяя строить централизованно управляемые, быстрые, с
   возможностью кластеризации, почтовые системы.

   -----------------------------------------------------------
   Henning Brauer [1]lists-lwql@bsws.de
   24 January 2002
   Ситкарев Григорий [2]admin@net.nordcomp.ru
   31 March 2002
   -----------------------------------------------------------

   Другие ресурсы

   Набор утилит для администрирования qmail-ldap можно взять здесь
   (http://www.enderunix.org/qldapadmin)

   Web-based инструмент для администрирования qmail-ldap от Adfins
   (http://www.adfins.com/project/phpQLAdmin)
   

   Содержание
    Введение в LDAP
         Настройка LDAP сервера
         Схема для OpenLDAP 1.2.x
         Схема для OpenLDAP 2.x
         Конфигурирование qmail
         Наполнение директории LDAP
     Компоненты qmail-ldap и их взаимодействие
          1. qmail-queue
          2. qmail-send
          3. qmail-lspawn
          4. qmail-local
          5. qmail-rspawn
          6. qmail-remote
          7. qmail-inject
          8. qmail-smtpd
          9. qmail-qmqpd
        10. qmail-popup
        11. qmail-pop3d
        12. auth_pop
        13. auth_imap
        14. qmail-ldaplookup
     Установка
          Примеры конфигурации
          Директория LDAP
          Контроль доступа с помощью tcpserver
          POP3
          IMAP
          Webmail
          Работа qmail-ldap в кластерном окружении
         Доменный алиасинг (domain aliassing)
     Патч qmail-ldap-control
          Установка патча qmail-ldap-control
          Примеры конфигурации


Введение в LDAP

     LDAP (Lightweight Directory Access Protocol) очень удобный
   инструмент в администрировании больших сетевых систем. База данных
   сервера LDAP оптимизирована исключительно для операций чтения при этом
   обеспечивая скорость примерно в 10 раз быстрее, чем SQL базы данных.


   Одна из возможностей LDAP это хранение пользовательских учетных
   записей. Одна и та же учетная запись, хранящаяся в базе данных LDAP
   сервера, может быть использована для входа в UNIX-системы, IMAP
   серверы, Web-серверы, серверы баз данных и системы электронной почты.

   С использованием qmailUser схемы, загруженной в LDAP сервер,
   qmail-ldap серверы в организации могут быть сконфигурированы на
   совместное использование одних и тех же данных. Qmail-ldap
   поддерживает маршрутизацию сообщений к почтовому серверу, указанному в
   учетной записи в LDAP, даже если внешние почтовые адреса имеют вид
   user@company.com. Нет необходимости использовать внутренние адреса
   вида user@mailhost1.company.com и конвертировать адрес в
   user@company.com, когда сообщение покидает интранет.

   Использование LDAP для хранения учетных записей qmail требует создания
   LDAP директории, или же модифицирования схемы существующей. Для тех,
   кто абсолютно не знаком с основами LDAP, на сайте проекта OpenLDAP (http://www.openldap.org/)
   есть документация и список рассылки с возможностью поиска.


Настройка LDAP сервера

   Перед тем, как начать наполнение директории, необходимо добавить
   схему qmail. Как это сделать зависит от того, какой у вас сервер LDAP.

   Схема для OpenLDAP 1.2.x

   Добавьте в файл slapd.oc.conf следующее
   
             objectclass qmailUser
             requires
             objectclass,
             mail,
             uid
             allows
             mailMessageStore,
             homeDirectory,
             userPassword,
             mailAlternateAddress,
             qmailUID,
             qmailGID,
             mailQuota,
             mailHost,
             mailForwardingAddress,
             deliveryProgramPath,
             qmailDotMode,
             deliveryMode,
             mailReplyText,
             accountStatus


   Перезапустите сервер после внесения изменений.

   Схема для OpenLDAP 2.x

   Добавьте в файл slapd.conf следующее

             include /etc/ldap/schema/InetOrgPerson.schema
             include /etc/ldap/schema/nis.schema
             include /etc/ldap/schema/qmail.schema (файл находится в директории
               qmail. После использования патча, скопируйте его в директорию с файлами схем)


   Перезапустите slapd после внесения изменений.


Конфигурирование qmail

   После того, как схема была загружена в сервер LDAP, требуется внести
   некоторые изменения в настройки qmail. В дальнейшем предполагается,
   что пользовательские учетные записи являются виртуальными, т.е. не
   имеют реальных GID и UID и домашних каталогов, впрочем, так же как и
   записей в файлах паролей /etc/passwd, /etc/master.passwd . В конечном
   итоге, это почтовый сервер а не игровая площадка для пользователей.

   Для этого требуется создать одну реальную учетную запись, которая
   будет использоваться для операций с локальной почтой.
  
   Добавим следующее:
   Редактируем /etc/passwd и добавляем учетную запись vmail (тот самый
   виртуальный аккаунт). Значения UID и GID для аккаунта vmail достаточно
   произвольны (в пределах разумного):

             vmail:x:11184:2110::/var/qmail/maildirs/:/bin/true


     Редактируем /etc/group и добавляем группу:

             vmail::2110


   Создаем директорию, где будет храниться пользовательская почта.

   Выбор вполне произволен.:

             mkdir /var/qmail/maildirs


   Меняем владельца и группу владельца для директории на только что
   созданного vmail:

             chown -R vmail:vmail /var/qmail/maildirs


   Далее создаем конфигурационные файлы в директории /var/qmail/control:

   Файл defaultdelivery указывает на тип почтового ящика:

            ./Maildir/


   Файл ldapmessagestore указывает на каталог, где хранится почта:

            /var/qmail/maildirs


   Файл ldapgid указывает реальный GID для операций с пользовательской почтой:

             2110
   Файл ldapuid указывает реальный UID для операций с пользовательской почтой:

             11184


   Примечание: Если вы используете например Courier IMAP, то аккаунт
   vmail может быть также использован для доступа к директориям с
   пользовательской почтой.


Наполнение директории LDAP

   На следующем этапе необходимо создать иерархию в директории LDAP и
   соответствующее наполнение или модифицировать существующее. Для
   простоты и наглядности продемонстрируем на примере абсолютно пустой
   директории LDAP с использованием файлов в формате ldif.

   Первая строчка должна соответствовать суффиксу DN, указанному в
   slapd.conf :

             suffix "dc=nordcomp, dc=ru"


   Файл LDIF

             dn: dc=nordcomp, dc=ru
             objectclass: top
             dn: dc=nordcomp, dc=ru
             objectclass: top
             dn: ou=mailaccounts, dc=nordcomp, dc=ru
             objectclass: top
             objectclass: organizationalUnit
             dn: uid=postnikov, ou=mailaccounts, dc=nordcomp, dc=ru
             cn: Anton A. Postnikov
             objectClass: top
             objectClass: person
             objectClass: inetOrgPerson
             objectClass: qmailUser
             mail: [9]postnikov@nordcomp.ru
             mailAlternateAddress: [10]postnikov@net.nordcomp.ru
             mailHost: mail.nordcomp.ru
             mailMessageStore: /var/qmail/maildirs/postnikov
             uid: postnikov
             userPassword: {MD5}X03MO1qnZdYdgyfeuILPmQ==


   После того, как файл был создан (и сохранен под именем new.ldif),
   загрузите его в директорию LDAP с помощью команды ldapadd.

   Пример:

           # ldapadd -W -D "cn=rootdn,dc=nordcomp,dc=ru" -f new.ldif


   Просмотрите man ldapadd для дополнительной информации.
   Компоненты qmail-ldap и их взаимодействие
   
   1. qmail-queue
   qmail-queue получает почтовое сообщение и располагает его в очередь,
   добавляя строчку "received-".


   2. qmail-send
   qmail-send работает с сообщениями, находящимися в исходящей очереди, и
   использует qmail-lspawn для локальной доставки почты и qmail-rspawn
   для удаленной.


   3. qmail-lspawn
   qmail-lspawn производит поиск пользователя для доставляемой почты и
   вызывает qmail-local для выполнения доставки.


   4. qmail-local
   qmail-local производит доставку локальной почты а также работает с
   файлами .qmail .


   5. qmail-rspawn
   qmail-rspawn вызывает qmail-remote для удаленной доставки сообщений.


   6. qmail-remote
   qmail-remote отправляет сообщения удаленному хосту посредством
   протокола SMTP.


   7. qmail-inject
   qmail-inject читает сообщения из стандартного ввода, добавляет
   заголовки и вызывает qmail-queue.


   8. qmail-smtpd
   qmail-smtpd открывает сокет обычно на 25-м порту TCP и принимает
   сообщения от удаленных серверов SMTP.


   9. qmail-qmqpd
   qmail-qmqpd принимает сообщения от удаленных хостов посредством
   протокола QMQP (Quick Message Queuing Protocol). qmail-qmqpd будет
   разрешать relay для любых сообщений, поэтому при его настройке вы
   должны быть уверены, что лишь разрешенные хосты могут соединяться с
   ним. QMQP используется для кластерных решений. Если вы хотите
   использовать кластер, вы должны настроить qmail-qmqpd.


   10. qmail-popup
   qmail-popup получает имя пользователя и пароль от клиента POP3 и
   передает полученные данные подпрограмме для аутентификации (обычно
   auth_pop).

   11. qmail-pop3d
   qmail-pop3d вызывается qmail-popup для работы с POP3 клиентом.

   12. auth_pop
   auth_pop обычно вызывается qmail-popup для аутентификации клиента
   POP3. Также auth_pop ответственен за пересылку (forwarding)
   POP3-сессии в кластерном окружении.

   13. auth_imap
   Аналогично auth_pop, но для протокола IMAP. Также ответственен за
   пересылку (forwarding) сессии в кластерном окружении.

   14. qmail-ldaplookup
   qmail-ldaplookup это удобный инструмент для проверки установок LDAP.

   man qmail-ldaplookup для дополнительной информации.


Установка qmail-ldap

   Предполагается, что у вас есть исходные файлы (sources) qmail,
   скачать их можно с официального сервера qmail (http://cr.yp.to/), и патч
   qmail-ldap-patch, последняя версия которого находится здесь (http://www.nrg4u.com/).

   Распакуйте оба архива (например, в /usr/src/qmail-1.03).
   Пропатчим дерево исходных файлов qmail:

             # cd /usr/src/qmail-1.03
             # patch -p1 < qmail-ldap-1.03-xxx.patch (параметр -p1 определяет глубину вложенности)


   Редактируем Makefile, отражая в нем наши настройки системы. Можно
   изменить следующие параметры:

             QLDAP-CLUSTER


   Компилирует код кластера.

   Прим: это вовсе не означает, что кластеризация будет включена, это
   значит, что вы cможете ее использовать.

   DASH-EXT
     Включает механизм "dash"- (черточка) расширения.

   CLEARTEXTPASSWORD (крайне не рекомендуется)
     Разрешает хранить пароли в plain-text виде в LDAP. Обычно пароли без
     префикса {MD5},{SSHA1} и т.д. считаются по умолчанию как {CRYPT}.

   LDAPLIBS
     Библиотеки, которые вам понадобятся, -lldap and -llber. В некоторых
   системах также понадобится библиотека -lresolv. Если у вас возникают
   проблемы при компиляции дважды проверьте этот параметр.
   Если у вас установлен OpenLDAP обычно требуется следующее:

         LDAPLIBS=-lldap -llber.


   Для Netscape потребуется следующее:

         LDAPLIBS=-L/usr/local/ldap/lib -lldap50 -llber50 -lpthread
         LDAPINCLUDES=-I/usr/local/ldap/include


   Не забудьте правильно указать пути к библиотекам и заголовочным
   файлам.

   LDAPINCLUDES
     Путь к заголовочным файлам LDAP, как минимум, требуются ldap.h и
     lber.h.

   MAKE-NETSCAPE-WORK
     Включает баг-фикс для Netscape-овского прогресс-бара загрузки почты
   для qmail-pop3d.

   AUTOMAILDIRMAKE
     Включает патч auto-MAILdirmake. Внешние скрипты не требуются.
   Позволяет в автоматическом режиме создавать Maildir-ы для
   пользователей.

   AUTOHOMEDIRMAKE
     Включает патч auth-HOMEdirmake. Вам необходимо указать внешний
   скрипт в ~/control/dirmaker, который создает домашний каталог. Скрипт
   получает только один входной параметр, указывающий полный путь для
   создаваемого каталога. Прим: этот скрипт запускается с правами
   пользователя, для которого создается каталог, поэтому необходимо
   соблюсти разрешения на запись в соответствующие каталоги.

         SHADOWLIBS=-lcrypt


     Понадобится на большинстве систем, кроме OpenBSD. В некоторых ОС,
   например Linux и Solaris вам потребуются также
     -DSHADOWLIBS=-lcrypt -lshadow если вы хотите использовать и реальных
   пользователей.

   DEBUG
     Включает отладочный код при компиляции. Смотри QLDAPINSTALL для
   расширенной информации.

   TLSON
     Установите -DTLS для того, чтобы включить шифрование SMTP через SSL.
   Вам также понадобятся библиотеки и заголовочные файлы OpenSSL.

   TLSINCLUDES
     Путь к загловочным файлам OpenSSL. Если у вас включен TLS и
   возникают ошибки при компиляции, дважды проверьте этот параметр.
   Обычно /usr/local/include или /usr/local/openssl/include.

   TLSLIBS
     Путь к библиотекам OpenSSL.
     Обычно /usr/local/lib или /usr/local/openssl/lib.

   OPENSSLBIN
     Путь к исполняемым файлам (binaries) OpenSSL. Используются только
   для создания сертификатов.

   Обычно /usr/sbin/openssl или /usr/local/openssl/bin/openssl.

   Существует так же возможность изменить названия атрибутов LDAP
   директории для qmail в файле qmail-ldap.h. Также проверьте conf-*
   файлы, например для OpenBSD как минимум вы должны модифицировать или
   conf-spawn или conf-cc:

             echo 125 > /path/to/conf-spawn
     или

             echo "cc -O2 -DFD_SETSIZE=4096" > /path/to/conf-cc


   После того, как были отредактированы Makefile и conf-* файлы,
   следует создать аккаунты qmail. Причем обязательно до компилляции,
   после которой изменение uid-ов и gid-ов потребует повторной компиляции
   qmail. Смотрите INSTALL.ids для инструкций по созданию аккаунтов
   qmail.

   Пришло время скомпилировать qmail.

             # make install check
   (В BSD системах gmake install check)


   Если вы используете TLS нужно создать сертификат. Обратитесь к
   документации OpenSSL для дополнительной информации.

             # make cert


     или

             # make cert-req


   Примеры конфигурации
   Настраиваем конфигурацию qmail для работы с LDAP. Конфигурационные
   файлы находятся в директории /var/qmail/control.

   1. me Содержит полное доменное имя (FQDN) почтового сервера.


           # echo "mail.nordcomp.ru" > me


   2. rcpthosts Содержит имена (FQDN) всех доменов, почту для которых 
   должен принимать qmail, иными словами, давать relay.


           # echo "nordcomp.ru" > rcpthosts
           # echo "net.nordcomp.ru" >> rcpthosts
           # echo "company.com" >> rcpthosts


   3. locals Содержит имена (FQDN) всех доменов, для которых qmail должен
   доставлять почту локально. Формат аналогичен rcpthosts.


   4. ldapbasedn
   Корневой суффикс DN директории LDAP, в которой производится поиск.
   Параметр является обязательным.


           # echo "dc=nordcomp, dc=ru" > ldapbasedn


   5. ldapserver Имя (FQDN) вашего LDAP сервера. В случае избыточной 
   конфигурации (два или более LDAP серверов) имена указываются в одну 
   строчку. Допускается также указание IP адреса. Параметр обязательный.


           # echo "ldap1.nordcomp.ru ldap2.nordcomp.ru:389" > ldapserver


   6. ldaplogin
   Если ваш LDAP сервер требует аутентификации для получения данных.
   Прим: указываемое имя является LDAP DN а не именем пользователя.
   Значение по умолчанию - NULL, т.е. аутентификация не требуется.


           # echo "dn=ldapadmin, dc=nordcomp, dc=ru" > ldaplogin


   7. ldappassword Пароль пользователя, указанного в ldaplogin. Значение 
   по умолчанию - NULL. Прим: так как пароль хранится plain-text, установите 
   разрешение  на чтение и запись только для root!!!


   8. ldaptimeout По истечении указанного времени (в секундах) процесс 
   поиска в LDAP директории считается не удачным. Полезен в случае частых 
   зависаний LDAP сервера. Значение по умолчанию - 30 секунд.


           # echo "35" > ldaptimeout


   Внимание! Данный параметр некорректно обрабатывается версией
   qmail-ldap 20010101. Если этот файл существует, то ни одно из
   сообщений не будет доставлено локально. Просто удалите этот файл,
   значение по умолчанию в 30 секунд вполне подходящее.

   9. ldaplocaldelivery Определяет использование локальных файлов паролей 
   /etc/passwd тогда и только тогда, когда в директории LDAP не найдена 
   подходящая запись. 1  - включено, 0 - выключено. Значение по умолчанию - 1.


           # echo "0" > ldaplocaldelivery


   10. ldaprebind Если установлено значение "1", то qmail не пытается  напрямую 
   прочитать  пароль пользователя из LDAP директории, а пытается <привязаться>
   (bind) к LDAP серверу с указанным именем пользователя и паролем
   (влияет на auth_pop и auth_imap). Позволяет использовать более строгие
   правила в ACL LDAP сервера для атрибута userPassword, разрешая читать
   пароль только пользователю, к которому принадлежит атрибут.

           # echo 1 > ldaprebind


   11. ldapobjectclass Позволяет ограничить поиск аккаунтов в LDAP директории 
   имеющих только указанный objectClass. Полезно, в случае если LDAP директория 
   служит не только для qmail, но и для других целей. Таким образом, qmail
   ограничится лишь теми аккаунтами, которые содержат класс например qmailUser.

           # echo "qmailUser" > ldapobjectclass


   Внимание: в версии 20010101 не работоспособно.

   12. ldapuid Реально присутствующий в системе UID, с помощью которого будут
   производится операции для виртуальных пользователей. Вы можете
   добавить сколь угодно много пользователей в LDAP директорию для работы
   с qmail, все они будут использовать только один UID, указанный в этом
   файле.

           # echo "1001" > ldapuid


   13. ldapgid Аналогично ldapuid, реальный системный GID для операций с 
   виртуальными пользователями.

   14. ldapdefaultdotmode Интерпретация по умолчанию для .qmail файлов. 
   Возможные значения:  both (используются как атрибут "deliveryProgramPath" 
   так и .qmail) ldaponly (используется только атрибут "deliveryProgramPath", 
   файл .qmail игнорируется)
   ldapwithprog (если существует атрибут "deliveryProgramPath" тогда он
   используется, .qmail файл игнорируется)
   none (игнорируются оба параметра)

   15. ldapmessagestore Префикс по умолчанию для атрибутов "mailmessagestore". 
   Если вы установили значение например в /var/qmail/maildir/ , то следующие два
   атрибута пользовательского аккаунта эквивалентны по значению:
   mailmessagestore: /var/qmail/maildir/postnikov/
   эквивалентно
   mailmessagestore: postnikov/
   Значение по умолчанию - NULL

   16. ldapdefaultquota Значение квоты по умолчанию для почтовых ящиков 
   пользователей. Если пользовательский аккаунт имеет атрибут "MailQuotaSize" 
   или "MailQuotaCount" (в предыдущих версиях "mailquota"), значение по
   умолчанию перекрывается последним. Значение по умолчанию - NULL.

           # echo "1000000S, 1000C" > ldapdefaultquota


   Что означает: 1000000 байт (S - size) и 1000 сообщений (C - count).
   Обязательна установка сразу двух параметров. Не забудьте установить
   quotawarning, иначе пользователь не получит предупреждение о
   превышении квоты.

   17. quotawarning Любое, подходящее по содержанию и смыслу, сообщение. 
   Будет добавлено к сообщению о превышении квоты.

           # echo "Warning! You have exceeded your quota!" > quotawarning


   18. custombouncetext Любое дополнительное сообщение к отвергнутым (bounce) 
   сообщениям.
   
           # echo "technical support +7 (323) 43264235" >> custombouncetext


   19. tarpitcount Количество RCPT TO, принимаемых вашим сервером, без задержки.
   Усложняет жизнь всяческим спаммерам. Значение по умолчанию - 0.

           # echo 5 > tarpitcount


   20. tarpitdelay Задержка после n-го количества RCPT TO, указанного в 
   tarpitcount, в секундах. Значение по умолчанию - 0.

           # echo 5 > tarpitdelay


   21. maxrcptcount Количество RCPT TO, принимаемых вашим сервером, до того, 
   как будет  непосредственно отвергнута попытка доставки. Значение по умолчанию - 0
   (неограничено).

   22. relaymailfrom Этот файл содержит адрес отправителя или домен отправителя 
   со знаком  <@> перед именем домена, которым разрешен relay через сервер. Это
   действительно плохая идея. Используйте SMTP-after-POP.

           # echo "friend@company.com"; > relaymailfrom
           # echo "@others.com" >> relaymailfrom


   23. rbllist Содержит список RBL (Real Time Black List) серверов для проверки IP
   адресов отправителей. Требует дополнительной настройки.

   24. badrcptto Содержит список отвергаемых локальных адресов. Если отправитель имеет
   RELAYCLIENT="", записи в файле игнорируются.

   25. dirmaker Если вы компилировали qmail-ldap с функцией autohomedirmake, этот файл
   содержит полный путь к скрипту, создающему директорию для
   пользовательской почты. Скрипт исполняется с GID и UID указанного
   пользователя, поэтому убедитесь в правильности установленных
   разрешений на запись в каталог. Эта функция особенно полезна в среде с
   виртуальными пользователями (у которых нет реального домашнего
   каталога), с использованием единственного реального GID/UID, к
   примеру, virtual/virtual (uid/gid). В таком случае только virtual
   должен иметь право на запись в каталог. Скрипт принимает единственный
   входной параметр, указывающий полный путь к создаваемому каталогу.
   Пример скрипта:

           #!/bin/bash
           mkdir -m 700 -p $1


   26. ldapcluster Одна из самых замечательных функций qmail - <родная> 
   поддержка кластеризации. Конечно, в том случае, и только в том, если вы
   компилировали qmail с поддержкой кластеризации. Вы можете включить
   кластер, установив значение в 1.

           # echo 1 > ldapcluster


   27. ldapmailhost Альтернативное имя данного хоста для использования в 
   кластерном окружении. Например, файл "me" содержит в себе запись
   mail1.company.com. Файл "ldapmailhost" содержит например
   mail2.company.com . Тогда любая почта, для пользователей с атрибутом
   mailHost, равным mail1.company.com или mail2.company.com будет
   доставлена локально. Прим: можно указать более одного альтернативного
   имени. Записи разделяются символом новой строки.


Директория LDAP

   Названия имен полей могут быть изменены до компиляции, редактируя
   qmail-ldap.h. В дальнейшем предполагается использование имен полей по
   умолчанию.

   Типичная запись пользовательского аккаунта в LDAP директории

             dn: cn=brahe, ou=intern, ou=customer, dc=bsws, dc=de
             userpassword: {crypt}CENSORED
             cn: brahe
             ou: intern
             ou: customer
             objectclass: top
             objectclass: person
             objectclass: qmailuser
             mailhost: smtp.bsws.de
             mailmessagestore: /realhome/brahe/
             uid: brahe
             realname: Henning
             accountstatus: active
             mailQuotaSize: 100000000
             mailQuotaCount: 10000
             mailSizeMax: 15000000
             mailforwardingaddress: hostmaster@domino.bsws.de
             mail: brahe@smtp.bsws.de
             mailalternateaddress: hosting@mediadeck.de
             mailalternateaddress: henning@mediadeck.de
             mailalternateaddress: brauer@mediadeck.de
             mailalternateaddress: bsws@mediadeck.de
             mailalternateaddress: hostmaster@mediadeck.de
             mailalternateaddress: hbrauer@mediadeck.de
             mailalternateaddress: henning.brauer@mediadeck.de
             mailalternateaddress: catchall@2stupid.net
             mailalternateaddress: catchall@bsws.de


   Рассмотрим подробнее каждое из полей и их значение в контексте
   qmail.

   dn
     Каждый объект в LDAP директории имеет так называемое <уникальное
   имя> (distinguished name), сокращенно "dn". Для пользователей обычно
   dn состоит из общего имени (cn - Common Name), организационного имени
   (ou - Organizational Unit) и основного уникального имени (base DN).

    userpassword
     Пользовательский пароль, с префиксом, определяющим метод хеш-функции
   ({MD5}, {SSHA1}, {CRYPT} и др.). Если префикс не указан, по умолчанию
   считается, что пароль кодирован методом {CRYPT}, в случае же если
   qmail компилировался с параметром CLEARTEXTPASSWORD, пароль без
   префикса считается "cleartext" (без шифрования).

   cn
     Общее имя - обязательно и уникально.

   ou
     Организационная единица. Используется для объединения пользователей в группы.

   objectClass
     Объектный класс, определяющий тип объекта в LDAP директории. Можно
   указать несколько классов для одного и того же объекта. Каждый объект
   в LDAP директории, взаимодействующий с qmail, должен принадлежать к
   классу qmailUser. По умолчанию, при чтении LDAP директории, данное
   условие не проверяется, однако с версии 20010101 существует возможно
   включить проверку на принадлежность пользовательского аккаунта к
   классу qmailUser.

   mailHost
     В кластерном окружении, данный параметр определяет хост, на котором
   должна непосредственно храниться почта данного пользователя. Заметим
   также, что хост должен иметь соответствующую запись в файле "me" для
   данного домена.

   mailmessagestore
     Полный путь к почтовому ящику/директории данного пользователя. Если
   вы запускаете qmail-start с параметром ./Maildir/ , данная запись
   будет определять следующий путь: /realhome/brahe/Maildir.

   uid
     Пользовательское имя (login), указываемое пользователем в процессе
   аутентификации для POP, IMAP и Webmail, должно быть уникальным.
   Разрешается использовать знак <@> в пользовательском имени
   (user@company.com), полезно, если почтовый сервер используется для
   множества доменов.

   realname
     <Настоящее> имя. Используйте по своему усмотрению.

   accountStatus
     Определяет статус аккаунта. Возможные значения:
     active - активирован
     nopop - доступ к почте запрещен
     disabled - отвергать почту, приходящую для данного пользователя
 
   mailQuotaSize
     Квота на размер почтового ящика. Указывается значение в байтах. В
   предыдущих версиях qmail-ldap использовался параметр mailQuota (можно
   использовать и в новых версиях, например, в целях совместимости со
   старыми записями в LDAP директории). В данном примере наложено
   ограничение на 100Мб.

   mailQuotaCount
     Квота на количество сообщений в почтовом ящике. В данном примере
   наложено ограничение на 10000 сообщений.

   mailSizeMax
     Квота на размер сообщения для пользователя. Например, dial-up
   пользователи предпочтут небольшой максимальный размер одного
   сообщения.
   Примечание:
     Атрибут mailSizeMax используется qmail-lspawn. В то время как можно
   задать SMTP DATA лимит для всех сообщений, если mailSizeMax
   превосходит SMTP DATA, первый не будет использован.

   mailquota
     Устаревший атрибут.
     Квота на размер почтового ящика данного пользователя. В данном
   примере ограничение накладывается на размер (100 Мб) или на количество
   (10000 сообщений).
   Пример:
      mailQuota: 1000000S, 10000C

   mailforwardingaddress
     Вся почта для данного пользователя пересылается (forwarding) на
   указанный адрес. Если значение строки deliverymethod не установлено в
   "localdelivery", почта только пересылается. Локальных сообщений в
   почтовом ящике пользователя не создается.

    mail
     Почтовый адрес данного пользователя. Вы можете установить только
   один атрибут для пользователя. Адрес должен быть уникальным. Для
   задания альтернативных адресов, воспользуйтесь mailalternateadress.

    mailalternateadress
     Альтернативный (дополнительный) почтовый адрес данного пользователя.
   Можете установить их сколь угодно много.
     Существует возможность указать также дополнительные параметры:

    qmailUid
     Значение системного UID (в числовой форме) для данного пользователя
   при операциях с почтой. Если не указан, по умолчанию используется
   значение из файла .

    qmailGid
     Значение системного GID (аналогично с qmailUid).

   homeDirectory
     Не имеет ни какого значения, если для данного пользователя указано
   mailmessagestore. Не рекомендуется использовать данный параметр. Если
   вы используется данный параметр в LDAP директории для иных сервисов,
   до компиляции измените значение в qmail-ldap.h LDAP_HOMEDIR например
   на noHomeDir.

   deliveryProgramPath
     По аналогии с |/path/to/prog в .qmail файле. Используется только в
   случае, если qmailDotMode установлен в ldapwithprog или both.
   Программа, путь к которой указан, получает из STDIN сообщение.
   Устанавливаются все переменные окружения, как описано в
   qmail-command(8), и завершающий код программы обрабатывается
   аналогично, описано.

   deliveryMode
     Определяет тип локальной доставки. Возможные значения:
     normal - обычная доставка, тип Maildir/box если не указаны адреса
      пересылки или deliveryProgramPath.
     forwardonly - только пересылка (forward).
     nombox - игнорировать локальную доставку в Maildir/box.
     localdelivery - всегда доставлять локально. Совместно с пересылкой
      (forwarding) создает локальную копию.
     reply - отсылать сообщение из autoReplyText отправителю.

   mailReplyText
     Текст сообщения для автоответчика. Используется только в случае,
   если deliveryMode установлен в reply.


Контроль доступа с помощью tcpserver

     Доступ контролируется с помощью tcpserver. tcpserver проверяет cdb
   файл, если он указан через параметр -х, на предмет соответствия IP
   адреса хоста, запросившего соединение. CDB - это формат файла базы
   данных, разработанный Дэном Берштейном (Dan Berstain). Если вы
   используете пакет conf-qmail, тогда cdb-файлы расположены в директории
   /service/[servicename]/tcp.cdb и строятся из файла tcp в той же
   директории с помощью программы tcprules. Просмотрите man tcprules для
   дополнительных возможностей. Типичный файл tcp выглядит примерно
   следующим образом:

             192.168.1.1:allow
             192.168.2.:allow
             :deny


     Первая строчка разрешает соединения с хоста с адресом 192.168.1.1,
   вторая с целой подсети класса C 192.168.2.0/24. Заметим, что tcpserver
   не работает непосредственно с маской подсети в десятичном виде, и
   потому вторая строка фактически разрешает соединения с хостов, IP
   адрес которых начинается с 192.168.2 . Третья строка запрещает все
   остальные соединения. Существует возможность установить переменные
   окружения посредством tcpserver, что имеет значение для qmail-smtpd:

             192.168.1.:allow,RELAYCLIENT=""
            :allow


     что означает следующее: для соединений с адресом хоста,
   начинающегося со 192.168.1, установить значение переменной окружения
   RELAYCLIENT в "", что разрешает релеинг в любом направлении. Все
   остальные хосты могут соединяться, но при этом переменная RELAYCLIENT
   на устанавливается, и релеинг разрешен лишь в том случае, если RCPT TO
   соответствует именам доменов в файле rcpthosts. Существует также
   возможность установить несколько переменных окружения:

             192.168.1.:allow,RELAYCLIENT="",MYVAR1="value",MYVAR2=""


     Вкратце рассмотрим дополнительные конфигурационные файлы,
   необходимые для функционирования qmail-ldap. Необходимо создать файлы
   tcp, где следует указать сети и хосты, с которых разрешен релеинг,
   посредством установки для них RELAYCLIENT="". Соединения со всех
   остальных (не указанных в явном виде) хостов разрешены, но RELAYCLIENT
   не устанавливается в "". Для qmail-qmqpd справедливы те же правила,
   что и для qmail-smtpd, и чаще всего используются один и тот же
   tcp.cdb, однако следует помнить, что для qmail-qmqpd необходимо
   запретить соединения по умолчанию, т.к. релеинг не проверяется. Для
   pop3 и imap серверов tcpserver обычно не использует cdb файлы.


POP3

     Для организации POP3 сервера, воспользуйтесь pop3d демоном, в
   составе qmail. Рекомендуем воспользоваться пакетом qmail-conf Тэтсу
   Ушиджима (Tetsu Ushijima). Внимательно ознакомьтесь с документацией и
   установите qmail-conf.

     Для того, чтобы сконфигурировать pop3d нужно сделать следующее:

            # qmail-pop3d-conf /var/qmail/bin/auth_pop qmaill
           /var/qmail/service/pop3d


     В отличие от документации qmail-conf мы используем auth_pop вместо
   checkpasswd.

     В случае, если вы не хотите использовать qmail-conf приведем пример
   типичной конфигурации qmail-pop3d для аутентификации через LDAP.

           # rc.local
           ...
           /usr/local/bin/tcpserver -c100 0 pop3 /var/qmail/bin/qmail-popup
           main.nordcomp.ru /var/qmail/bin/auth_pop /var/qmail/bin/qmail-pop3d Maildir &


IMAP

     Предпочтительным выбором IMAP сервера является Courier IMAP. Вы
   должны запускать courier imap с помощью tcpserver и auth_imap. Скрипт
   для запуска IMAP сервера будет выглядеть примерно следующим образом:

             #!/bin/sh
             exec_prefix=/usr/lib/courier-imap
             . /etc/imapd.config
             tcpserver -c 100 -l imap.nordcomp.ru -v -R 192.168.0.50 imap \
             ${exec_prefix}/sbin/imaplogin \
             /var/qmail/bin/auth_imap \
             ${exec_prefix}/bin/imapd Maildir 2>&1


     Не забудьте правильно указать IP адрес и доменное имя хоста с IMAP
   сервером в скрипте.


Webmail

     Предпочтительным выбором webmail сервера является sqwebmail. Он
   полностью написан на Си, непосредственно работает с Maildir для
   доступа к пользовательской почте и, возможно, является самым быстрым
   webmail сервером.

     Работа qmail в кластерном окружении

     Одной из самых замечательных функций qmail является <родная>
   поддержка кластеризации. Настройка кластеризации невероятно проста. В
   кластерном окружении каждый хост содержит в конфигурационных файлах
   locals и rcpthosts все домены, за которые ответственен кластер. При
   получении сообщения, получатель и атрибут mailHost просматривается в
   каталоге LDAP и последний сравнивается со значением в файлах me или
   ldapmailhost. Если для данного хоста mailHost не соответствует записям
   в файлах me и ldapmailhost, сообщение пересылается (forwarding) хосту
   mailHost с помощью протокола QMQP. Также существует пересылка
   (forwarding) на уровне pop3 или imap сессии, которая осуществляется с
   помощью, соответственно, auth_pop или auth_imap.

     Важное замечание: все имена хостов должны быть FQDN именами и
   (особенно mailHost) обязаны иметь записи в DNS! qmail не использует
   /etc/hosts.

     Настройка кластеризации

     Так как доставка сообщений внутри кластерного окружения
   осуществляется посредством протокола QMQPD (qmail-qmqpd), вам
   необходимо настроить qmail-qmqpd на каждом из хостов кластера. Можете
   воспользоваться qmail-conf-qmqpd для настройки конфигурационных
   файлов. Не забудьте добавить IP адреса хостов в кластере в
   /services/qmqpd/tcp , иначе доставка сообщений внутри кластера будет
   невозможна.

     Вам также придется выбирать, на каком из хостов кластера должна
   храниться пользовательская почта, устанавливая отдельно для каждого
   пользователя значение mailHost в LDAP директории. Добавьте также имена
   доменов в конфигурационные файлы locals и rcpthosts на каждом из
   членов кластера.

     После настроек конфигурационных файлов, разрешите кластеризацию
   qmail на каждом из хостов кластера и перезапустите qmail:

             # echo 1 > /var/qmail/control/ldapcluster


     Убедитесь также, что на каждом хосте в кластере установлен и
   сконфигурированы pop3 или imap серверы (прим: серверы imap и pop3
   должны открыть сокет на IP адресе, указанном в me иначе пересылка
   (forwarding) сессии будет невозможен).

     Доменный алиасинг (domain aliassing)

     Пусть адреса пользователей имеют вид [26]user@company.com и ваш
   почтовый сервер имеет DNS имя mail.company.com и вы хотите, чтобы
   почта для пользователей, отправленная на [27]user@mail.company.com
   также доставлялась [28]user@company.com. Конечно, существует
   возможность указать отдельно для каждого пользователя
   mailAlternateAddress, однако это не всегда приемлемо, в случае, если
   имеется большое количество пользовательских аккаунтов. Другой путь -
   это применение алиасов (псевдонимов) для доменов. Для этого проделайье
   следующие операции: удалите из locals запись mail.company.com и
   добавьте следующее в control/virualdomains:

             # echo "mail.company.com:mail.company.com" > vitrualdomains


     Далее добавьте файл alias/.qmail-mail:company:com-default с
   содержанием

             |/var/qmail/bin/forward $DEFAULT@company.com


     Учтите, что необходимо использование программы forward здесь,
   вместо, например, простой записи $DEFAULT@company.com. Переменные
   окружения, такие, как $DEFAULT, существуют только во время процесса
   доставки. Также убедитесь, что localdeliveries включены. В файле
   qmail-filename все точки должны быть заменены на двоеточие, как
   описано в man qmail-local.
   

Патч qmail-ldap-control

    Патч qmail-ldap-control  и документация Турбо Фредрикссона (Turbo
   Fredriksson).

    Основы
     Где найти патч?
     Последнюю версию патча qmail-ldap-control можно найти тут
     http://qmail.bayour.com/patches_ldap


Примечания по использованию

     Первоначально вы должны пропатчить дерево исходных файлов qmail
   патчем qmail-ldap до использования qmail-ldap-control. Также до
   использования qmail-ldap-control вы должны добиться работы qmail с
   LDAP, т.к. в случае возникновения проблем индентифицировать их будет
   гораздо сложнее.

   Что это и для чего оно?

     Далее мы подразумеваем qmail-ldap и патчем qmail-ldap и
   дополнительный патч qmail-ldap-control. Этот патч позволяет хранить
   конфигурационную информацию qmail, обычно хранящуюся в файлах каталога
   /var/qmail/control, в директории LDAP.

     Главные причины необходимости использования

     Главная причина необходимости использования данного патча это
   требования к централизованному хранению конфигурационных файлов qmail.

     Используя простой Web-интерфейс (phpQLAdmin от Adfinis) даже не
   квалифицированный специалист сможет добавить домены, пользователей и
   т.д. в централизованной среде, без риска "что нибудь забыть".

     Необходимые файлы

     В основном, ЕДИНСТВЕННЫЕ файлы, которые вам потребуются в директории
   ~/control, это "me", "ldapcontroldn" и "ldapserver", т.к. qmail должен
   знать, кто есть кто ("me") где записано FQDN имя хоста. Эти данные
   используются qmail-ldap-control для того, чтобы найти нужный объект в
   LDAP директории для конкретного хоста. Также qmail должен знать, где
   искать информацию ("ldapcontroldn"), и будет проводить поиск за
   указанным dn. Также qmail нужно знать где находится LDAP сервер
   ("ldapserver").

   Если вам нужно ограничить доступ к данным объектам qmailLDAP/Control в
   LDAP директории, вы можете задать нужный ACL (Access Control List) и
   "привязываться" к LDAP серверу с помощью специального имени (BindDN) и
   пароля. В таком случае вам также потребуются файлы "ldaplogin" и
   "ldappassword".

     Прим: учтите, что указываемое имя (BindDN) является Уникальным
   Именем (Distinguished Name) а не именем пользователя.

     В случае, если LDAP сервер использует нестандартный порт, его можно
   указать в файле "ldapport".


Установка qmail-ldap-control

     Установка патча и конфигурирование Makefile в соответствии с
   установками

     После того, как вы скачали патч, распакуйте его в каталог с
   исходными файлами qmail и установите патч:

             # gzip -cd    /путь/к/патчу/qmail-ldap-control-xxxx.patch.gz | patch  -p1


     Теперь нужно модифицировать Makefile в соответствии с вашими
   установками. Вы можете изменить следующие параметры:

             CONTROLDB=-DUSE_CONTROLDB


     Для возможности хранения конфигурационных файлов в ~control/*
   раскомментируйте эту строку

    Прим: патч qmail-ldap-control работает с соответствующей версией
   патча qmail-ldap.


Модифицирование конфигурации LDAP сервера

     Пока компилируется qmail вы можете начать модифицирование настроек
   вашего LDAP сервера. Необходимо указать LDAP серверу, какие типы
   объектов и какие атрибуты мы хотим хранить в директории LDAP для
   работы с qmailLDAP/Control. Спецификации объектов и их атрибутов могут
   быть найдены в конце файла QLDAPINSTALL. Если вы используете LDAP v.3
   (например, OpenLDAP 2.х) вы должны использовать соответствующую схему,
   поставляемую вместе с qmailLDAP/Control, qmailControl.schema. Укажите
   путь к этому файлу в файле slapd.conf после qmail.schema.
   Перезапустите LDAP сервер.

     Перемещение конфигурационных данных в LDAP директорию.

     Далее для каждого файла из ~control нужно создать LDIF файл, для
   помещения данных в LDAP директорию. Все, что вам нужно сделать,
   использовать имя файла в качестве названия атрибута объекта. На
   пример, если есть файл "locals", то атрибут для каждой строчки в этом
   файле "locals". Аналогично например и файл ~control/ldapuid, атрибут
   для значения "ldapuid" и т.д.

      Примеры конфигурации
   перемещение конфигурационных файлов в LDAP директорию

     Основной объект LDAP

     Первоначально необходимо решить, где ("ldapcontroldn") хранить наши
   объекты qmailControl/LDAP. Например, вы можете выбрать наименование в
   соответствии с географическим положением или в соответствии с доменной
   системой. Например, если вы находитесь в Росии и ваша компания
   называется "Бизнес", то при наименовании с географическим положением,
   логичным выбором BaseDN будет "c=RU", "o=Business". Под этим DN также
   к примеру создаем Организационную Единицу (OU) с именем qmailLDAP.
   Т.к. сервер называется server.business.ru, то полным DN для объектов
   qmailLDAP/Control будет:

             cn=server.business.ru, ou=qmailLDAP, o=Business, c=RU


     В связи с этим первыми строками в создаваемом LDIF файле будут
   следующие записи:

             dn: cn=server.business.ru, ou=qmailLDAP, o=Business, c=RU
             objectClass: top
             objectClass: qmailControl
             cn: server.business.ru


     Перемещение данных файла "locals" в LDAP директорию
     Здесь мы продемонстрируем, как переместить данные из файла "locals"
   в LDAP директорию. Файл "locals" является типичным для qmail, именно
   из этих соображений он и был выбран для примера.

     Пример файла "locals":

             business.ru
             4pl.nu
             air2.net
             alho.net
             antique-on-net.com
             claesbuhler.com
             companyregister.com
             companyregister.net
             companyregister.ws
             donald.air2.net
             donald.fotbollextra.org
             donald.modular-telecom.se
             donald.test.org
             donald.winas.com
             fotbollextra.org
             fraktmaklarna.se
             heyman.nu
             localhost
             logisticsolutions.nu
             mail.air2.net
             mail.nbk.se
             modular-telecom.se
             nbk.se
             samba.se
             system2.net
             test.org
             thegamestudio.com
             westcoastit.com
             winas.com


   Для создания LDIF файла просто добавляем имя атрибута перед каждой
   строчкой:

             locals: business.ru
             locals: 4pl.nu
             locals: air2.net
             locals: alho.net


   и т.д.



Перемещение данных qmail-ldap в LDAP директорию

     Конфигурационные данные, требующиеся qmail-ldap, могут также быть
   перенесены в LDAP директорию. Основные конфигурационные файлы
   qmail-ldap это ldapbasedn, ldapuid, ldapgid, ldapdefaultquota и т.д.
   Для того, чтобы добавить эти данные в директорию LDAP для
   qmailLDAP/Control, необходимо добавить записи из этих файлов в LDIF.

     Прим: следует учесть, что "ldapbasedn" это DN, с которого будет
   производится поиск пользовательских аккаунтов, а "ldapcontroldn"
   указывает DN, где должен производится поиск объектов
   qmailControl/LDAP.

             ldapbasedn: c=RU
             ldapuid: 1001
             ldapgid: 1001
             ldapdefaultquota: 10000


   Далее добавьте данные оставшихся файлов в LDIF.

   Конечный LDIF файл

   Результирующий LDIF файл для загрузки в LDAP директорию:

            dn: cn=server.business.ru, ou=qmailLDAP, o=Business, c=RU
            objectClass: top
            objectClass: qmailControl
            cn: server.business.ru
            locals: business.ru
            locals: air2.net
            locals: alho.net
              .......
            ldapbasedn: c=RU
            ldapuid: 1001
            ldapgid: 1001
            ldapdefaultquota: 10000


   Воспользуйтесь командой ldapadd для добавления данных в LDAP
   директорию.

   Содержимое существующих конфигурационных файлов

     После переноса данных в LDAP директорию единственные
   конфигурационные файлы, которые должны отстаться в ~control следующие:

   Содержимое файлов

   Файл             Содержимое
   ldapcontroldn    ou=QmailLDAP,o=Business,c=RU
   ldapserver       ldap.business.ru
   me               server.business.ru

     Все остальные данные будут затребованы из LDAP директории.
     Важное замечание: вы должны оставить файл rcpthosts, содержащий по
   крайней мере, только имя вашего хоста, на случай неработоспособности
   LDAP сервера, иначе почтовый сервер окажется OpenRelay. В случае, если
   LDAP сервер окажется неработоспособным, вы будете застрахованы от
   неприятностей.
   
   Послесловие:
   
   LDAP директории - панацея от множества бед системного администратора.
   qmail и OpenLDAP в нашей компании используется больше года. Мне также
   удалось провести серию успешных опытов по интеграции qmail с Oracle
   Internet Directory - об этом в следующий раз.
   
   Время создания: 2002-10-23 18:33:19 © Сыктывкарское сообщество UNIX, 2002 - 2003 г.


Иcточник: http://www.opennet.ru  •  Опубликована: 05.03.2005
Нашли ошибку в тексте? Сообщите о ней автору: выделите мышкой и нажмите CTRL + ENTER
Теги:  


Оценить статью:
Вверх
Комментарии посетителей
Комментарии отключены. С вопросами по статьям обращайтесь в форум.