Перевод: Доморадов Алексей. Все права защищены. Copyright © 2007.
Примечание: При размещении данного материала у себя на сайте, просьба указывать ссылку на оригинальный сайт - www.sys-adm.org.ua.
Все замечания и предложения по переводу документации на русский язык, а также найденные ошибки и опечатки присылайте на мой электронный адрес.
Благодарности: Спасибо всем, кто помогал мне переводить эту документацию.
Особенное спасибо: Галинурову Кириллу и Грозаку Михаилу aka RedStalker_Mike.
Special thanks to: Igor Luzanov aka ISKATEL.
Postfix использует множество типов баз данных для хранения и поиска информации. Базы данных Postfix определяются как "type:name". Berkeley DB реализует тип базы данных Postfix "hash" и "btree". Именем базы данных Postfix Berkeley DB является имя файла базы данных без суффикса ".db". Базы данных Berkeley DB управляются с помощью команды postmap(1).
Примечание: Berkeley DB версии 4 не поддерживается версиями Postfix до 2.0.
Этот документ описывает:
Как собрать Postfix на системах без библиотеки Berkeley DB.
Как собрать Postfix на BSD или Linux системах с множеством версий Berkeley DB.
Как улучшить производительность.
Проблема отсутствия библиотеки pthread.
Многие коммерческие UNIX системы поставляются без поддержки Berkeley DB. Примерами являются - Solaris, HP-UX, IRIX, UNIXWARE. Чтобы собрать Postfix с поддержкой Berkeley DB, вам необходимо загрузить и установить исходный код с http://www.sleepycat.com/
Предупреждение: некоторые системные библиотеки Linux используют Berkeley DB, также как и некоторые сторонние библиотеки, такие как SASL. Если вы соберете Postfix с разной реализацией Berkeley DB, тогда каждая программа Postfix будет аварийно завершаться, потому что системная библиотека, библиотека SASL или сам Postfix будет использовать неправильную версию.
Большинство последних версий Berkeley DB имеют ключ компиляции, "--with-uniquename", который переименовывает символы так, что множество версий Berkeley DB могут сосуществовать в том же приложении. Несмотря на не экономность, это может быть единственным выходом сохранения целостности системы.
Чтобы собрать Postfix после того, как вы установили Berkeley DB с http://www.sleepycat.com/, используйте, что-то типа этого:
% make tidy
% make makefiles CCARGS="-DHAS_DB -I/usr/local/BerkeleyDB.3.1/include" \
AUXLIBS="-L/usr/local/BerkeleyDB.3.1/lib -ldb"
% make
Точные пути зависят от установленной версии базы данных. Например, Berkeley DB версии 2 устанавливается в /usr/local/BerkeleyDB.
Предупреждение: формат файла создаваемый Berkeley DB версии 1 не совместим с версиями 2 и 3 (версии 2 и 3 имеют тот же самый формат). Если вы переключаетесь (как то слишком прямо звучит) между версиями базы данных, тогда вам необходимо пересобрать все ваши файлы базы данных Postfix.
Предупреждение: если вы используете Berkeley DB версии 2 или более поздние, не включайте режим совместимости с DB 1.85. Его включение может привести к нарушению способности fcntl осуществлять блокировку файла.
Предупреждение: если вы используете Perl для управления Berkeley DB файлами, тогда вам необходимо использовать в Perl такую же версию Berkeley DB как в Postfix.
Некоторые BSD системы поставляются с множеством реализаций Berkeley DB. Обычно, Postfix собирается с версией DB по умолчанию, поставляемой с системой.
Чтобы собрать Postfix на BSD системах с определенной версией базы данных, используйте "вариации" следующих команд:
% make tidy % make makefiles CCARGS=-I/usr/include/db3 AUXLIBS=-ldb3 % make
Предупреждение: формат файла создаваемый Berkeley DB версии 1 не совместим с версиями 2 и 3 (версии 2 и 3 имеют тот же самый формат). Если вы переключаетесь между версиями базы данных, тогда вам необходимо пересобрать все ваши файлы базы данных Postfix.
Предупреждение: если вы используете Berkeley DB версии 2 или более поздние, не включайте режим совместимости с DB 1.85. Его включение может привести к нарушению способности fcntl осуществлять блокировку файла.
Предупреждение: если вы используете Perl для управления Berkeley DB файлами, тогда вам необходимо использовать в Perl такую же версию Berkeley DB как в Postfix.
Некоторые Linux системы поставляются с множеством реализаций Berkeley DB. Обычно, Postfix собирается с версией DB по умолчанию, поставляемой с системой.
Предупреждение: некоторые системные библиотеки Linux используют Berkeley DB. Если вы соберете Postfix с реализацией не по умолчанию, тогда каждая программа Postfix будет завершаться аварийно, потому что системная библиотека, библиотека SASL или сам Postfix будет использовать неправильную версию.
На Linux, вам необходимо отредактировать скрипт makedefs, чтобы указать библиотеку базы данных не по умолчанию. Причина в том, что расположение по умолчанию файла db.h изменяется случайно между поставщиками и между версиями, поэтому Postfix должен "выбрать" для вас необходимый файл.
Предупреждение: формат файла создаваемый Berkeley DB версии 1 не совместим с версиями 2 и 3 (версии 2 и 3 имеют тот же самый формат). Если вы переключаетесь (как то слишком прямо звучит) между версиями базы данных, тогда вам необходимо пересобрать все ваши файлы базы данных Postfix.
Предупреждение: если вы используете Berkeley DB версии 2 или более поздние, не включайте режим совместимости с DB 1.85. Его включение может привести к нарушению способности fcntl осуществлять блокировку файла.
Предупреждение: если вы используете Perl для управления Berkeley DB файлами, тогда вам необходимо использовать в Perl такую же версию Berkeley DB как в Postfix.
Postfix предоставляет два конфигурационных параметра, которые управляют объемом памяти, используемым Berkeley DB.
berkeley_db_create_buffer_size (по умолчанию: 16 MBytes на таблицу). Это значение используется командами, отвечающими за поддержку файлов Berkeley DB: postalias(1) и postmap(1). Для "hash" файлов, скорость создания резко снижается, если только доступная память не определяется зависимостью O(размер файла). Для "btree" файлов, скорость создания остается хорошей на упорядоченном вводе даже при небольшом количестве свободной памяти, но при произвольном вводе резко снижается, если только доступная память не определяется зависимостью O(размер файла).
berkeley_db_read_buffer_size (по умолчанию: 128 kBytes на таблицу). Это значение используется всеми другими программами Postfix. Размер буфера достаточен для чтения. Если кеш меньше, чем таблица, производительность случайного чтения незначительно зависит от размера кеша, кроме btree таблиц, где размер кеша должен быть достаточно велик, чтобы вмещать весь путь от корневого узла. Эмпирический опыт показывают, что 64 kBytes могут быть достаточными. Мы увеличили размер вдвое для того, чтобы обезопасить себя при грядущих изменениях.
Когда сборка Postfix терпит неудачу с сообщением:
undefined reference to `pthread_condattr_setpshared' undefined reference to `pthread_mutexattr_destroy' undefined reference to `pthread_mutexattr_init' undefined reference to `pthread_mutex_trylock'
Добавьте библиотеку "-lpthread" к команде "make makefiles".
% make makefiles .... AUXLIBS="... -lpthread"
Больше информации доступно на http://www.sleepycat.com/.
| Дата последнего обновления: 30.10.2008. | Postfix version: 2.3.4. |