Почтовый сервер · 5 min read · Nov 09, 2025
Виртуальные пользователи и домены с Postfix, Courier и MySQL (Fedora Core 5)
Виртуальные пользователи и домены с Postfix, Courier и MySQL (Fedora Core 5)
Версия 1.0
Автор: Фалько Тимме
Этот учебник является объектом авторского права (c) 2006 года Фалько Тимме. Он основан на учебнике Кристофа Хааса, который вы можете найти на 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, чтобы электронные письма сканировались на наличие спама и вирусов.
Преимущество такой “виртуальной” настройки (виртуальные пользователи и домены в базе данных MySQL) заключается в том, что она гораздо более производительна, чем настройка, основанная на “реальных” системных пользователях. С этой виртуальной настройкой ваш почтовый сервер может обрабатывать тысячи доменов и пользователей. Кроме того, администрировать это проще, потому что вам нужно иметь дело только с базой данных MySQL, когда вы добавляете новых пользователей/домены или редактируете существующих. Больше никаких команд postmap для создания db файлов, больше никакой перезагрузки Postfix и т.д. Для администрирования базы данных MySQL вы можете использовать веб-инструменты, такие как phpMyAdmin, которые также будут установлены в этом руководстве. Третье преимущество заключается в том, что у пользователей есть адрес электронной почты в качестве имени пользователя (вместо имени пользователя + адреса электронной почты), что проще понять и запомнить.
Этот учебник основан на Fedora Core 5 (i386). Вы уже должны были настроить базовую систему Fedora, как описано здесь (для системы x86_64, но процедура для систем i386 такая же): https://www.howtoforge.com/perfect_setup_fedora_core_5 и https://www.howtoforge.com/perfect_setup_fedora_core_5_p2. Кроме того, вы должны убедиться, что брандмауэр выключен (по крайней мере, на данный момент) и что SELinux отключен (это важно!), как показано на https://www.howtoforge.com/perfect_setup_fedora_core_5_p3.
Это руководство предназначено как практическое руководство; оно не охватывает теоретические основы. Они рассматриваются во многих других документах в сети.
Этот документ предоставляется без каких-либо гарантий! Я хочу сказать, что это не единственный способ настройки такой системы. Существует множество способов достижения этой цели, но это тот путь, который я выбираю. Я не даю никаких гарантий, что это сработает для вас!
1 Измените /etc/hosts
Наше имя хоста в этом примере server1.example.com, и у него есть IP-адрес 192.168.0.100, поэтому мы изменяем /etc/hosts следующим образом:
vi /etc/hosts| # Не удаляйте следующую строку, иначе различные программы # которые требуют сетевой функциональности, будут работать некорректно. 127.0.0.1 localhost.localdomain localhost 192.168.0.100 server1.example.com server1 |
2 Настройте дополнительный репозиторий для пакетов Fedora
Некоторые из пакетов, которые мы должны установить (такие как courier-imap), не включены в официальные репозитории Fedora, поэтому мы должны добавить другой репозиторий в yum:
rpm -ivh http://www.enlartenment.com/packages/fedora/5/i386/enlartenment-release-1.1-2.fc5.mf.noarch.rpmПосле этого мы должны установить enabled в 1 в /etc/yum.repos.d/enlartenment.repo:
vi /etc/yum.repos.d/enlartenment.repo| [enlartenment] name=Enlartenment Repository для $releasever - $basearch baseurl=http://www.enlartenment.com/packages/fedora/$releasever/$basearch/ gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-enlartenment enabled=1 gpgcheck=1 [enlartenment-sources] name=Enlartenment Repository для $releasever - Sources baseurl=http://www.enlartenment.com/packages/fedora/$releasever/SRPMS/ gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-enlartenment enabled=1 gpgcheck=1 |
Далее, мы импортируем GPG-ключ этого репозитория:
rpm --import http://www.enlartenment.com/RPM-GPG-KEY.mf3 Установите Postfix, Courier, Saslauthd, MySQL, phpMyAdmin
Все это можно установить одной командой:
yum install ntp httpd mysql-server php php-mysql php-mbstring rpm-build gcc mysql-devel openssl-devel cyrus-sasl-devel pkgconfig zlib-devel maildrop courier-imap courier-authlib-mysql phpmyadmin pcre-devel openldap-develКогда вы увидите это:
warning: rpmts_HdrFromFdno: Заголовок V3 DSA подписи: NOKEY, ключ ID 4f2a6fd2
Публичный ключ для ntp-4.2.0.a.20050816-11.FC5.i386.rpm не установлен
Получение GPG ключа из file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora
Импорт GPG ключа 0x4F2A6FD2 "Fedora Project <[email protected]>"
Это нормально [y/N]:пожалуйста, ответьте y.
4 Примените патч квоты к Postfix
Нам нужно получить исходный rpm Postfix, патчить его с помощью патча квоты, собрать новый пакет rpm Postfix и установить его.
cd /usr/src
wget http://ftp-stud.fht-esslingen.de/pub/Mirrors/fedora/linux/core/5/source/SRPMS/postfix-2.2.8-1.2.src.rpm
rpm -ivh postfix-2.2.8-1.2.src.rpm
cd /usr/src/redhat/SOURCES
wget http://web.onda.com.br/nadal/postfix/VDA/postfix-2.2.8-vda.patch.gz
gunzip postfix-2.2.8-vda.patch.gz
cd /usr/src/redhat/SPECS/Теперь мы должны отредактировать файл postfix.spec:
vi postfix.specИзмените %define MYSQL 0 на %define MYSQL 1, добавьте Patch0: postfix-2.2.8-vda.patch в раздел # Patches и, наконец, добавьте %patch0 -p1 -b .vda в раздел %setup -q:
| [...] %define MYSQL 1 [...] # Патчи Patch0: postfix-2.2.8-vda.patch Patch1: postfix-2.1.1-config.patch Patch3: postfix-alternatives.patch Patch4: postfix-hostname-fqdn.patch Patch6: postfix-2.1.1-obsolete.patch Patch7: postfix-2.1.5-aliases.patch Patch8: postfix-large-fs.patch Patch9: postfix-2.2.5-cyrus.patch [...] %setup -q # Применить обязательные патчи %patch0 -p1 -b .vda %patch1 -p1 -b .config %patch3 -p1 -b .alternatives %patch4 -p1 -b .postfix-hostname-fqdn %patch6 -p1 -b .obsolete %patch7 -p1 -b .aliases %patch8 -p1 -b .large-fs %patch9 -p1 -b .cyrus [...] |
Затем мы собираем наш новый пакет rpm Postfix с поддержкой квоты и MySQL:
rpmbuild -ba postfix.specВы увидите много предупреждений, таких как эти, которые вы можете игнорировать:
msg.h:12:1: warning: "/*" within comment
msg.h:14:1: warning: "/*" within comment
msg.h:33:1: warning: "/*" within comment
msg.h:34:1: warning: "/*" within comment
msg.h:35:1: warning: "/*" within comment
msg.h:36:1: warning: "/*" within commentНаш пакет rpm Postfix создается в /usr/src/redhat/RPMS/i386, поэтому мы переходим туда и устанавливаем его:
cd /usr/src/redhat/RPMS/i386
rpm -ivh postfix-2.2.8-1.2.i386.rpm(Если у вас возникли проблемы с созданием пакета rpm Postfix, вы можете скачать мой отсюда.)
5 Установите пароли MySQL и настройте phpMyAdmin
Запустите MySQL:
chkconfig --levels 235 mysqld on
/etc/init.d/mysqld startЗатем установите пароли для учетной записи root MySQL:
mysqladmin -u root password yourrootsqlpassword
mysqladmin -h server1.example.com -u root password yourrootsqlpasswordТеперь мы настраиваем phpMyAdmin. Создайте /usr/share/phpmyadmin/config.inc.php:
vi /usr/share/phpmyadmin/config.inc.php| |
Затем мы изменяем конфигурацию Apache, чтобы phpMyAdmin разрешал подключения не только с localhost:
vi /etc/httpd/conf.d/phpmyadmin.conf| Alias /phpmyadmin/ "/usr/share/phpmyadmin/" # |
Затем мы создаем системные ссылки для запуска Apache и запускаем его:
chkconfig --levels 235 httpd on
/etc/init.d/httpd startТеперь вы можете направить ваш браузер на http://server1.example.com/phpmyadmin/ и войти с именем пользователя root и вашим новым паролем root MySQL.
Get new posts in your inbox
No spam. Unsubscribe anytime.