dbmail-модуль
Установка dbmail достаточно тривиальна и подробно описана в wiki, я позволю себе краткто изложить ход установки.Для работы dbmail требуется библиотека GMime версии 2.4.x, она есть в репозитории epel, в других репозиториях версии этой библиотеки были 2.5 и 2.6. К сожалению dbmail не умеет с ними работать.
Конфигурация dbmail находиться в файле /etc/dbmail.conf.
Заносим туда логины/пароли на доступ к mysql-серверу, параметр table_prefix лучше не менять, SSL/TLS будет обрабатывать nginx, и еще я поменял кодировку писем по умолчанию.
Теперь проведем небольшой тюнинг mysql.
Добавим в my.cnf следующие параметры:
Cоздаем базу данных dbmail и заливаем в нее структуру из файла /usr/share/doc/dbmail-3.0.2/sql/mysql/create_tables.mysql
dbmail-модуль готов, осталось запустить сервисы
admin-модуль
На текущий момент для администрирования каждого из dbmail-модулей используется dbmailadmin. Установка dbmailadmin тривиальна. Все виртуальные серверы с dbamiladmin собраны в одном OpenVZ-контейнере. Назовем его admin-модуль.Теперь нам нужен единый список доменов и почтовых ящиков, существующих в системе, с указанием на каком именно dbmail-модуле они находятся.
Для этого в admin-модуле я создал базу данных master:
В эту базу данных вот такой скрипт периодически копирует информацию из баз данных dbmail-модулей.
Скрипт конечно не идеальный, но пока устраивает.
На nginx- и postfix- модулях информация берется из локальных slave-копий базы master, таким образом падение admin-модуля не оставит систему без списка обслуживаемых адресов.
postfix-модуль
В нашем случае один postfix-модуль должен уметь осуществлять доставку в любой dbmail-модуль, поэтому конфигурация была немного расширена:В master.cf описаны транспорты:
А вот на основании этих параметров в main.cf postfix и узнает какие домены и ящики он обслуживает и куда именно отдавать принятую почту:
domain.cf
mailbox.cf