Почтовый сервер · 3 min read · Oct 05, 2025
Полное решение почтового сервера с виртуальными доменами и пользователями (Debian Etch, Postfix, Mysql, Dovecot, DSpam, ClamAV, Postgrey, RBL) - Страница 6
V. Почтовый сервер доставки
Почтовый сервер доставки — это сервер, который проверяет наличие СПАМА с помощью байесовского алгоритма через сервис, известный как DSPAM. DSPAM невероятно мощный и поставляется с хорошим объемом документации по его различным настройкам. Наша конкретная настройка довольно проста. MX-1 и MX-2 доставляют почту на postman.internal.example.com через LMTP. LMTP — это Протокол локальной передачи почты, вы можете найти некоторую базовую информацию здесь. DSPAM получает почту, проверяет ее с помощью своих алгоритмов и передает почту ClamAV для обнаружения вирусов. Если все в порядке, почта затем передается Dovecot для окончательной доставки.
Мы рассмотрим разделы по одному. Итак, давайте начнем на postman.internal.example.com.
A. Настройки NFS
Поскольку Dovecot будет доставлять нашу почту, нам нужно будет смонтировать каталог vmail на сервере доставки почты.
Создайте пользователя и каталог vmail следующим образом:
# useradd -r -u 150 -g mail -d /var/vmail -s /sbin/nologin -c "Виртуальный почтовый ящик" vmail
# mkdir /var/vmail
# chmod 770 /var/vmail/
# chown vmail:mail /var/vmail/Теперь нам нужно установить инструменты клиента NFS:
# apt-get install nfs-common portmapЗатем каталог нужно смонтировать на NFS-ресурс. Для простого теста выполните следующее:
# mount files-1.internal.example.com:/vmail /vmailТеперь у вас должен быть доступ к ресурсу /vmail от files-1. Попробуйте создать файл:
# cd /vmail
# touch tmpНа этот раз это должно сработать (postman имеет доступ на чтение и запись к NFS-монтажу… MX-серверы имели только доступ на чтение).
Если все работает, выполните размонтирование NFS:
# cd /
umount /vmailА затем сделайте монтаж постоянным, добавив следующее в ваш /etc/fstab:
[...]
files-1.internal.example.com:/vmail /vmail nfs rw,rsize=4096,wsize=4096,hard,intr,tcp,noatime,nodev,async 0 0Смонтируйте файловую систему в последний раз:
# mount /vmail… и вы готовы к работе!
B. Установка DSPAM
Снова, debian делает это невероятно просто:
# apt-get install dspam dspam-doc libdspam7-drv-mysqlВас спросят, хотите ли вы настроить базу данных для libdspam7-drv-mysql с помощью dbconfig-common, выберите ‘Нет’. Честно говоря, если вы хотите использовать dbconfig, вас никто не останавливает, но для целей документации я собираюсь изложить настройки.
C. Настройка базы данных MySQL
Вам нужно будет настроить некоторые таблицы в базе данных MySQL, поэтому войдите на sql-1.internal.example.com и запустите клиент mysql от имени root:
# mysql -u root -pЗатем создайте новую базу данных DSPAM и пользователя:
MYSQL> CREATE DATABASE dspam_db;
MYSQL> GRANT ALL PRIVILEGES ON dspam_db.* TO 'dspam_user'@'postman.internal.example.com' IDENTIFIED BY 'dspam_user_password';ПРИМЕЧАНИЕ: Измените dspam_user_password на надежный пароль!
D. Настройка DSPAM для MySQL
Теперь, когда MySQL имеет базу данных DSPAM и учетную запись пользователя, мы можем импортировать таблицы из драйвера MySQL DSPAM. Они хранятся в /usr/share/doc/libdspam7-drv-mysql на сервере доставки почты (postman.internal.example.com). Существует две разные версии схем, одна создана для скорости, другая для экономии места на жестком диске. Мы будем использовать ту, что для скорости, но вы можете выбрать любую, которую хотите. Помните, читайте документацию, именно для этого она и существует!
Установите основную схему:
# mysql -u dspam_user -h sql-1.internal.example.com -p dspam_db < /usr/share/doc/libdspam7-drv-mysql/mysql_objects-speed.sqlЕсли вы получите ошибки разрешения, вернитесь на сервер mysql и проверьте, правильно ли вы создали пользователя.
Если все прошло хорошо, нам также нужно будет ввести таблицы для виртуальных пользователей:
# mysql -u dspam_user -h sql-1.internal.example.com -p dspam_db < /usr/share/doc/libdspam7-drv-mysql/virtual_users.sqlТеперь нам просто нужно сказать DSPAM, как общаться с нашей базой данных MySQL. Это делается через файл /etc/dspam/dspam.d/mysql.conf. Отредактируйте его соответственно:
[...]
MySQLServer sql-1.internal.example.com
MySQLPort 3306
MySQLUser dspam_user
MySQLPass dspam_user_password
MysqLDb dspam_db
[...]
MySQLVirtualTable dspam_virtual_uids
MySQLVirtualUIDField uid
MySQLVirtualUsernameField username
[...] Теперь DSPAM будет хранить всю свою информацию в базе данных MySQL.
ПРИМЕЧАНИЕ: Это временная настройка, просто потому что мы не закончили установку виртуального пользователя DSPAM перед написанием этого руководства. В идеале, вы бы хотели, чтобы DSPAM смотрел на ту же таблицу виртуальных пользователей, что и Postfix, чтобы вся информация о токенах хранилась правильно. Я обновлю руководство, как только мы завершим этот переход.
Get new posts in your inbox
No spam. Unsubscribe anytime.