Установка 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 NetworkManagersystemctl disable firewalld
systemctl stop firewalldsystemctl 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/interfacesnet 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/zonesfw 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 shellcpan> force install Mail::SPF::Query
cpan> force install File::Scan::ClamAVРекомендация: устанавливайте модули по одному, чтобы вовремя заметить ошибки и отсутствующие зависимости:
perl -MCPAN -e shellcpan> 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://
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-reloadsystemctl 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).
Мини‑методология и чек‑лист для администратора
- Подготовка ОС: обновление, отключение NetworkManager/firewalld, включение network.
- Установка репозиториев и базовых пакетов (gcc, perl и т.д.).
- Настройка shorewall и базовых правил для доступа к SSH, HTTP(ASSP UI) и SMTP.
- Установка и настройка ClamAV, проверка работы clamd и freshclam.
- Установка Perl-модулей через CPAN; фиксирование ошибок в moduleLoadErrors.txt.
- Размещение ASSP в /var/db/assp и первичный запуск perl assp.pl.
- Настройка взаимодействия с MTA (изменение master.cf и SELinux-портов при необходимости).
- Создание 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. После базовой установки рекомендуется провести нагрузочное тестирование и настроить ограничения доступа к веб-интерфейсу.
Важно: перед применением в продакшене сделайте резервные копии конфигураций и протестируйте изменения на стенде.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента