![](https://static.tildacdn.com/tild6133-3263-4037-b664-653665666136/_.png)
dbmail-модуль
Установка dbmail достаточно тривиальна и подробно описана в wiki, я позволю себе краткто изложить ход установки.Для работы dbmail требуется библиотека GMime версии 2.4.x, она есть в репозитории epel, в других репозиториях версии этой библиотеки были 2.5 и 2.6. К сожалению dbmail не умеет с ними работать.
![](https://static.tildacdn.com/tild3830-3337-4933-a366-393931653165/1.png)
Конфигурация dbmail находиться в файле /etc/dbmail.conf.
Заносим туда логины/пароли на доступ к mysql-серверу, параметр table_prefix лучше не менять, SSL/TLS будет обрабатывать nginx, и еще я поменял кодировку писем по умолчанию.
![](https://static.tildacdn.com/tild3932-3934-4338-b038-313861353936/2.png)
Теперь проведем небольшой тюнинг mysql.
Добавим в my.cnf следующие параметры:
![](https://static.tildacdn.com/tild3638-3164-4166-b265-393830653033/3.png)
Cоздаем базу данных dbmail и заливаем в нее структуру из файла /usr/share/doc/dbmail-3.0.2/sql/mysql/create_tables.mysql
dbmail-модуль готов, осталось запустить сервисы
![](https://static.tildacdn.com/tild3932-6239-4463-a232-653036313736/4.png)
admin-модуль
На текущий момент для администрирования каждого из dbmail-модулей используется dbmailadmin. Установка dbmailadmin тривиальна. Все виртуальные серверы с dbamiladmin собраны в одном OpenVZ-контейнере. Назовем его admin-модуль.Теперь нам нужен единый список доменов и почтовых ящиков, существующих в системе, с указанием на каком именно dbmail-модуле они находятся.
Для этого в admin-модуле я создал базу данных master:
![](https://static.tildacdn.com/tild6665-6538-4362-b538-343362393039/5.png)
В эту базу данных вот такой скрипт периодически копирует информацию из баз данных dbmail-модулей.
Скрипт конечно не идеальный, но пока устраивает.
На nginx- и postfix- модулях информация берется из локальных slave-копий базы master, таким образом падение admin-модуля не оставит систему без списка обслуживаемых адресов.
postfix-модуль
В нашем случае один postfix-модуль должен уметь осуществлять доставку в любой dbmail-модуль, поэтому конфигурация была немного расширена:В master.cf описаны транспорты:
![](https://static.tildacdn.com/tild3337-3165-4136-a362-613262613831/6.png)
А вот на основании этих параметров в main.cf postfix и узнает какие домены и ящики он обслуживает и куда именно отдавать принятую почту:
![](https://static.tildacdn.com/tild6264-3934-4339-a631-323834303263/7.png)
domain.cf
![](https://static.tildacdn.com/tild3430-6566-4335-a461-383633636530/8.png)
mailbox.cf
![](https://static.tildacdn.com/tild6135-6134-4435-b463-616664343934/9.png)