Поиск по сайту:

Как установить ASSP v.2 на CentOS 7 64 бит


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

После перезагрузки

Отключите NetworkManager и FirewallD и включите сетевую службу.

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

Получите дополнительное программное обеспечение для Centos из репозиториев epel, repoforge, remi:

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

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

В разделе «РАЗДЕЛ НОВЫЙ» добавьте следующие правила:

# 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=Нет на STARTUP_ENABLED=Да

И, наконец, файл зон:

vi /etc/shorewall/zones
fw firewall
net ipv4

Включить брандмауэр

systemctl enable shorewall
systemctl start shorewall

Проверьте, работает ли брандмауэр с помощью команды состояния береговой стены:

shorewall status | grep running
Shorewall is running

Установите программное обеспечение, необходимое для ASSP2 и модулей:

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> install CPAN
cpan> reload cpan


Включить ClamAV во время загрузки

systemctl включить clamd

clamd.service is not a native service, redirecting to /sbin/chkconfig.
Executing /sbin/chkconfig clamd on
The unit files have no [Install] section. They are not meant to be enabled
using systemctl.
Possible reasons for having this kind of units are:
1) A unit may be statically enabled by being symlinked from another unit's
.wants/ or .requires/ directory.
2) A unit's purpose may be to act as a helper for some other unit which has
a requirement dependency on it.
3) A unit may be started when needed via activation (socket, path, timer,
D-Bus, udev, scripted systemctl call, ...).

Отредактируйте /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:

vi /etc/freshclam.conf

Добавить или раскомментировать LogRotate да

Запустите ClamAV:

systemctl start clamd

Установите модули CPAN для ASSP:

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

Ответьте на любые вопросы, нажав клавишу Enter (это будет опция по умолчанию в квадратных скобках [ ])

Возможно, Mail::SPF::Query и File::Scan::ClamAV не будут установлены без принудительной установки. В таком случае:

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

Я бы рекомендовал устанавливать модули Perl один за другим, чтобы отловить возможные ошибки и/или отсутствующие зависимости:

perl -MCPAN -e shell
cpan> install

Загрузите ASSP v.2 с http://sourceforge.net/projects/assp/ на свой сервер и разархивируйте его:

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, войдя в веб-интерфейс:

пользователь: root
пароль: nospam4me

По умолчанию assp привязывается к порту 25/tcp на каждом адресе ipv4 (0.0.0.0:25). Это вызовет конфликт с локальным почтовым сервером (postfix, exim, sendmail, opensmtpd). Эта информация будет напечатана в файле журнала assp (/var/db/assp/logs/maillog.txt) и в консоли, если assp запущен на переднем плане:

[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 и изменить его порт по умолчанию (25/tcp), скажем, на 125/tcp и привязать только к локальному хосту:

vi /etc/postfix/master.cf

Заменять

smtp inet n - n - - smtpd

С

localhost:125 inet n - n - - smtpd


Давайте перезапустим постфикс:

systemctl restart postfix
Job for postfix.service failed. See 'systemctl status postfix.service' and 'journalctl -xn' for details.
systemctl status postfix.service
postfix.service - Postfix Mail Transport Agent
Loaded: loaded (/usr/lib/systemd/system/postfix.service; enabled)
Active: failed (Result: exit-code) since Sun 2014-12-21 15:34:11 ICT; 6s ago
Process: 30186 ExecStop=/usr/sbin/postfix stop (code=exited, status=0/SUCCESS)
Process: 30200 ExecStart=/usr/sbin/postfix start (code=exited, status=1/FAILURE)
Process: 30198 ExecStartPre=/usr/libexec/postfix/chroot-update (code=exited, status=0/SUCCESS)
Process: 30195 ExecStartPre=/usr/libexec/postfix/aliasesdb (code=exited, status=0/SUCCESS)
Main PID: 29346 (code=killed, signal=TERM)
systemd[1]: Starting Postfix Mail Transport Agent...
postfix/master[30272]: fatal: bind 127.0.0.1 port 125: Permission denied
postfix/master[30271]: fatal: daemon initialization failure
systemd[1]: postfix.service: control process exited, code=exited status=1
systemd[1]: Failed to start Postfix Mail Transport Agent.
systemd[1]: Unit postfix.service entered failed state.

Вышеупомянутая ошибка связана с тем, что selinux не позволяет postfix привязываться к другому порту, кроме 25, 465 и 587.

Чтобы постфикс привязывался к порту 125, отключите selinux (не рекомендуется) или добавьте другой порт в политику selinux для привязки постфикса:

semanage port -a 125 -t smtp_port_t -p tcp

И проверьте, есть ли порт 125 в списке разрешенных портов:

semanage port -l | grep smtp_port_t
smtp_port_t tcp 125, 25, 465, 587

Теперь мы можем перезапустить постфикс без ошибок:

systemctl restart postfix

Другой способ сделать это - включить smtp на локальном хосте, а в веб-конфигурации assp включить порт 25 на общедоступном/частном IP-адресе сервера соответственно. Таким образом, настройка selinux не требуется.

В /etc/postfix/master.cf:

vi /etc/postfix/master.cf

Заменять

smtp inet n - n - - smtpd

С

localhost:smtp inet n - n - - smtpd

В веб-конфигурации assp Network Setup->SMTP Listen Port измените значение с 25 на :25 и Network Setup->SMTP Destination со 125 на 127.0.0.1:25.

Примените изменения с помощью кнопки «Применить» в веб-интерфейсе.


Чтобы assp запускался во время загрузки, в веб-конфигурации assp перейдите в раздел «Настройка сервера» и в разделе «Запуск ASSP в качестве демона» выберите «Да — управление извне».

Затем мы создаем assp-скрипт systemd:

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

Перезагрузите системд:

systemctl daemon-reload

Включить сценарий ASSP во время загрузки:

systemctl enable assp.service

Перезагрузите сервер и проверьте, запущены ли службы. Затем вы можете приступить к тонкой настройке ASSP и постфикса (или выбранного вами почтового демона).

Ссылки

  • АССП
  • СентОС