Установка почтовой системы на базе Postfix и DBMail
1. Установка DBMail
DBMail – это набор программ позволяющих получать доступ к электронной почте через протоколы IMAP4 и POP3. Хранится почта в СУБД, что положительно сказывается на общей безопасности системы. В качестве СУБД будем использовать PostgreSQL, хотя есть еще варианты – MySQL и SQLite. Выбор пал на PostgreSQL из-за того, что новая версия 1С 8.1 также работает с этой СУБД. Т.е. упрощаем общее администрирование системы.
Кроме того, несомненным плюсом использования DBMail является простое архивирование и восстановление копии почтовой базы, используя стандартные механизмы СУБД. Почтовая база – просто набор таблиц в хранилище.
Собираем все под Fedora Core 6. Собираем из исходников, так как готового rpm нет. Может быть появится для Fedora 7, не знаю, в анонсах ничего нет. При рутинных операциях копирования, переименовывания и т.п. рекомендую пользоваться программой Midnight Commander (mc) аналогичной Far или Norton Commander (для ms windows).
При сборке надо учесть, что необходимо наличие следующих библиотек в системе – gmime-devel, glib2-devel, openldap-devel, libsieve-devel. Проверить их наличие можно командой:
rpm –q gmime-devel (glib2-devel, openldap-devel, libsieve-devel)
В ответ команда должна выдать наименование библиотеки с ее версией, например,
openldap-devel-2.3.27-4
это значит, что все нормально – пакет установлен. В случае его отсутствия его надо установить командой:
yum install openldap-devel (gmime-devel, glib2-devel, libsieve-devel)
Скачиваем последнюю версию с сайта разработчика
www.dbmail.org . На момент написания статьи последней была версия 2.2.2. Распаковываем в свой домашний каталог.
Создаем пользователя dbmail и группу dbmail как системные учетные записи:
groupadd –r dbmail
useradd –g dbmail –c DBMail –s /sbin/nologin –d / –r dbmail
от их имени будет работать DBMail. Запускаются процессы от имени root, а после запуска сбрасывают привилегии до этих пользователей.
Начинаем компиляцию. Переходим в каталог с исходными текстами DBMail:
./configure –prefix=/usr –with-pgsql –with-ldap --with-sieve
Т.е. говорим, что компилировать надо с поддержкой PostgreSQL, OpenLDAP и Sieve (языка описания действий над почтовыми сообщениями на стороне сервера). Изменяем префикс размещения исполняемых файлов (по умолчанию там стоит /usr/local).
Затем команды:
make all
make install
make clean
После чего, компиляцию можно считать успешной. Осталось скопировать файл dbmail.conf в каталог /etc, а файл dbmail.schema в /etc/openldap/schema.
Исправляем файл /etc/openldap/slapd.conf, добавляя строку
include /etc/openldap/schema/dbmail.schema
в область, где уже стоят подобные записи (обычно в начале конфигурационного файла), но только после них, последней.
Редактируем файл /etc/dbmail.conf.
DRIVER = pgsql
AUTHDRIVER = ldap
HOST = localhost (или адрес машины, где установлена СУБД, можно как IP-адрес, так и DNS-имя машины)
USER = dbmail
PASS = dbmail (или тот, который установили)
DB = dbmail
SENDMAIL = /usr/sbin/sendmail (лучше указать /usr/sbin/sendmail.postfix, так как /usr/sbin/sendmail – лишь ссылка на ссылку /etc/alternatives/mta, которая указывает на почтовик, известный системе; надо быть уверенным, что последняя ссылка указывает туда, куда надо; утилита system-switch-mail для Gnome может помочь, или ее консольный аналог system-switch-mail-nox)
EFFECTIVE_USER = dbmail
EFFECTIVE_GROUP = dbmail
BINDIP = * (ко всем доступным локальным интерфейсам, можно перечислить необходимые через пробел или запятую)
MAXCONNECT = 100 (большее значение на слабых серверах может полностью грузить систему, если не будет хватать, то всегда потом можно увеличить)
MAX_ERRORS = 50 (перезапуск процесса, если процесс допустил указанное число ошибок соединения)
resolve_ip = yes
[LDAP]
PORT = 389
VERSION = 3
HOSTNAME = localhost (или адрес машины, на которой запущен LDAP-сервер)
BASE_DN = ou=Users,dc=test,dc=com,dc=ru (здесь надо указать контекст, где расположена информация о ваших пользователях)
BIND_DN =
BIND_PW = (соединяемся анонимно с сервером)
SCOPE = SubTree
USER_OBJECTCLASS = top,account,dbmailUser (фильтр поиска для объектов)
FORW_OBJECTCLASS = top,account,dbmailForwardingAddress (тот же фильтр, но для объектов перенаправления почты)
Остальные поля остаются без изменений.
Собственно, все. Можно запускать dbmail-imapd и наслаждаться. Но это неудобно. Поэтому создадим файл запуска сервиса. Переходим в директорию исходных тектов DBMail. Затем оттуда в /contrib/startup-scripts/redhat. Копируем файлы dbmail-imapd.init и dbmail-lmtpd.init в /etc/rc.d/init/d. Переименовываем их в dbmail-imapd и dbmail-lmtp соответственно.
Теперь необходимо прописать новый сервис.
system-config-service
Далее через пункт меню Действия добавляем два новых сервиса по именам файлов (dbmail-imapd и dbmail-lmtpd). Затем через меню Изменить Уровень задаем уровни запуска системы и проставляем отметки, чтобы эти два сервиса запускались. Все достаточно просто. Запуск должен производиться на уровнях 3, 4 и 5.
Можно прописать все тоже самое через консоль:
chkconfig –add dbmail-imapd
chkconfig –level 3 dbmail-imapd on
chkconfig –level 4 dbmail-imapd on
chkconfig –level 5 dbmail-imapd on
chkconfig –add dbmail-lmtpd
chkconfig –level 3 dbmail-lmtpd on
chkconfig –level 4 dbmail-lmtpd on
chkconfig –level 5 dbmail-lmtpd on
Все. Можно управлять DBMail через стандартные механизмы:
service dbmail-imapd start
service dbmail-lmtpd start
Ну и после перезагрузки сервера данные службы будут автоматически подгружаться.