Использование PostgreSQL в Postfix


Введение

Поддержка поисковых таблиц pgsql позволяет Postfix обращаться к конфигурацонной информации, хранящейся на серверах баз данных PostgreSQL. Этот инструмент позволяет работать с множеством баз данных : использовать одну базу для таблицы virtual(5), другую - для access(5), третью - для таблицы aliases(5) Возможно использование нескольких серверов для одной и той-же базы данных, Postfix автоматически переключится на другой (вспомогательный) сервер баз данных, если основной не сможет обслуживать запросы по той или иной причине.

Высоконагруженные почтовые сервера , использующие PostgreSQL, генерируют множество параллельных pgsql-запросов, поэтому PostgreSQL сервер(а) должны быть соответствующим образом настроены, имейте это в виду. Вы можете уменьшить количество соединений с сервером баз данных используя сервис Postfix proxymap(8)

Установка Postfix с поддерержкой PostgreSQL

Заметка: для использования PostgreSQL с Postfix в Debian GNU/Linux's все , что вам нужно - это инсталлировать пакет postfix-pgsql. Пересборка Postfix не требуется.

Для сборки Postfix с поддержкой PostgreSQL, Вам необходимо добавить -DHAS_PGSQL, имя каталога, содержащего заголовочные файлы PostgreSQL, и расположение библиотеки libpq:

Пример

% make tidy
% make -f Makefile.init makefiles \
        'CCARGS=-DHAS_PGSQL -I/usr/local/include/pgsql' \
        'AUXLIBS=-L/usr/local/lib -lpq'

Затем, просто запускаем 'make'.

Использование таблиц PostgreSQL

Если Postfix собран с поддержкой баз данных PostgreSQL, Вы можете заставить его работать с ними. Для этого внесите изменения в конфигурационный файл main.cf , например такие:

/etc/postfix/main.cf:
    alias_maps = pgsql:/etc/postfix/pgsql-aliases.cf

Файл /etc/postfix/pgsql-aliases.cf содержит информацию, объясняющую Postfix, как работать c базой данных PostgreSQL. Полное описание дано в документе pgsql_table(5)

Пример: локальные алиасы

#
# Конфигурационный файл pgsql для таблицы поиска local(8) aliases(5) 
#

#
# Хосты баз данных , c которыми пытается установить соединение Postfix 
hosts = host1.some.domain host2.some.domain

#Имя пользователя и пароль сервера баз данных.
user = someone
password = some_password

# Имя базы данных.
dbname = customer_database

# Шаблон SQL запроса для Postfix 2.2 и выше. Смотрите pgsql_table(5).
query = SELECT forw_addr FROM mxaliases WHERE alias='%s' AND status='paid'

#Для версий Postfix младше 2.2. Подробности в документе pgsql_table(5).
select_field = forw_addr
table = mxaliases
where_field = alias
# Не забывайте про "AND"!
additional_conditions = AND status = 'paid'

Использование резервных серверов баз данных

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

Для повышения надежности в Postfix включена возможность доступа к нескольким серверам баз данных (с одинаковым содержимым,естесственно). Это будет работать в том случае, если администраторы настроили реплицикацию необходимой базы данных Postgres на нескольколько серверов - эти машины и будут резервировать друг друга.

Если запросы к одному хосту заканчиваются неудачей, остальные хосты опрашиваются в случайном порядке. Когда ни один сервер баз данных недостижим, передача почты останавливается до того момента, когда хотя бы один из PostgreSQL серверов станет доступен.

Credits


Документ перевел Максим Шапошников
Hosted by uCoz