Tento návod ukazuje kroky k instalaci ASSP na minimální instalaci CentOS 7. Nezahrnuje instalaci CentOS ani nastavení poštovního serveru. Pro toto nastavení je vhodný obraz CentOS-7.0-1406-x86_64-Minimal.iso. Pokud máte obraz DVD, zvolte Minimální instalace a pokračujte v instalaci.
Po restartu
Vypněte NetworkManager a FirewallD a povolte síťovou službu
systemctl disable NetworkManager
systemctl stop NetworkManager
systemctl disable firewalld
systemctl stop firewalld
systemctl enable network
systemctl start network
Upravte konfiguraci síťové karty (předpokládáme jednu síťovou kartu nainstalovanou v systému)
vi /etc/sysconfig/network-scripts/ifcfg-eth0
Nahradit IPADDR0=a.b.c.d
Za IPADDR=a.b.c.d
Nahraďte PREFIX0=xx
Předponou PREFIX=xx
Nahradit GATEWAY0=aa.bb.cc.dd
GATEWAY=aa.bb.cc.dd
Aktualizovat operační systém
yum -y update
reboot
yum install wget perl
Získejte další software pro Centos z repozitářů 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
Instalovat úložiště
yum localinstall rpmforge-release-0.5.3-1.el7.rf.x86_64.rpm epel-release-7-5.noarch.rpm remi-release-7.rpm
Nainstalujte firewall shorewall (správce iptables):
yum install shorewall
Upravme náš firewall. Tyto možnosti a ukázkové soubory jsou minimální, aby to fungovalo. Je nutná další konfigurace. Pro více informací o shorewallu a jeho konfiguraci navštivte http://shorewall.net
Nejprve soubor rozhraní:
vi /etc/shorewall/interfaces
net eth0
Soubor zásad:
vi /etc/shorewall/policy
$FW net ACCEPT
net all DROP
all all REJECT
Soubor pravidel:
vi /etc/shorewall/rules
V části ?SEKCE NOVÁ přidejte níže uvedená pravidla:
# 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
Soubor shorewall.conf:
# vi /etc/shorewall/shorewall.conf
Nahradit STARTUP_ENABLED=Ne za STARTUP_ENABLED=Ano
A konečně soubor zón:
vi /etc/shorewall/zones
fw firewall
net ipv4
Povolit firewall
systemctl enable shorewall
systemctl start shorewall
Zkontrolujte, zda běží firewall pomocí příkazu shorewall status:
shorewall status | grep running
Shorewall is running
Nainstalujte software potřebný pro ASSP2 a moduly:
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
Volitelná aktualizace CPAN
perl -MCPAN -e shell
Přijměte výchozí možnosti a pokračujte v upgradu:
cpan> install CPAN
cpan> reload cpan
Povolit ClamAV při spouštění
systemctl povolit 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, ...).
Upravte /etc/clamd.conf:
vi /etc/clamd.conf
Nahraďte své hodnoty hodnotami níže:
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
Upravte /etc/freshclam.conf:
vi /etc/freshclam.conf
Přidat nebo odkomentovat LogRotate yes
Spusťte ClamAV:
systemctl start clamd
Nainstalujte moduly CPAN pro 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
Odpovězte na jakékoli otázky stisknutím klávesy Enter (bude to výchozí možnost v závorkách [ ])
Mail::SPF::Query a File::Scan::ClamAV se možná nenainstalují bez použití síly. V tom případě:
perl -MCPAN -e shell
cpan> force install Mail::SPF::Query
cpan> force install File::Scan::ClamAV
Doporučil bych instalovat perl moduly jeden po druhém, abyste zachytili potenciální chyby a/nebo chybějící závislosti:
perl -MCPAN -e shell
cpan> install
Stáhněte si ASSP v.2 z http://sourceforge.net/projects/assp/ na svůj server a rozbalte jej:
unzip ASSP__Install.zip
mv -f assp/ /var/db/assp/
cd /var/db/assp
První spuštění assp:
perl assp.pl
Jakékoli chyby týkající se modulů perl budou hlášeny do /var/db/assp/moduleLoadErrors.txt. Jakékoli další chyby budou vytištěny na konzole (assp zůstane v popředí).
Začněte konfigurovat ASSP přihlášením do webového rozhraní:
http://
uživatel:root
heslo:nospam4me
Ve výchozím nastavení se assp váže na port 25/tcp na každé adrese ipv4 (0.0.0.0:25). To způsobí konflikt s místním e-mailovým serverem (postfix, exim, sendmail, opensmtpd). Tyto informace budou vytištěny do souboru protokolu assp (/var/db/assp/logs/maillog.txt) a na konzole, pokud assp běží v popředí:
[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
V tomto případě budeme nastavovat postfix a budeme muset změnit jeho výchozí port (25/tcp) na řekněme 125/tcp a vázat pouze na localhost:
vi /etc/postfix/master.cf
Nahradit
smtp inet n - n - - smtpd
S
localhost:125 inet n - n - - smtpd
Pojďme restartovat postfix:
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.
Výše uvedená chyba je způsobena tím, že selinux nedovolí, aby se postfix vázal na jiný port než 25, 465 a 587
Chcete-li, aby se postfix vázal na port 125, deaktivujte selinux (nedoporučuje se) nebo přidejte další port k zásadě selinux, aby se postfix vázal:
semanage port -a 125 -t smtp_port_t -p tcp
A zkontrolujte, zda je port 125 v seznamu povolených portů:
semanage port -l | grep smtp_port_t
smtp_port_t tcp 125, 25, 465, 587
Nyní můžeme restartovat postfix bez chyb:
systemctl restart postfix
Dalším způsobem, jak to udělat, je povolit smtp na localhost a ve webové konfiguraci assp povolit port 25 na veřejné/soukromé IP adrese serveru. Tímto způsobem není zapojena žádná konfigurace selinuxu.
V /etc/postfix/master.cf:
vi /etc/postfix/master.cf
Nahradit
smtp inet n - n - - smtpd
S
localhost:smtp inet n - n - - smtpd
Ve webové konfiguraci assp Nastavení sítě->Změna portu pro naslouchání SMTP z 25 na
Použijte změny pomocí tlačítka Použít na webovém rozhraní.
Chcete-li, aby se assp spustil při spouštění, přejděte ve webové konfiguraci assp do Nastavení serveru a v části Spustit ASSP jako démona vyberte Ano – externě řízeno
Poté vytvoříme skript systemd assp:
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
Znovu načíst systemd:
systemctl daemon-reload
Povolit skript ASSP při spouštění:
systemctl enable assp.service
Restartujte server a zkontrolujte, zda jsou služby v provozu. Poté můžete pokračovat v jemném ladění ASSP a postfixu (nebo vámi zvoleného emailového démona).
Odkazy
- ASSP
- CentOS