Поддержка поисковых таблиц mysql позволяет Postfix обращаться к конфигурационной информации, хранящейся на серверах баз данных MySQL. Реализация позволяет работать с множеством баз данных: использовать одну для таблицы virtual(5), другую для таблиц access(5) и aliases(5), по вашему желанию. Возможно использование нескольких серверов для одной и той же базы данных. Postfix автоматически переключится на другой (вспомогательный) сервер баз данных, если основной не сможет обслуживать запросы по той или иной причине.
Высоконагруженные почтовые сервера , использующие MySQL, генерируют множество параллельных SQL-запросов, поэтому сервер(а) баз данных должны быть соответствующим образом настроены (не забывайте об этом). Вы можете уменьшить количество соединений с сервером баз данных, используя сервис Postfix proxymap(8)
Заметка: для установки 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 собираются и без нее.
Если 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-серверов станет доступен.