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

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

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

Версия 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 для создания файлов db, больше никаких перезагрузок Postfix и т.д. Для администрирования базы данных MySQL вы можете использовать веб-инструменты, такие как phpMyAdmin, которые также будут установлены в этом руководстве. Третье преимущество заключается в том, что у пользователей есть адрес электронной почты в качестве имени пользователя (вместо имени пользователя + адреса электронной почты), что проще для понимания и запоминания.

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

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

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

Этот учебник основан на Debian Lenny, поэтому вам следует установить базовую установку сервера Debian Lenny, прежде чем продолжить с этим учебником (например, как показано в главах 1-7 этого учебника: Идеальный сервер - Debian Lenny (Debian 5.0) [ISPConfig 2]). Система должна иметь статический IP-адрес. Я использую 192.168.0.100 в этом учебнике и server1.example.com в качестве имени хоста.

2 Установите Postfix, Courier, Saslauthd, MySQL, phpMyAdmin

Чтобы установить Postfix, Courier, Saslauthd, MySQL и phpMyAdmin, просто выполните

apt-get install postfix postfix-mysql postfix-doc mysql-client mysql-server courier-authdaemon courier-authlib-mysql courier-pop courier-pop-ssl courier-imap courier-imap-ssl postfix-tls libsasl2-2 libsasl2-modules libsasl2-modules-sql sasl2-bin libpam-mysql openssl phpmyadmin apache2 libapache2-mod-php5 php5 php5-mysql libpam-smbpass

Вам будет задано несколько вопросов:

Новый пароль для пользователя MySQL “root”: <– вашпарольsqlroot
Повторите пароль для пользователя MySQL “root”: <– вашпарольsqlroot
Создать каталоги для веб-администрирования? <– Нет
Общий тип конфигурации почты: <– Интернет-сайт
Системное имя почты: <– server1.example.com
Требуется SSL-сертификат <– Ок
Рабочая группа/Имя домена: <– WORKGROUP
Изменить smb.conf, чтобы использовать настройки WINS от DHCP? <– Нет
Веб-сервер для автоматической перенастройки: <– apache2

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

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

apt-get build-dep postfix
cd /usr/src  
apt-get source postfix

(Убедитесь, что вы используете правильную версию Postfix в следующих командах. У меня установлена версия Postfix 2.5.5. Вы можете узнать вашу версию Postfix, выполнив

postconf -d | grep mail_version

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

server1:/usr/src# postconf -d | grep mail_version  
mail_version = 2.5.5  
milter_macro_v = $mail_name $mail_version  
server1:/usr/src#

)

wget http://vda.sourceforge.net/VDA/postfix-2.5.5-vda-ng.patch.gz  
gunzip postfix-2.5.5-vda-ng.patch.gz  
cd postfix-2.5.5  
patch -p1 < ../postfix-2.5.5-vda-ng.patch  
dpkg-buildpackage

Вы можете увидеть предупреждение, подобное этому, в конце команды dpkg-buildpackage:

dpkg-buildpackage: warning: Failed to sign .dsc and .changes file

Вы можете игнорировать это сообщение.

Теперь мы поднимаемся на один уровень вверх, там, где были созданы новые пакеты .deb:

cd ..

Команда

ls -l

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

server1:/usr/src# ls -l  
total 5880  
drwxr-xr-x 19 root root    4096 2009-02-20 14:15 postfix-2.5.5  
-rw-r--r--  1 root src   236910 2009-02-20 14:12 postfix_2.5.5-1.1.diff.gz  
-rw-r--r--  1 root src     1178 2009-02-20 14:12 postfix_2.5.5-1.1.dsc  
-rw-r--r--  1 root src     3695 2009-02-20 14:17 postfix_2.5.5-1.1_i386.changes  
-rw-r--r--  1 root src  1233138 2009-02-20 14:17 postfix_2.5.5-1.1_i386.deb  
-rw-r--r--  1 root src  3157877 2009-09-02 23:18 postfix_2.5.5.orig.tar.gz  
-rw-r--r--  1 root src    58389 2008-09-06 05:02 postfix-2.5.5-vda-ng.patch  
-rw-r--r--  1 root src    41572 2009-02-20 14:17 postfix-cdb_2.5.5-1.1_i386.deb  
-rw-r--r--  1 root src   141394 2009-02-20 14:17 postfix-dev_2.5.5-1.1_all.deb  
-rw-r--r--  1 root src   915978 2009-02-20 14:17 postfix-doc_2.5.5-1.1_all.deb  
-rw-r--r--  1 root src    48934 2009-02-20 14:17 postfix-ldap_2.5.5-1.1_i386.deb  
-rw-r--r--  1 root src    43512 2009-02-20 14:17 postfix-mysql_2.5.5-1.1_i386.deb  
-rw-r--r--  1 root src    43448 2009-02-20 14:17 postfix-pcre_2.5.5-1.1_i386.deb  
-rw-r--r--  1 root src    43586 2009-02-20 14:17 postfix-pgsql_2.5.5-1.1_i386.deb  
server1:/usr/src#

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

dpkg -i postfix_2.5.5-1.1_i386.deb postfix-mysql_2.5.5-1.1_i386.deb

4 Создайте базу данных MySQL для Postfix/Courier

Теперь мы создаем базу данных с именем mail:

mysqladmin -u root -p create mail

Затем мы переходим в оболочку MySQL:

mysql -u root -p

В оболочке MySQL мы создаем пользователя mail_admin с паролем mail_admin_password (замените его на свой собственный пароль), который имеет привилегии SELECT, INSERT, UPDATE, DELETE на базе данных mail. Этот пользователь будет использоваться Postfix и Courier для подключения к базе данных mail:

GRANT SELECT, INSERT, UPDATE, DELETE ON mail.* TO 'mail_admin'@'localhost' IDENTIFIED BY 'mail_admin_password';  
GRANT SELECT, INSERT, UPDATE, DELETE ON mail.* TO 'mail_admin'@'localhost.localdomain' IDENTIFIED BY 'mail_admin_password';  
FLUSH PRIVILEGES;

Все еще в оболочке MySQL мы создаем таблицы, необходимые для Postfix и Courier:

USE mail;
CREATE TABLE domains (  
domain varchar(50) NOT NULL,  
PRIMARY KEY (domain) )  
TYPE=MyISAM;
CREATE TABLE forwardings (  
source varchar(80) NOT NULL,  
destination TEXT NOT NULL,  
PRIMARY KEY (source) )  
TYPE=MyISAM;
CREATE TABLE users (  
email varchar(80) NOT NULL,  
password varchar(20) NOT NULL,  
quota bigint(20) DEFAULT '10485760',  
PRIMARY KEY (email)  
) TYPE=MyISAM;
CREATE TABLE transport (  
domain varchar(128) NOT NULL default '',  
transport varchar(128) NOT NULL default '',  
UNIQUE KEY domain (domain)  
) TYPE=MyISAM;
quit;

Как вы могли заметить, с помощью команды quit; мы вышли из оболочки MySQL и вернулись в оболочку Linux.

Таблица domains будет хранить каждый виртуальный домен, для которого Postfix должен получать электронные письма (например, example.com).

domain
example.com

Таблица forwardings предназначена для алиасирования одного адреса электронной почты на другой, например, пересылки электронных писем с [email protected] на [email protected].

sourcedestination
[email protected][email protected]

Таблица users хранит всех виртуальных пользователей (т.е. адреса электронной почты, потому что адрес электронной почты и имя пользователя совпадают) и пароли (в зашифрованном виде!) и значение квоты для каждого почтового ящика (в этом примере значение по умолчанию составляет 10485760 байт, что означает 10 МБ).

emailpasswordquota
[email protected]No9.E4skNvGa. (“секрет” в зашифрованном виде)10485760

Таблица transport является необязательной, она предназначена для опытных пользователей. Она позволяет пересылать письма для отдельных пользователей, целых доменов или всех писем на другой сервер. Например,

domaintransport
example.comsmtp:[1.2.3.4]

перенаправит все электронные письма для example.com через протокол smtp на сервер с IP-адресом 1.2.3.4 (квадратные скобки [] означают “не выполнять поиск записи MX DNS” (что имеет смысл для IP-адресов…). Если вы используете полное доменное имя (FQDN), то квадратные скобки не используются.).

Кстати, (я предполагаю, что IP-адрес вашей почтовой системы сервера - 192.168.0.100) вы можете получить доступ к phpMyAdmin по адресу http://192.168.0.100/phpmyadmin/ в браузере и войти как mail_admin. Затем вы можете просмотреть базу данных. Позже вы можете использовать phpMyAdmin для администрирования вашего почтового сервера.

Share: X/Twitter LinkedIn

Get new posts in your inbox

No spam. Unsubscribe anytime.