Почтовые серверы · 4 min read · Jan 06, 2026
Виртуальные пользователи и домены с Postfix, Courier, MySQL и SquirrelMail (Mandriva 2008.1)
Виртуальные пользователи и домены с Postfix, Courier, MySQL и SquirrelMail (Mandriva 2008.1)
Версия 1.0
Автор: Фалко Тимме
Этот учебник является объектом авторского права (c) 2008 года Фалко Тимме. Он основан на учебнике Кристофа Хааса, который вы можете найти по адресу 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 2008.1 (i386). Вы должны уже настроить базовую систему Mandriva, как описано в главах 1-7 этого учебника: https://www.howtoforge.com/perfect-server-mandriva-2008.1. Пожалуйста, пропустите главу 6.3 Создание скрипта автообновления, потому что если будет обновление Postfix, оно заменит наш собственный собранный Postfix, который мы будем собирать в главе 3!
Этот учебник предназначен как практическое руководство; он не охватывает теоретические основы. Они рассматриваются во многих других документах в сети.
Этот документ предоставляется без каких-либо гарантий! Я хочу сказать, что это не единственный способ настройки такой системы. Существует множество способов достижения этой цели, но это тот путь, который я выбираю. Я не даю никаких гарантий, что это сработает для вас!
Предварительная заметка
Система должна иметь статический IP-адрес. Я использую 192.168.0.100 в качестве моего IP-адреса в этом учебнике и server1.example.com в качестве имени хоста.
1 Установите Apache, MySQL, phpMyAdmin
Все это можно установить одной командой:
urpmi MySQL MySQL-client libmysql15-devel phpmyadmin db4-devel html2text libsasl-devel openssl-devel openldap-devel pcre-devel postgresql-devel rpm-build
2 Установите Courier и saslauthd
Чтобы установить Courier и saslauthd, просто выполните:
urpmi courier-authlib courier-authlib-mysql courier-imap courier-pop cyrus-sasl libsasl2 libsasl2-devel libsasl2-plug-plain libsasl2-plug-anonymous libsasl2-plug-crammd5 libsasl2-plug-digestmd5 libsasl2-plug-gssapi libsasl2-plug-login
3 Примените патч квоты к Postfix
Нам нужно получить исходный rpm Postfix, патчить его патчем квоты, собрать новый пакет rpm Postfix и установить его.
cd /usr/src mkdir rpm wget ftp://wftp.tu-chemnitz.de/pub/linux/mandrakelinux/official/2008.1/SRPMS/main/release/postfix-2.5.1-2mdv2008.1.src.rpm rpm -ivh postfix-2.5.1-2mdv2008.1.src.rpm
Последняя команда покажет некоторые предупреждения, которые вы можете игнорировать:
warning: user mandrake does not exist - using root warning: group mandrake does not exist - using root
Теперь мы патчим исходники Postfix с помощью патча postfix-2.5.1-vda-ng (с http://vda.sourceforge.net/):
cd /usr/src/rpm/SOURCES tar xvfz postfix-2.5.1.tar.gz wget http://vda.sourceforge.net/VDA/postfix-2.5.1-vda-ng.patch.gz gunzip postfix-2.5.1-vda-ng.patch.gz cd postfix-2.5.1 patch -p1 < ../postfix-2.5.1-vda-ng.patch cd .. mv postfix-2.5.1.tar.gz postfix-2.5.1.tar.gz_orig tar -pczf postfix-2.5.1.tar.gz postfix-2.5.1/ rm -fr postfix-2.5.1/
Затем мы собираем наш новый пакет rpm Postfix с поддержкой квоты и MySQL:
cd /usr/src/rpm/SPECS/ rpmbuild -ba postfix.spec
Наш пакет rpm Postfix создается в /usr/src/rpm/RPMS/i586, поэтому мы переходим туда:
cd /usr/src/rpm/RPMS/i586
Команда
ls -l
показывает доступные пакеты:
[root@server1 i586]# ls -l total 4712 -rw-r--r-- 1 root root 275303 2008-04-11 16:22 libpostfix1-2.5.1-2mdv2008.1.i586.rpm -rw-r--r-- 1 root root 1822571 2008-04-11 16:22 postfix-2.5.1-2mdv2008.1.i586.rpm -rw-r--r-- 1 root root 2608569 2008-04-11 16:22 postfix-debug-2.5.1-2mdv2008.1.i586.rpm -rw-r--r-- 1 root root 27341 2008-04-11 16:22 postfix-ldap-2.5.1-2mdv2008.1.i586.rpm -rw-r--r-- 1 root root 22208 2008-04-11 16:22 postfix-mysql-2.5.1-2mdv2008.1.i586.rpm -rw-r--r-- 1 root root 22150 2008-04-11 16:22 postfix-pcre-2.5.1-2mdv2008.1.i586.rpm -rw-r--r-- 1 root root 22266 2008-04-11 16:22 postfix-pgsql-2.5.1-2mdv2008.1.i586.rpm [root@server1 i586]#
Сначала удалите ваш текущий пакет Postfix…
urpme postfix
…затем выберите пакеты postfix и postfix-mysql и установите их следующим образом:
rpm -ivh postfix-2.5.1-2mdv2008.1.i586.rpm postfix-mysql-2.5.1-2mdv2008.1.i586.rpm
4 Установите пароли MySQL и настройте phpMyAdmin
По умолчанию в пакете MySQL Mandriva 2008.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 i586]# netstat -tap | grep mysql tcp 0 0 *:mysql-im *:* LISTEN 13537/mysqlmanager tcp 0 0 *:mysql *:* LISTEN 13545/mysqld [root@server1 i586]#
Затем выполните
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.
Get new posts in your inbox
No spam. Unsubscribe anytime.