Dieses Howto zeigt die Schritte zur Installation von ASSP auf einer minimalen CentOS 7-Installation. Es behandelt weder die Installation von CentOS noch die Einrichtung des Mailservers. Das Image CentOS-7.0-1406-x86_64-Minimal.iso ist für dieses Setup geeignet. Wenn Sie das DVD-Image haben, wählen Sie Minimale Installation und fahren Sie mit der Installation fort.
Nach dem Neustart
Deaktivieren Sie NetworkManager und FirewallD und aktivieren Sie den Netzwerkdienst
systemctl disable NetworkManager
systemctl stop NetworkManager
systemctl disable firewalld
systemctl stop firewalld
systemctl enable network
systemctl start network
Bearbeiten Sie die Netzwerkkartenkonfiguration (wir gehen davon aus, dass eine Netzwerkkarte auf dem System installiert ist)
vi /etc/sysconfig/network-scripts/ifcfg-eth0
Ersetzen Sie IPADDR0=a.b.c.d
durch IPADDR=a.b.c.d
Ersetzen Sie PREFIX0=xx
durch PREFIX=xx
Ersetzen Sie GATEWAY0=aa.bb.cc.dd
durch GATEWAY=aa.bb.cc.dd
Betriebssystem aktualisieren
yum -y update
reboot
yum install wget perl
Holen Sie sich zusätzliche Software für Centos aus den Repositories 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
Repositories installieren
yum localinstall rpmforge-release-0.5.3-1.el7.rf.x86_64.rpm epel-release-7-5.noarch.rpm remi-release-7.rpm
Shorewall-Firewall installieren (iptables manager):
yum install shorewall
Lassen Sie uns unsere Firewall bearbeiten. Diese Optionen und Beispieldateien sind das Minimum, damit es funktioniert. Eine weitere Konfiguration ist erforderlich. Weitere Informationen zu Shorewall und deren Konfiguration finden Sie unter http://shorewall.net
Zuerst die Schnittstellendatei:
vi /etc/shorewall/interfaces
net eth0
Die Richtliniendatei:
vi /etc/shorewall/policy
$FW net ACCEPT
net all DROP
all all REJECT
Die Regeldatei:
vi /etc/shorewall/rules
Fügen Sie unter ?SECTION NEW die folgenden Regeln hinzu:
# 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
Die shorewall.conf-Datei:
# vi /etc/shorewall/shorewall.conf
Ersetzen Sie STARTUP_ENABLED=Nein durch STARTUP_ENABLED=Ja
Und schließlich die Zonendatei:
vi /etc/shorewall/zones
fw firewall
net ipv4
Firewall aktivieren
systemctl enable shorewall
systemctl start shorewall
Prüfen Sie mit dem Shorewall-Statusbefehl, ob die Firewall läuft:
shorewall status | grep running
Shorewall is running
Installieren Sie die für ASSP2 und Module benötigte Software:
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
Optionales CPAN-Update
perl -MCPAN -e shell
Akzeptieren Sie die Standardoptionen und fahren Sie mit dem Upgrade fort:
cpan> install CPAN
cpan> reload cpan
ClamAV beim Booten aktivieren
systemctl ermöglicht 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, ...).
Bearbeiten Sie /etc/clamd.conf:
vi /etc/clamd.conf
Ersetzen Sie Ihre Werte durch die folgenden:
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
Bearbeiten Sie /etc/freshclam.conf:
vi /etc/freshclam.conf
LogRotate hinzufügen oder auskommentieren ja
ClamAV starten:
systemctl start clamd
CPAN-Module für ASSP installieren:
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
Beantworten Sie alle Fragen, indem Sie die Eingabetaste drücken (dies ist die Standardoption in den Klammern [ ])
Möglicherweise lassen sich Mail::SPF::Query und File::Scan::ClamAV nicht ohne Zwang installieren. In diesem Fall:
perl -MCPAN -e shell
cpan> force install Mail::SPF::Query
cpan> force install File::Scan::ClamAV
Ich würde empfehlen, Perl-Module einzeln zu installieren, um potenzielle Fehler und/oder fehlende Abhängigkeiten abzufangen:
perl -MCPAN -e shell
cpan> install
Laden Sie ASSP v.2 von http://sourceforge.net/projects/assp/ auf Ihren Server herunter und entpacken Sie es:
unzip ASSP__Install.zip
mv -f assp/ /var/db/assp/
cd /var/db/assp
assp zum ersten Mal starten:
perl assp.pl
Alle Fehler zu Perl-Modulen werden an /var/db/assp/moduleLoadErrors.txt gemeldet. Alle anderen Fehler werden auf der Konsole ausgegeben (assp bleibt im Vordergrund).
Beginnen Sie mit der Konfiguration von ASSP, indem Sie sich bei der Weboberfläche anmelden:
http://
Benutzer:root
Passwort:nospam4me
Standardmäßig bindet sich assp an Port 25/tcp auf jeder IPv4-Adresse (0.0.0.0:25). Dies erzeugt einen Konflikt mit dem lokalen E-Mail-Server (postfix, exim, sendmail, opensmtpd). Diese Informationen werden in die assp-Protokolldatei (/var/db/assp/logs/maillog.txt) und auf die Konsole gedruckt, wenn assp im Vordergrund läuft:
[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
In diesem Fall richten wir postfix ein und müssen seinen Standardport (25/tcp) auf sagen wir 125/tcp ändern und nur an localhost binden:
vi /etc/postfix/master.cf
Ersetzen
smtp inet n - n - - smtpd
Mit
localhost:125 inet n - n - - smtpd
Lassen Sie uns postfix neu starten:
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.
Der obige Fehler tritt auf, weil Selinux es Postfix nicht erlaubt, sich an andere Ports als 25, 465 und 587 zu binden
Um Postfix an Port 125 binden zu lassen, deaktivieren Sie Selinux (nicht empfohlen) oder fügen Sie einen anderen Port zur Selinux-Richtlinie hinzu, damit Postfix binden kann:
semanage port -a 125 -t smtp_port_t -p tcp
Und überprüfen Sie, ob sich Port 125 in der Liste der erlaubten Ports befindet:
semanage port -l | grep smtp_port_t
smtp_port_t tcp 125, 25, 465, 587
Jetzt können wir Postfix ohne Fehler neu starten:
systemctl restart postfix
Eine andere Möglichkeit, Dinge zu tun, besteht darin, SMTP auf localhost zu aktivieren und in assp web config Port 25 auf der öffentlichen/privaten IP-Adresse des Servers zu aktivieren. Auf diese Weise ist keine Selinux-Konfiguration erforderlich.
In /etc/postfix/master.cf:
vi /etc/postfix/master.cf
Ersetzen
smtp inet n - n - - smtpd
Mit
localhost:smtp inet n - n - - smtpd
Ändern Sie in assp web config Network Setup->SMTP Listen Port von 25 auf
Wenden Sie Änderungen mit der Schaltfläche Übernehmen auf der Weboberfläche an.
Um assp beim Booten starten zu lassen, gehen Sie in der assp-Webkonfiguration zu Server Setup und wählen Sie unter Run ASSP as a Daemon Yes – externally controlled
Dann erstellen wir das systemd-assp-Skript:
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 neu laden:
systemctl daemon-reload
ASSP-Skript beim Booten aktivieren:
systemctl enable assp.service
Starten Sie den Server neu und überprüfen Sie, ob die Dienste ausgeführt werden. Dann können Sie mit der Feinabstimmung von ASSP und Postfix (oder Ihrem gewählten E-Mail-Daemon) fortfahren.
Links
- ASSP
- CentOS