Использование 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
- The initial version was contributed by Scott Cotton and Joshua
Marcus, IC Group, Inc.
- Liviu Daia revised the configuration interface and added the
main.cf configuration feature.
- Liviu Daia with further refinements from Jose Luis Tallon and
Victor Duchovni developed the common query, result_format, domain and
expansion_limit interface for LDAP, MySQL and PosgreSQL.
Документ перевел Максим Шапошников
|