Гид по технологиям

Установка ASSP на минимальной CentOS 7

• 6 min read • Инструкции • Обновлено 26 Nov 2025
Установка ASSP на CentOS 7
Установка ASSP на CentOS 7

Введение

Эта инструкция показывает шаги установки ASSP на минимальную CentOS 7. Установка самой CentOS и настройка почтового сервера не описаны. Образ CentOS-7.0-1406-x86_64-Minimal.iso подходит для данной сборки. Если у вас DVD-образ, выберите Minimal Install и продолжите.

Важно: инструкция предполагает root-доступ и базовые навыки работы с командной строкой.

Требования и уточнения

  • OS: CentOS 7 (минимальная установка)
  • Один сетевой интерфейс (в примерах eth0)
  • Доступ к интернету для загрузки пакетов
  • Имеющийся почтовый сервер (postfix/exim/sendmail) — далее показан пример с postfix

Отключение NetworkManager и FirewallD, включение network

После перезагрузки отключите NetworkManager и firewalld и включите системный network-сервис:

systemctl disable NetworkManager  
systemctl stop NetworkManager
systemctl disable firewalld  
systemctl stop firewalld
systemctl enable network  
systemctl start network

Редактируйте файл конфигурации сетевой карты (предполагается один сетевой интерфейс):

vi /etc/sysconfig/network-scripts/ifcfg-eth0

Замените строки вида:

IPADDR0=a.b.c.d -> IPADDR=a.b.c.d

PREFIX0=xx -> PREFIX=xx

GATEWAY0=aa.bb.cc.dd -> GATEWAY=aa.bb.cc.dd

Обновление системы и установка основных утилит

yum -y update  
reboot  
yum install wget perl

Добавление сторонних репозиториев (epel, repoforge, remi)

Скачайте RPM-пакеты репозиториев:

wget http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el7.rf.x86_64.rpm  
wget http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-5.noarch.rpm  
wget http://rpms.famillecollet.com/enterprise/remi-release-7.rpm

Установите локально:

yum localinstall rpmforge-release-0.5.3-1.el7.rf.x86_64.rpm epel-release-7-5.noarch.rpm remi-release-7.rpm

Установка shorewall (менеджер iptables)

yum install shorewall

Ниже — минимальные файлы конфигурации, чтобы запустить firewall. Для продакшена потребуется детальная настройка. Дополнительную информацию смотрите на http://shorewall.net

Интерфейсы:

vi /etc/shorewall/interfaces
net eth0

Политики:

vi /etc/shorewall/policy
$FW net ACCEPT  
net all DROP  
all all REJECT

Правила:

vi /etc/shorewall/rules

Под разделом ?SECTION NEW добавьте правила:

# Enable access from the internet to ssh, smtp and assp web interface services  
# For security reasonsYou might want to limit ssh access to a single or a class of   
# trusted IP's  
ACCEPT net $FW tcp 22,25,55555
# Enable ping (1 request per second with a burst of one)  
ACCEPT net $FW icmp 8 - - 1/sec:1

Отредактируйте shorewall.conf:

# vi /etc/shorewall/shorewall.conf

Замените STARTUP_ENABLED=No на STARTUP_ENABLED=Yes

Файл зон:

vi /etc/shorewall/zones
fw firewall  
net ipv4

Запустите и включите shorewall:

systemctl enable shorewall  
systemctl start shorewall

Проверка статуса:

shorewall status | grep running

Ожидаемый результат:

Shorewall is running

Установка зависимостей для ASSP и модулей

Установите набор пакетов и Perl-модулей, необходимых ASSP и модулям:

yum install gcc openssl-devel perl-Net-SMTPS perl-IO-Compress-Zlib perl-Text-Glob perl-Number-Compare perl-Convert-TNEF perl-Digest-SHA1 perl-Email-MIME perl-Email-Send perl-Email-Valid perl-File-ReadBackwards perl-MIME-Types perl-Mail-DKIM perl-Mail-SPF perl-Net-CIDR-Lite perl-Net-DNS perl-Net-IP-Match-Regexp perl-Net-SMTP-SSL perl-Time-HiRes perl-Crypt-CBC perl-IO-Socket-SSL perl-Sys-MemInfo perl-Time-HiRes perl-Tie-DBI perl-LWP-Authen-Negotiate clamd perl-Net-IP perl-Text-Unidecode perl-Schedule-Cron-Events perl-BerkeleyDB perl-LDAP perl-CPAN perl-local-lib perl-CPAN-Meta-Requirements unzip deltarpm net-tools policycoreutils-python

Опционально обновите CPAN:

perl -MCPAN -e shell

Принимайте значения по умолчанию и обновите CPAN:

cpan> install CPAN  
cpan> reload cpan

Включение ClamAV

Включите clamd при старте:

systemctl enable clamd

Пример вывода может сообщать, что unit не является native-сервисом — это нормально в некоторых сборках.

Отредактируйте /etc/clamd.conf:

vi /etc/clamd.conf

Замените/установите эти параметры:

LogFileMaxSize 2m  
LogRotate yes  
LocalSocketGroup clamav  
LocalSocket /var/clamav/clamd.sock  
# TCPSocket 3310  
# TCPAddr 127.0.0.1  
PidFile /var/clamav/clamd.pid  
TemporaryDirectory /var/tmp  
IdleTimeout 60

Отредактируйте /etc/freshclam.conf и добавьте/раскомментируйте LogRotate yes

Запустите clamd:

systemctl start clamd

Установка CPAN-модулей, специфичных для ASSP

Установите модули через cpan:

cpan -i Unicode::GCString Sys::CpuAffinity Thread::State Thread::Queue Schedule::Cron File::Scan::ClamAV Sys::Syslog IO::Socket::INET6 Lingua::Stem::Snowball Lingua::Identify Archive::Extract Archive::Zip Archive::Tar Mail::SRS Net::SenderBase Tie::DBI Crypt::OpenSSL::AES Regexp::Optimizer Schedule::Cron::Events Mail::SPF::Query File::Scan::ClamAV

Если некоторые модули (Mail::SPF::Query, File::Scan::ClamAV) не устанавливаются, можно принудительно установить их из CPAN shell:

perl -MCPAN -e shell
cpan> force install Mail::SPF::Query  
cpan> force install File::Scan::ClamAV

Рекомендация: устанавливайте модули по одному, чтобы вовремя заметить ошибки и отсутствующие зависимости:

perl -MCPAN -e shell
cpan> install

Установка ASSP

Скачайте ASSP v.2 с SourceForge и распакуйте на сервере:

unzip ASSP__Install.zip  
mv -f assp/ /var/db/assp/  
cd /var/db/assp

Запустите assp в первый раз:

perl assp.pl

Ошибки по отсутствующим Perl-модулям будут записаны в /var/db/assp/moduleLoadErrors.txt. Прочие ошибки будут выводиться в консоль (assp останется на переднем плане).

Откройте веб-интерфейс ASSP для начальной конфигурации:

http://:55555

user: root
password: nospam4me

Конфликт порта 25 и настройка совместимости с postfix

По умолчанию ASSP пытается забиндиться на 0.0.0.0:25. Это конфликтует с локальным почтовым агентом. В логах вы можете увидеть:

[init] Error: couldn't create server socket on port '25' -- maybe another service is running or I'm not root (uid=0)? -- or a wrong IP address is defined? -- Address already in use

В примере мы перенастроим postfix, чтобы он слушал локально на порту 125, а ASSP — публично на 25.

Отредактируйте /etc/postfix/master.cf:

vi /etc/postfix/master.cf

Замените

smtp inet n - n - - smtpd

на

localhost:125 inet n - n - - smtpd

Перезапустите postfix:

systemctl restart postfix

Если запуск завершился с ошибкой, проверьте статус:

systemctl status postfix.service

Возможная причина ошибки — SELinux не позволяет postfix биндиться на порт 125. Добавьте порт в политику SELinux для smtp:

semanage port -a 125 -t smtp_port_t -p tcp

Проверьте список разрешённых портов:

semanage port -l | grep smtp_port_t

Ожидаемый вывод:

smtp_port_t tcp 125, 25, 465, 587

После этого postfix должен перезапуститься без ошибок:

systemctl restart postfix

Альтернативный способ: оставить postfix на стандартном localhost:25 и в веб-конфиге ASSP указать прослушивание публичного IP на 25, а в поле SMTP Destination указать 127.0.0.1:25 — тогда вмешательство в SELinux не потребуется.

Настройка автозапуска ASSP через systemd

В веб-интерфейсе ASSP: Server Setup -> Run ASSP as a Daemon = Yes – externally controlled

Создайте systemd unit файл:

vi /etc/systemd/system/assp.service

Вставьте:

[Unit]   
Description=AntiSpam SMTP Proxy  
After=network.target  
[Service]   
Type=oneshot   
RemainAfterExit=true   
ExecStart=/usr/bin/perl /var/db/assp/assp.pl /var/db/assp/  
ExecStop=/usr/bin/killall /usr/bin/perl  
[Install]   
WantedBy=multi-user.target

Перезагрузите systemd и включите сервис:

systemctl daemon-reload
systemctl enable assp.service

Перезагрузите сервер и проверьте, что службы запустились. Затем можно тонко настраивать ASSP и postfix.

Полезные ссылки


Когда это может не сработать

  • Если в системе уже есть другие firewall-правила (например, внешние цепочки iptables/нижеуровневые правила), shorewall конфигурация может конфликтовать.
  • Если сеть использует нестандартные имена интерфейсов (например, ens3 вместо eth0), отредактируйте конфигурационные файлы соответственно.
  • На сильно урезанных образах пакетов некоторых зависимостей может не быть в доступных репозиториях; потребуется поискать альтернативы.

Альтернативные подходы

  • Использовать контейнеры (Docker) для запуска ASSP и ClamAV изолированно от основной системы.
  • Запускать ASSP на отдельном выделенном прокси-сервере, а не на том же хосте, что и MTA.
  • Рассмотреть готовые спам-фильтры в виде appliance или облачных сервисов.

Критерии приёмки

  • ASSP доступен по http://:55555 и веб-интерфейс открывается под root/nospam4me.
  • ASSP слушает на публичном IP:25 (или другой указанной комбинации) и корректно перенаправляет на локальный postfix.
  • ClamAV работает и обновления freshclam выполняются без ошибок.
  • systemctl status для assp и postfix показывает Active: active (running).

Мини‑методология и чек‑лист для администратора

  1. Подготовка ОС: обновление, отключение NetworkManager/firewalld, включение network.
  2. Установка репозиториев и базовых пакетов (gcc, perl и т.д.).
  3. Настройка shorewall и базовых правил для доступа к SSH, HTTP(ASSP UI) и SMTP.
  4. Установка и настройка ClamAV, проверка работы clamd и freshclam.
  5. Установка Perl-модулей через CPAN; фиксирование ошибок в moduleLoadErrors.txt.
  6. Размещение ASSP в /var/db/assp и первичный запуск perl assp.pl.
  7. Настройка взаимодействия с MTA (изменение master.cf и SELinux-портов при необходимости).
  8. Создание systemd-unit и проверка автозапуска.

Шаблон проверки (быстрый чек‑лист)

  • Сеть настроена и доступен репозиторий
  • shorewall запущен и позволяет доступ на порты 22, 25, 55555
  • clamd запущен и обновляется
  • все требуемые CPAN-модули установлены
  • ASSP запускается вручную и через systemd
  • Почтовый трафик проходит через ASSP и доставляется postfix

Рекомендации по безопасности

  • Не оставляйте веб-интерфейс ASSP открытым в интернет без ограничения доступа (firewall, ACL, VPN).
  • Ограничьте SSH доступ по IP и используйте ключи.
  • Регулярно обновляйте ClamAV и сигнатуры.
  • Логи ASSP и ClamAV отправляйте на централизованный логсер (например, rsyslog/ELK).

Краткий словарь терминов

  • MTA: Mail Transfer Agent, программа для приёма и передачи почты (postfix/exim).
  • ASSP: Anti-Spam SMTP Proxy — прокси для фильтрации входящей/исходящей почты.
  • clamd: демон антивируса ClamAV.
  • SELinux: подсистема безопасности ядра Linux с политиками доступа.

Decision flow: куда биндить порты

flowchart TD
  A[У вас есть локальный MTA?] -->|Да| B{Можете ли вы менять порты MTA?}
  B -->|Да| C[Перенастроить MTA на localhost:125, выставить ASSP на публичный IP:25]
  B -->|Нет| D[Оставить MTA на localhost:25; настроить ASSP на слушание публичного IP:25 и проброс на 127.0.0.1:25]
  A -->|Нет| E[Запустить ASSP на 25 и настраивать MTA позже]

Роль‑ориентированные чек‑листы

  • Системный администратор: проверка сервисов, ротейта логов, SELinux и обновлений.
  • Сетевой инженер: проверка firewall, NAT, маршрутизации портов.
  • Безопасность: проверка доступа к веб-интерфейсу, аудит правил shorewall, правила шифрования.

Итог

Следуя этой инструкции, вы получите работающее окружение ASSP на минимальной CentOS 7: настроенная сеть, firewall через shorewall, антивирус ClamAV, необходимые Perl‑модули, интеграция с postfix и автозапуск через systemd. После базовой установки рекомендуется провести нагрузочное тестирование и настроить ограничения доступа к веб-интерфейсу.

Важно: перед применением в продакшене сделайте резервные копии конфигураций и протестируйте изменения на стенде.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро