Почтовый сервер · 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, чтобы вся информация о токенах хранилась правильно. Я обновлю руководство, как только мы завершим этот переход.

Share: X/Twitter LinkedIn

Get new posts in your inbox

No spam. Unsubscribe anytime.