Почтовые серверы · 4 min read · Sep 27, 2025

Виртуальные пользователи и домены с Postfix, Courier, MySQL и SquirrelMail (Mandriva 2009.1 x86_64)

Виртуальные пользователи и домены с Postfix, Courier, MySQL и SquirrelMail (Mandriva 2009.1 x86_64)

Версия 1.0
Автор: Фалко Тимме

Этот учебник является авторским правом (c) 2009 года Фалко Тимме. Он основан на учебнике Кристофа Хааса, который вы можете найти по адресу http://workaround.org. Вы можете свободно использовать этот учебник в соответствии с лицензией Creative Commons 2.5 или любой более поздней версией.

Этот документ описывает, как установить почтовый сервер Postfix, основанный на виртуальных пользователях и доменах, т.е. пользователях и доменах, которые находятся в базе данных MySQL. Я также продемонстрирую установку и настройку Courier (Courier-POP3, Courier-IMAP), чтобы Courier мог аутентифицироваться с помощью той же базы данных MySQL, которую использует Postfix.

Получившийся сервер Postfix способен на SMTP-AUTH и TLS и квоты (квота не встроена в Postfix по умолчанию, я покажу, как правильно патчить ваш Postfix). Пароли хранятся в зашифрованном виде в базе данных (большинство документов, которые я нашел, имели дело с паролями в открытом виде, что является риском безопасности). В дополнение к этому, этот учебник охватывает установку Amavisd, SpamAssassin и ClamAV, чтобы электронные письма сканировались на наличие спама и вирусов. Я также покажу, как установить SquirrelMail в качестве веб-интерфейса для почты, чтобы пользователи могли читать и отправлять электронные письма и изменять свои пароли.

Преимущество такой “виртуальной” настройки (виртуальные пользователи и домены в базе данных MySQL) заключается в том, что она гораздо более производительна, чем настройка, основанная на “реальных” системных пользователях. С этой виртуальной настройкой ваш почтовый сервер может обрабатывать тысячи доменов и пользователей. Кроме того, администрировать ее проще, потому что вам нужно иметь дело только с базой данных MySQL, когда вы добавляете новых пользователей/домены или редактируете существующие. Больше никаких команд postmap для создания файлов базы данных, больше никакой перезагрузки Postfix и т.д. Для администрирования базы данных MySQL вы можете использовать веб-инструменты, такие как phpMyAdmin, которые также будут установлены в этом руководстве. Третье преимущество заключается в том, что у пользователей есть адрес электронной почты в качестве имени пользователя (вместо имени пользователя + адреса электронной почты), что легче понять и запомнить.

Этот учебник основан на Mandriva 2009.1 (x86_64). Вы уже должны были настроить базовую систему Mandriva, как описано в главах 1-7 этого учебника: https://www.howtoforge.com/perfect-server-mandriva-2009.1-free-x86_64-ispconfig-2. Пожалуйста, пропустите главу 6.1 Создание скрипта автообновления, потому что если будет обновление Postfix, оно заменит наш собственный собранный Postfix, который мы будем собирать в главе 3!

Этот учебник предназначен как практическое руководство; он не охватывает теоретические основы. Они рассматриваются во многих других документах в сети.

Этот документ предоставляется без каких-либо гарантий! Я хочу сказать, что это не единственный способ настройки такой системы. Существует множество способов достижения этой цели, но это тот путь, который я выбираю. Я не даю никаких гарантий, что это сработает для вас!

Предварительная заметка

Система должна иметь статический IP-адрес. Я использую 192.168.0.100 в качестве своего IP-адреса в этом учебнике и server1.example.com в качестве имени хоста.

1 Установите Apache, MySQL, phpMyAdmin

Сначала обновим нашу базу данных пакетов:

urpmi.update -a

Мы можем установить пакеты одной командой:

urpmi MySQL MySQL-client lib64mysql-devel phpmyadmin db4-devel html2text lib64sasl-devel openssl-devel openldap-devel pcre-devel postgresql8.3-devel rpm-build

2 Установите Courier и saslauthd

Чтобы установить Courier и saslauthd, просто выполните:

urpmi courier-authlib courier-authlib-mysql courier-imap courier-pop cyrus-sasl lib64sasl2 lib64sasl2-devel lib64sasl2-plug-plain lib64sasl2-plug-anonymous lib64sasl2-plug-crammd5 lib64sasl2-plug-digestmd5 lib64sasl2-plug-gssapi lib64sasl2-plug-login

3 Примените патч квоты к Postfix

Нам нужно получить исходный rpm Postfix, патчить его с помощью патча квоты, собрать новый пакет rpm Postfix и установить его.

cd /usr/src  
wget ftp://wftp.tu-chemnitz.de/pub/linux/mandrakelinux/official/2009.1/SRPMS/main/release/postfix-2.5.6-4mdv2009.1.src.rpm  
rpm -ivh postfix-2.5.6-4mdv2009.1.src.rpm

Последняя команда покажет некоторые предупреждения, которые вы можете игнорировать:

warning: user mandrake does not exist - using root  
warning: group mandrake does not exist - using root

Теперь мы патчим исходники Postfix с помощью патча postfix-2.5.6-vda-ng (с http://vda.sourceforge.net/):

cd /root/rpmbuild/SOURCES  
tar xvfz postfix-2.5.6.tar.gz  
wget http://vda.sourceforge.net/VDA/postfix-2.5.6-vda-ng.patch.gz  
gunzip postfix-2.5.6-vda-ng.patch.gz  
cd postfix-2.5.6  
patch -p1 < ../postfix-2.5.6-vda-ng.patch  
cd ..  
mv postfix-2.5.6.tar.gz postfix-2.5.6.tar.gz_orig  
tar -pczf postfix-2.5.6.tar.gz postfix-2.5.6/  
rm -fr postfix-2.5.6/

Затем мы собираем наш новый пакет rpm Postfix с поддержкой квоты и MySQL:

cd /root/rpmbuild/SPECS/  
rpmbuild -ba postfix.spec

Наш пакет rpm Postfix создается в /root/rpmbuild/RPMS/x86_64, поэтому мы переходим туда:

cd /root/rpmbuild/RPMS/x86_64

Команда

ls -l

показывает доступные пакеты:

[root@server1 x86_64]# ls -l  
total 3304  
-rw-r--r-- 1 root root  225752 2009-10-07 15:49 lib64postfix1-2.5.6-4mdv2009.1.x86_64.rpm  
-rw-r--r-- 1 root root 1273469 2009-10-07 15:49 postfix-2.5.6-4mdv2009.1.x86_64.rpm  
-rw-r--r-- 1 root root 1746832 2009-10-07 15:49 postfix-debug-2.5.6-4mdv2009.1.x86_64.rpm  
-rw-r--r-- 1 root root   29372 2009-10-07 15:49 postfix-ldap-2.5.6-4mdv2009.1.x86_64.rpm  
-rw-r--r-- 1 root root   24616 2009-10-07 15:49 postfix-mysql-2.5.6-4mdv2009.1.x86_64.rpm  
-rw-r--r-- 1 root root   24846 2009-10-07 15:49 postfix-pcre-2.5.6-4mdv2009.1.x86_64.rpm  
-rw-r--r-- 1 root root   24691 2009-10-07 15:49 postfix-pgsql-2.5.6-4mdv2009.1.x86_64.rpm  
[root@server1 x86_64]#

Сначала удалите ваш текущий пакет Postfix…

urpme postfix

…затем выберите пакеты postfix и postfix-mysql и установите их следующим образом:

rpm -ivh postfix-2.5.6-4mdv2009.1.x86_64.rpm postfix-mysql-2.5.6-4mdv2009.1.x86_64.rpm

4 Установите пароли MySQL и настройте phpMyAdmin

По умолчанию сетевое взаимодействие не включено в пакете MySQL Mandriva 2009.1, но сетевое взаимодействие требуется для ISPConfig. Мы можем изменить это, закомментировав строку skip-networking в /etc/my.cnf:

vi /etc/my.cnf

| [...] # Не слушать на TCP/IP порту вообще. Это может быть улучшением безопасности, # если все процессы, которые должны подключаться к mysqld, работают на одном хосте. # Все взаимодействие с mysqld должно происходить через Unix-сокеты или именованные каналы. # Обратите внимание, что использование этой опции без включения именованных каналов в Windows # (через опцию "enable-named-pipe") сделает mysqld бесполезным! # #skip-networking [...] |

После этого мы создаем системные ссылки для запуска Apache и MySQL…

chkconfig mysqld on  
chkconfig httpd on

… и запускаем оба сервиса:

/etc/init.d/mysqld start  
/etc/init.d/httpd start

Теперь проверьте, что сетевое взаимодействие включено. Выполните

netstat -tap | grep mysql

Вывод должен выглядеть так:

[root@server1 x86_64]# netstat -tap | grep mysql  
tcp        0      0 *:mysql-im                     *:*                             LISTEN      14395/mysqlmanager  
tcp        0      0 *:mysql                         *:*                             LISTEN      14403/mysqld  
[root@server1 x86_64]#

Затем выполните

mysqladmin -u root password yourrootsqlpassword  
mysqladmin -h server1.example.com -u root password yourrootsqlpassword

чтобы установить пароль для пользователя root (в противном случае любой сможет получить доступ к вашей базе данных MySQL!).

Теперь вы можете направить ваш браузер на http://server1.example.com/phpmyadmin/ или http://192.168.0.100/phpmyadmin/ и войти с именем пользователя root и вашим новым паролем root MySQL.

Share: X/Twitter LinkedIn

Get new posts in your inbox

No spam. Unsubscribe anytime.