Тестирование Courier maildrop
Пришло время протестировать нашу версию Courier maildrop. Выполним следующие операции:
1. Проверим, работает ли Courier maildrop без Postfix.
2. Используем программу sendmail, поставляемую с Postfix, для доставки сообщения агенту Courier maildrop.
3. Проверим работу фильтров.
4. Проверим работу квот (если вы их используете).
Архив за Июнь 2009
Подготовка квот Maildir
Кажется, что квоты – это замечательная функциональность, и здорово было бы ее использовать, но, прежде чем вы решите сделать это, имейте в виду, что система квот maildrop является предметом споров, поскольку квоты Maildir не всегда надежны. Точка зрения разработчика Postfix представлена в высказывании Виктора Духовны (Victor Duchovni):
Камнем преткновения является то, что пользователи «maildir++» [...]
Создание почтового фильтра
После создания шаблона каталога Maildir вы можете создать набор фильтров доставки по умолчанию для Courier maildrop. Для начала создадим глобальный набор правил, которые будут применяться к каждому получателю почты на вашем сервере, в каталоге /etc/maildropr. Для отладки будет удобно поместить в домашний каталог каждого пользователя файл журнала таким правилом:
logfile “$HOME/maildrop.log”
Теперь подумаем о правилах [...]
Создание почтовых ящиков Maildir
Все пользователи данного корпоративного почтового сервера являются виртуальными пользователями. Они не связаны с локальными пользовательскими учетными записями, и когда вы создаете пользователей в своем каталоге LDAP, никакой сценарий автоматически не создает домашний каталог или почтовый ящик.
Прежде чем тестировать программу maildrop, необходимо создать пользовательские почтовые ящики. Пока что делаем это вручную (позже вы, [...]
Настройка Courier maildrop
Проще всего создать конфигурацию maildrop для LDAP, скопировав файл maildropldap.config из каталога исходных текстов maildrop в /etc/ maildropldap.config (именно там Courier maildrop по умолчанию ищет файл конфигурации LDAP). Отредактируем этот файл, чтобы он соответствовал нашей конфигурации.
Для рассматриваемого нами в этой главе примера файл конфигурации должен быть таким:
hostname mail.example.com
basedn dc=example,dc=com
filter &(objectclass=inetorgperson)
timeout 5
search_method mail
mail_attr mail
uid_attr uid
uidnumber_attr uidNumber
gidnumber_attr gidNumber
maildir_attr mailbox
homedirectory_attr homeDirectory
quota_attr quota
Установка Courier maildrop
В момент написания этой книги поддержка LDAP в Courier maildrop находилась на этапе бета-тестирования. При корректной настройке все работает хорошо, но при возникновении ошибки вы не получите сведений о том, что произошло. Учитывая темпы развития Courier maildrop, скорее всего, эта недоработка будет устранена, когда вы будете читать нашу книгу. Для получения поддержки LDAP [...]
Настройка Courier maildrop
Courier maildrop – это локальный агент доставки, который забирает сообщения от агента передачи сообщений, такого как Postfix, и хранит их в почтовом ящике получателя в формате Maildir. Maildrop также может применять к сообщениям фильтры. Еще одной интересной возможностью является введение квот для каталогов (сообщения в формате Maildir хранятся в отдельных файлах в каталоге).
Подготовка [...]
Тестирование LDA
Для тестирования LDA просто отправьте сообщение по одному из адресов вашей карты получателей и посмотрите в почтовый журнал. Вы должны увидеть, что Postfix использует новый транспорт maildrop:
# echo foo | /usr/sbin/sendmail -f “” postmaster@example.com
# tail -f /var/log/maillog
Jun 29 14:39:13 mail postfix/pickup[5122]: AC7B94400C: uid=0 from=<> Jun 29 14:39:13 mail postfix/cleanup[5127]: AC7B94400C:
message-id=<20040629123913.AC7B94400C@mail.example.com> Jun 29 14:39:13 mail postfix/qmgr[5123]: AC7B94400C:
from=<>, [...]
Ограничение одновременно доставляемых сообщений
Перед проверкой нового транспорта необходимо убедиться в том, что он настроен для доставки сообщений только одному пользователю одновременно. Не беспокойтесь о возможных потерях производительности, т. к. это нормально для большинства почтовых серверов. Даже локальный транспорт Postfix имеет такое ограничение (параметр local_ destination_recipient_limit).
Синтаксис параметра создания ограничения для других LDA имеет
вид WM#_cfly;/(c4>/_destination_recipient_nmit, где имя_службы [...]
Предупреждение
Существуют два побочных эффекта использования maildrop вместо локального агента доставки. Во-первых, локальный агент доставки просматривает карты псевдонимов, а Courier maildrop этого делать не умеет. Однако мы уже справились с этой проблемой в разделе «Настройка Postfix для использования карт запросов псевдонимов LDAP» путем установки параметра virtual_alias_maps. Второе ограничение заключается в том, что maildrop не следит за [...]
Создание локального транспорта
Начинаем с определения новой транспортной службы в файле mas-ter.cf. Не бойтесь испортить свой текущий локальный агент доставки (если у вас уже работает какой-либо), ведь сервер Postfix начнет использовать новую службу лишь после внесения соответствующих изменений в файл main. cf. Новый транспорт будет pipe-транспортом и будет называться maildrop. Добавляем в файл master.cf следующие строки:
maildrop [...]
Передача функции доставки агенту Courier maildrop
Рассматриваемая в этой главе конфигурация не использует ни один из агентов доставки Postfix (демоны local, maildrop и virtual). Причина в том, что сторонние агенты доставки поддерживают правила фильтрации и квоты. Например, пользователь bammbamm может помещать все сообщения для postmaster@example.com в отдельную подпапку. В этом разделе будет показано, как передать функцию [...]
Проверка списков
Может быть, вы помните, что структура простых списков, описанная ранее в разделе «Создание объектов списков», использует псевдонимы. Поэтому, выполнив запрос postmap с именем списка, мы должны быть готовы извлечь нескольких получателей для псевдонима:
# su – postfix
$ /usr/sbin/postmap -q “all@example.com” ldap:/etc/postfix/ldap/ virtual_aliases.cf
bamm@example.com,pebble@example.com,mcbricker@example.com,
flintstone@example.com,rubble@example.com
Когда сервер LDAP возвращает несколько результатов, Postfix собирает их вместе и преобразует в список, разделенный [...]
Настройка Postfix для использования карт запросов псевдонимов LDAP
Когда файл конфигурации запросов псевдонимов LDAP готов, следует подключить его к вашей конфигурации Postfix, задав параметр virtu-al_alias_maps в файле main.cf. Используется тот же синтаксис, что и для карт получателей, описанный ранее в разделе «Активация карты запросов»:
virtual_alias_maps = proxy:ldap:/etc/postfix/ldap/virtual_aliases.cf Перезагружаем конфигурацию и приступаем к тестированию. Тестирование карт запросов псевдонимов [...]
Обращение к LDAP за почтовыми псевдонимами
Настройка Postfix для обращения к серверу LDAP за почтовыми псевдонимами состоит из тех же операций, которые были приведены в разделе «Добавление LDAP-запросов для локальных получателей», нужно будет лишь указать другой параметр result_attribute для результата запроса и использовать параметр query_filter для извлечения из результатов определенного атрибута.
Имена псевдонимов на сервере каталогов компании [...]
Тестирование получателей LDAP
Пока единственное, что мы можем проверить, — это может ли Postfix найти действительного локального получателя. Отправить тестовое сообщение невозможно, т. к. настройкой локальной доставки мы еще не занимались.
Используем команду postmap для запроса к серверу LDAP об известном нам локальном получателе bamm@example.com. Однако, прежде чем это делать, следует переключиться на пользователя postfix для уверенности [...]
Примечание
Это означает, что Postfix принимает любое значение, которое возвращает сервер LDAP, в качестве доказательства существования локального получателя для входящего сообщения. Если же сервер LDAP не возвращает значение, то Postfix отвергает сообщение.
Выберите простой атрибут, который легко идентифицировать при тестировании запроса. В нашем случае отлично подходит uid, так что именно его мы и укажем как атрибут результата [...]
Определение атрибутов результатов LDAP
В завершение настройки карты LDAP необходимо определить атрибут для хранения ключа, к которому Postfix обращается при просмотре. Используется точно такая же логика, что и при работе с любыми другими уже известными вам типами карт. Соответствие имен параметров для ключей и значений полям индексированной карты приведено в табл. 19.1.
Таблица 19.1. Соответствие полей индексированной [...]
Настройка хоста LDAP
Вы можете сообщить серверу Postfix о том, где следует искать службу каталога, используя параметры конфигурации serverhost и server_ port. Параметр server_host определяет тип соединения (ldap://, ldaps:// или ldapi://) как часть URL-адреса одного или нескольких LDAP-серверов и может включать порт сервера. По умолчанию этот параметр задан следующим образом: server_host = ldap://localhost:389.
Дополнительно вы можете задать [...]
Отмена LDAP-связывания
По умолчанию, прежде чем осуществлять запрос, Postfix пытается ау-тентифицироваться на LDAP-сервере посредством LDAP-связывания. Пока мы только приступаем к настройке, лучше отключить эту аутентификацию, чтобы не усложнять дело. Создаем файл конфигурации запросов LDAP с именем /etc/postfix/ldap/local_recipients.cf и отключаем связывание следующим параметром:
Добавление LDAP-запросов для локальных получателей
Давайте теперь займемся основными параметрами Postfix, которые необходимо задать для обращения к серверу LDAP. Начнем с отмены операций LDAP-связывания. Затем создадим набор параметров, хранящих информацию, используемую для проверки локальных получателей.
Просмотры LDAP
В списках рассылки Postfix обычно мало вопросов, связанных с LDAP, особенно по сравнению с количеством вопросов, относящихся к базам данных. Многие считают, что использование Postfix (или чего-то другого с теми же целями) в сочетании с LDAP сродни шаманству, и пытаются всеми силами этого избежать. Однако все совсем не так. Для настройки LDAP-запросов следует выполнить [...]
Настройка Postfix и LDAP
Для того чтобы проверить, включена ли уже в вашей версии Postfix поддержка LDAP и SASL, выполните такую команду:
$ ldd ‘/usr/sbin/postconf -h daemon_directory’/smtpd
linux-gate.so.1 => (0×00bad000)
libldap.so.2 => /usr/lib/libldap.so.2 (0×00882000)
liblber.so.2 => /usr/lib/liblber.so.2 (0×00646000)
libsasl2.so.2 => /usr/lib/libsasl2.so.2 (0×0098a000)
libdb-4.2.so => /lib/tls/libdb-4.2.so (0×00a73000) libnsl.so.1 => /lib/libnsl.so.1 (0×00835000) libresolv.so.2 => /lib/libresolv.so.2 (0×00655000) libc.so.6 => /lib/tls/libc.so.6 (0×004e6000)
libdl.so.2 => /lib/libdl.so.2 [...]
Тестирование LDAP
Проще всего протестировать сервер LDAP, используя клиентские средства, поставляемые в составе OpenLDAP. В командной строке запускаем ldapsearch для подключения клиента LDAP к серверу и выполняем запрос к каталогу. Рассмотрим успешный пример:
# ldapsearch -x -LLL -b “uid=bammbamm,ou=it,ou=people,dc=example,dc=com” “(objectclass=*)”
dn: uid=bammbamm,ou=it,ou=people,dc=example,dc=com
uid: bammbamm
givenName: Bamm
sn: Bamm
cn: Bamm Bamm
homeDirectory: /var/spool/mail/bammbamm maildrop: postmaster@example.com maildrop: bamm.bamm@example.com maildrop: abuse@example.com objectClass: CourierMailAlias objectClass: CourierMailAccount [...]
Настройка клиента LDAP
Для проверки конфигурации slapd и обеспечения взаимодействия с Courier IMAP необходимо настроить клиент OpenLDAP. Обычно требуется изменить несколько параметров в файле /etc/openldap/ldap. conf. Для начала достаточно включить следующие параметры:
URI ldap://mail.example.com
BASE dc=example,dc=com
Параметры URI и BASE указывают, к какому LDAP-серверу следует обращаться и в каком месте дерева начинать запросы. Корректно задав эти параметры, вы можете [...]

