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


Введение

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

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

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

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

MySQL клиент для Postfix использует клиентскую библиотеку mysql, которую можно найти на сайтах:

http://www.mysql.com/downloads/
http://sourceforge.net/projects/mysql/

Для сборки Postfix с поддержкой MySQL, Вам необходимо добавить -DHAS_MYSQL и -I для указания каталога, содержащего заголовочные файлы MySQL, а также библиотеку mysqlclient (и libm) в AUXLIBS, например:

make -f Makefile.init makefiles \
    'CCARGS=-DHAS_MYSQL -I/usr/local/mysql/include' \
    'AUXLIBS=-L/usr/local/mysql/lib -lmysqlclient -lz -lm'

Далее просто запустите 'make'. Для этого потребуется libz, библиотека сжатия. Старые версии MySQL собираются и без нее.

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

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

alias_maps = mysql:/etc/postfix/mysql-aliases.cf

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

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

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

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

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

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

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

Дополнительные заметки

Интерфейс взаимодействия с MySQL позволяет использовать множество баз данных: одну можно использовать для таблицы виртуальных пользователей, другую - для access table, и третью, если пожелаете, для таблицы алиасов .

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

Credits


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