Sendmail, MailScanner, Spamassassin und ClamAv

Weil es einfach nervt, Zeit kostet und Ärger verursacht.

Mit Hilfe der folgenden Beschreibung ist es, basierend auf Open Source Software, möglich einen Mailserver so zu konfigurieren, dass einerseits ein gewisser Anteil an Virenverseuchter elektronischer Post ausgemerzt und Spam als solcher gekennzeichnet wird.

Verwendet wurde OpenBSD 3.3
Benötigte Software:

MailScanner (http://www.sng.ecs.soton.ac.uk/mailscanner/)
SpamAssassin (http://eu.spamassassin.org/)
ClamAntiVirus für OpenBSD (http://activeintra.net/projects/clamav/)

OpenBSD Ports:

zoo-2.10.1
unzip-5.50
unrar-2.50
unarj-2.43
lha-1.14i
arc-5.21e
p5-MIME-tools-5.411a
p5-Digest-SHA1-2.01
p5-Digest-HMAC-1.01
p5-HTML-Tagset-3.03
p5-Net-DNS-0.33
p5-HTML-Parser-3.26

Installation:

Zuallererst werden die nötigen OPenBSD Ports installiert, wahlweise via pkg_add oder über die Ports.

Als nächstes den ClamAV Port

pkg_add /pfad/zum/port/clamav-devel-20030919.tgz

# cp /usr/local/share/examples/clamav/clamav.conf /etc

# crontab -e

0 8 * * * /usr/local/bin/freshclam –quiet -l /var/log/clam-update.log

# /usr/local/bin/freshclam -d -c 2 -l /var/log/clam-update.log

Nun der Spamassassin

# perl -MCPAN -e shell

# install Mail::SpamAssassin

# vi /etc/mail/spamassassin/local.cf

rewrite_subject 1

# Score Increases
score MICROSOFT_EXECUTABLE 4.000
score NO_REAL_NAME 1.000

Zuletzt der MailScanner

# mkdir -p /var/spool/MailScanner/incoming

# mkdir -p /var/spool/MailScanner/quarantine

# vi /etc/rc.conf

sendmail_flags=”-bd -OPrivacyOptions=noetrn -ODeliveryMode=queueonly -OQueueDirectory=/var/spool/mqueue.in

# vi /etc/rc.local

# MailScanner
if [ -x /usr/sbin/sendmail ]; then
echo -n ‘ sendmail’; /usr/sbin/sendmail -q15 >/dev/null 2>&1
fi

# Sendmail outbound queue
if [ -x /opt/MailScanner/bin/check_mailscanner ]; then
echo -n ‘ MailScanner’; /opt/MailScanner/bin/check_mailscanner >/dev/null 2>&1
fi

# crontab -e

*/30 * * * * /usr/sbin/sendmail -Ac -q
0 * * * * /opt/MailScanner/bin/check_mailscanner -q

# mkdir /usr/local/opt
# ln -s /usr/local/opt/ /opt
# cd /opt
# tar xvzf /pfad/zu/MailScanner-4.23-11.tar.gz
# ln -s MailScanner-4.23-11 MailScanner
# vi /opt/MailScanner/etc/MailScanner.conf

man ändere /usr/lib/sendmail auf /usr/sbin/sendmail
Virus Scanners = clamav
Quarantine Infections = no
Notify Senders Of Viruses = no
Send Notices = no
Use SpamAssassin = yes
Spam Actions = attachment deliver
High Scoring Spam Actions = attachment deliver

# cd /opt/MailScanner/bin
# ln -fs tnef.linux tnef

# mkdir /var/spool/mqueue.in/
# chmod 700 /var/spool/mqueue.in/

# /usr/sbin/sendmail -bd -OPrivacyOptions=noetrn -ODeliveryMode=queueonly -OQueueDirectory=/var/spool/mqueue.in
# /usr/sbin/sendmail -q15
# /opt/MailScanner/bin/check_mailscanner

Attachments und MS Outlook XP

Um die gefilterten Anhänge in MS Outlook XP wieder zu aktivieren erstelle man unter

HKEY_CURRENT_USER\Software\Microsoft\Office10.0\OutlookSecurity

eine neue Zeichenfolge mit Namen ‘Level1Remove’, in der dann durch ‘;’ getrennt die freizugebenden Dateiendungen eingetragen werden.

IPSec Peer mit SSH Sentinel

Heureka, es ist ist möglich eine VPN-Verbindung mit SSH Sentinel und einem preshared secret auf ein folgendermassen konfiguriertes OpenBSD Gateway zu etablieren.

Verwendet wurde OpenBSD 3.3
# vi /etc/sysctl.conf

net.inet.esp.enable=1
net.inet.ah.enable=1

# sysctl -w net.inet.esp.enable=1
# sysctl -w net.inet.ah.enable=1

# vi /etc/isakmpd/isakmpd.conf

[Phase 1]
Default= ISAKMP-clients

[Phase 2]
Passive-Connections= IPsec-clients

[ISAKMP-clients]
Phase= 1
Configuration= Default-main-mode
Authentication= some-secret-passphrase

[IPsec-clients]
Phase= 2
Configuration= Default-quick-mode
Local-ID= Local-net
Remote-ID= Remote-host

[Local-net]
ID-type= IPV4_ADDR_SUBNET
Network= 192.168.1.0
Netmask= 255.255.255.0

[Remote-host]
ID-type= IPV4_ADDR_SUBNET
Network= 0.0.0.0
Netmask= 0.0.0.0

[Default-main-mode]
EXCHANGE_TYPE= ID_PROT
Transforms= 3DES-SHA

[Default-quick-mode]
DOID= IPSEC
EXCHANGE_TYPE= QUICK_MODE
Transforms= 3DES-SHA
Suites= QM-ESP-3DES-SHA-PFS-SUITE

# vi /etc/isakmpd/isakmpd.policy

Keynote-version: 2
Authorizer: “POLICY”
Conditions: app_domain == “IPsec policy” &&
esp_present == “yes” &&
esp_enc_alg != “null” -> “true”;

# vi /etc/pf.conf

# VPN
pass in proto esp from any to any
pass in on $ext_if proto udp from any to any port = 500

# /sbin/isakmpd
# echo /sbin/isakmpd >> /etc/rc.local

Relay mit Sendmail und SMTP-Auth

Soll ein weiterer Mailserver, z.B. der des ISP, als Relay für Sendmail dienen und erfordert dieser Authentifizierung, so ist das kein Problem.

Kenn’ ich irgendwie auch schon … *g*

Verwendet wurde OpenBSD 3.3
Benötigte Pakete:

cyrus-sasl2

Für das gesamte Projekt benötigen wir die Quelltexte vom Sendmail:

# echo WANT_SMTPAUTH= yes >> /etc/mk.conf

# cd /usr/local/lib; ln -s libsasl2.so.2.11 libsasl2.so

# vi /usr/src/gnu/usr.sbin/sendmail/cf/cf/openbsd-proto.mc

nach FEATURE(`no_default_msa’) folgendes einfügen:

define(`confAUTH_MECHANISMS’,`LOGIN PLAIN CRAM-MD5 DIGEST-MD5′)dnl
TRUST_AUTH_MECH(`LOGIN PLAIN CRAM-MD5 DIGEST-MD5′)dnl
FEATURE(`authinfo’,`hash /etc/mail/authinfo’)

# cd /usr/src/gnu/usr.sbin/sendmail

# make && make install && make clean

# cd /usr/share/sendmail/cf/

# make openbsd-proto.cf

# cp openbsd-proto.cf /etc/mail/sendmail.cf

# vi /etc/mail/authinfo

AuthInfo:mein.relay.server “U:blabla” “P=blabla” “M:LOGIN”

# makemap hash /etc/mail/authinfo < /etc/mail/authinfo # vi /etc/mail/sendmail.cf Man suche nach: # "Smart" relay host (may be null) und füge ein: DSmein.relay.server Um die Kerberosfehlermeldungen beim Start ein wenig zu unterdrücken: # touch /etc/kerberosIV/srvtab Jetzt noch ein einfacher Neustart: # kill -HUP `head -1 /var/run/sendmail.pid` Auch ist es mit wenigen Schritten noch möglich, dass der Sendmail als Relay-Schutz eine korrekte Authentifizierung verlangt: # mkdir /var/sasl2 # echo pwcheck_method: saslauthd > /usr/local/lib/sasl2/Sendmail.conf

# /usr/local/sbin/saslauthd -a getpwent

# vi /etc/rc.local

if [ -x /usr/local/sbin/saslauthd ]; then
echo -n ‘ saslauthd’; /usr/local/sbin/saslauthd -a getpwent
fi

# kill -HUP `head -1 /var/run/sendmail.pid`

Nun Langt’s aber.

Sendmail, Procmail und Spamassassin

Möchte man die vielgeliebten Mails mit diversen Inhalten, wie Penisvergrösserung, freizügigen Frauen oder hervorragenden Geldanlagen schon auf dem Mailserver auch als solche kennzeichnen hilft die oben genannte Kombination.

(kommt mir irgendwie bekannt vor … *fg*)

verwendet wurde OpenBSD 3.3
Benötigte Pakete:

procmail-3.22
p5-Mail-SpamAssassin-2.50

Zuallererst wird der gute alte Sendmail für die Kombination mit Procmail konfiguriert:

# cd /usr/share/sendmail/cf/
# cp openbsd-proto.mc MeinServer.mc
# vi MeinServer.mc

FEATURE(`local_procmail’)
MAILER(procmail)dnl
#MAILER(local)

# make MeinServer.cf
# cp MainServer.cf /etc/mail/sendmail.cf
# kill -HUP `head -1 /var/run/sendmail.pid`

Nun das System für den SpamAssassin vorbereiten:

# vi /etc/shells

/usr/bin/false

# vipw

spamdaemon:*:2000:10::0:0:SpamKiller:/nonexistent/spamdaemon:/usr/bin/false

# vi /etc/rc.local

#SpamAssassin
/usr/local/bin/spamd -u spamdaemon -d -L -p 4321 -x

# vi /etc/mail/spamassassin/local.cf

rewrite_subject 1

# /usr/local/bin/spamd -u spamdaemon -d -L -p 4321 -x

Und jetzt wird noch Procmail konfiguriert:

# vi /etc/procmailrc

:0fw
| /usr/local/bin/spamc -p 4321 -f

Dat wäre es gewesen … gute Unterhaltung.