User Tools

Site Tools


rootserver:mail

Anti-SPAM

policyd-weight

policyd-weight arbeitet Postfix MTA zu und wehrt die meisten SPAM-artigen Mails schon ab, bevor sie aufwändig weiterverarbeitet werden (z.B. durch SpamAssassin).
Angeblich wird die Software nicht mehr (intensiv?) weiterentwickelt und in einigen Foren wird stattdessen http://www.postfwd.org/ empfohlen. Nachdem aber policyd-weight mit ISPConfig3 ohne Probleme zusammenarbeiten soll, arbeite ich mal damit.

Installation

apt-get install policyd-weight

Falls man Anpassungen der Konfiguration machen möchte:

cd /etc
policyd-weight defaults > policyd-weight.conf
vim policyd-weight.conf

Konfiguration Postfix

vim /etc/postfix/main.cf

Folgende Zeilen ändern/ergänzen:

smtpd_recipient_restrictions = {...}, reject_invalid_helo_hostname, check_policy_service inet:127.0.0.1:12525
smtpd_helo_required = yes

Postfix neu starten:

/etc/init.d/postfix reload

Evtl. noch erweitern um How to deny your domain in incoming mails.

Gemeinsamer Kampf gegen SPAM

Damit spamassassin effektiv SPAM von HAM unterscheiden kann, ist ein gewisses Training erforderlich. Dazu werden aber viele Mails gebraucht (1000 SPAM und HAM Mails wären gut). Um schnell so viele Mails zusammen zu bekommen, sollten die Mail-User Trainingsmaterial zur Verfügung stellen. Am einfachsten ist das, wenn folgende Einstellungen in den Mail-Clients gemacht werden und dann folgende Grundsätze beachtet werden:

  • Keine SPAM-Mails löschen!
  • SPAM-Mails nur im Junk bzw. Spam Verzeichnis ablegen.
  • Nicht alles im Inbox-Verzeichnis speichern, sondern die “guten” Mails in Unterverzeichnisse verschieben.
  • Ab und zu im SPAM-Verzeichnis nachsehen, ob sich dort fälschlicherweise auch gute Mails eingefunden haben.
  • Benutzer, die noch POP3 verwenden, können nicht mitmachen, es funktioniert nur vernünftig mit IMAP.

Thunderbird

Bei Thunderbird müssen in zwei Dialogen ggf. Anpassungen vorgenommen werden:

Einstellungen:

Konto-Einstellungen:

Roundcube Webmail

Roundcube ist ein IMAP Webmail Client. Um sich damit im Kampf gegen SPAM zu beteiligen, bitte folgende Einstellungen machen:

Einstellungen > Konto > Spam:
Darauf achten, dass man Verschiebe Spam in Spam-Ordner aktiviert hat.
Nach Änderungen bitte nicht vergessen, den [Speichern] Knopf zu drücken!

Einstellungen > Einstellungen > Spezialordner:
Beim Ordner Spam die Auswahl Junk machen (ist eigentlich Standard).
Nach Änderungen bitte nicht vergessen, den [Speichern] Knopf zu drücken!

amavis Virenscanner (Anti-Virus)

Seit einiger Zeit bekomme ich mehrmals täglich Mails vom amavis-new Virenscanner:

Betreff:

Cron <amavis@www> test -e /usr/sbin/amavisd-new-cronjob && /usr/sbin/amavisd-new-cronjob sa-sync

Text:

bayes: synced databases from journal in 0 seconds: 1927 unique entries (3026 total entries)

Verstehe zwar nicht, wie so ein alter Bug immer noch im aktuellen Code sein kann, aber offensichtlich lässt sich das Problem lösen, indem man in /usr/sbin/amavisd-new-cronjob im case sa-sync folgende Korrekturen vornimmt:

...
        sa-sync)
# fehlerhaft:   do_amavis_cmd "/usr/bin/sa-learn --sync   >/dev/null"
                do_amavis_cmd "/usr/bin/sa-learn --sync"
                ;;
        sa-clean)
# fehlerhaft:   do_amavis_cmd "/usr/bin/sa-learn --sync --force-expire   >/dev/null"
                do_amavis_cmd "/usr/bin/sa-learn --sync --force-expire"
                ;;
...

Und die Umleitung von stdout nach /dev/null kommt dann in die crontab von amavis (/etc/cron.d/amavisd-new);

#
#  SpamAssassin maintenance for amavisd-new
#
# m h dom mon dow user  command
18 */3	* * *	amavis	test -e /usr/sbin/amavisd-new-cronjob && /usr/sbin/amavisd-new-cronjob sa-sync >/dev/null

Memory Consumption saslauthd

Nach Wochen ohne Restart ist der Speicherverbrauch durch saslauthd bedenklich groß. Sieht eigentlich nach einem bösen Memory-Leak aus. Um Problemen aus dem Weg zu gehen, könnte der Dienst öfter mal neu gestartet werden. Und nachdem mein Mailserver keine 1000 User bedienen muss, stelle ich die Anzahl der Fork-Prozesse (Standard ist wohl 5) auf 2 ein:

vi /etc/default/saslauthd

#THREADS=5
THREADS=2

/etc/init.d/saslauthd restart

Send only MTA

Auf einem Server, der z.B. hauptsächlich als Applikationsserver arbeitet, braucht man kein POP3 oder IMAP, sondern es genügt, wenn man Mails senden kann. Dazu installiere ich Exim4, konfiguriert quasi als Satellit, der über smarthost sendet.
Im entfernten Mailserver wird die IP des Appservers unter mynetworks = …, appserverip/32 in master.cf eingetragen.

Der Appserver wurde ursprünglich als “The perfect Server ISPConfig-3” installiert.
Um Hauptspeicher und CPU zu sparen soll nun der gesamte Mail-Stack (postfix, courier, clamav, spamassassin, getmail, squirrelmail) durch exim ersetzt werden, welcher die Mails an einen “befreundeten” Mailserver weitergibt.

Unnötige Packages deinstallieren

apt-get remove courier-authdaemon courier-authlib-mysql courier-pop courier-pop-ssl courier-imap courier-imap-ssl 
apt-get remove amavisd-new spamassassin clamav clamav-daemon clamav-docs squirrelmail clamav-base clamav-freshclam getmail4
apt-get remove policyd-weight
apt-get autoremove
 
# diese Module lasse ich mal, vllt. braucht sie jemand noch
# apt-get remove libsasl2-2 libsasl2-modules libsasl2-modules-sql sasl2-bin

Exim4 als light-weight daemon installieren

apt-get install exim4-light-daemon mailutils
 
# Durch exim4 wird postfix automatisch deinstalliert (sonst würde z.B. rkhunter auch noch mitgerissen werden)
# apt-get remove postfix postfix-mysql postfix-doc

mynetworks in smarthost Mailserver anpassen

Auf dem Mailserver läuft noch Postfix & Co. Damit dieser die Mails vom Appserver sendet, wird in /etc/postfix/main.cf das Netzwerk erweitert, welchem ohne Authentisierung vertraut wird:

...
mynetworks = 127.0.0.0/8 [::1]/128, 62.175.211.199/32
...
/etc/init.d/postfix reload

Firewall anpassen

Folgende INPUT-Ports können nun auf dem Appserver geschlossen werden:

  • 25 SMTP
  • 110 POP3
  • 143 IMAP
  • 465 SMTP over SSL
  • 993 IMAP over SSL
  • 995 POP3 over SSL

DNS Record für Appserver

Der MX Record muss auf den Mailhost gelenkt werden.
Natürlich muss der Mailhost die Domain des Appservers auch verarbeiten (ISPConfig > EMail > EMail Domain).

Aufräumarbeiten

FIXME

  • tote Packages löschen, incl. Konfigurationsdaten
  • Start-/Stopscripte
  • Cronjobs weg?
  • /etc/rkhunter.conf anpassen: APP_WHITELIST=“… exim:4.69”

Renew TLS Certificates

Typically one year after installing the perfect server (in my case ISPConfig 3, debian lenny), the self signed certificates are no longer valid.

Courier (POP3, IMAP)

To renew SSL/TLS certificates for POP3 and IMAP the same steps can be done as described in The Perfect Server - Page 3.

Search for the line with the words “SSL certificates for IMAP-SSL and POP3-SSL”.

For those who know what to do:

cd /etc/courier
rm -f /etc/courier/imapd.pem
rm -f /etc/courier/pop3d.pem
mkimapdcert
mkpop3dcert
/etc/init.d/courier-imap-ssl restart
/etc/init.d/courier-pop-ssl restart

Postfix (SMTP)

In this example I chose 5*365 days for the certificate to be valid. ISPConfig installation used only one year, but this annoys me.

cd /etc/postfix
mkdir ssl
cd ssl
openssl genrsa -des3 -rand ../main.cf -out smtpd.key 1024

# enter passphrase (2 times, you have to remember the phrase)

chmod 600 smtpd.key
openssl req -new -key smtpd.key -out smtpd.csr

# enter passphrase
# enter some information about your organization
# !important!
# Common Name (eg, YOUR name) []: <-- here you enter the DNS name of the SMTP server
# Email Address []: <-- typically something like postmaster@yourdomain.tld

openssl x509 -req -days 1825 -in smtpd.csr -signkey smtpd.key -out smtpd.cert

# Enter pass phrase for smtpd.key:

openssl rsa -in smtpd.key -out smtpd.key

# Enter pass phrase for smtpd.key:

cd ..
cp -a ssl/smtpd.key ssl/smtpd.cert .
/etc/init.d/postfix restart

Here is a “logbook” of my recent TLS/SSL certificate renewal:

www:/etc/postfix# mkdir ssl
www:/etc/postfix# cd ssl
www:/etc/postfix/ssl# openssl genrsa -des3 -rand ../main.cf -out smtpd.key 1024

3541 semi-random bytes loaded
Generating RSA private key, 1024 bit long modulus
....++++++
...........................++++++
e is 65537 (0x10001)
Enter pass phrase for smtpd.key:
Verifying - Enter pass phrase for smtpd.key:

www:/etc/postfix/ssl# chmod 600 smtpd.key
www:/etc/postfix/ssl# openssl req -new -key smtpd.key -out smtpd.csr

Enter pass phrase for smtpd.key:
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:DE
State or Province Name (full name) [Some-State]:BY
Locality Name (eg, city) []:Rosenheim
Organization Name (eg, company) [Internet Widgits Pty Ltd]:taskbrain
Organizational Unit Name (eg, section) []:Self Signed TLS Key
Common Name (eg, YOUR name) []:smtp.taskbrain.de
Email Address []:postmaster@taskbrain.de

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:(i_think_this_password_is_not_needed)
An optional company name []:

www:/etc/postfix/ssl# openssl x509 -req -days 1825 -in smtpd.csr -signkey smtpd.key -out smtpd.cert

Signature ok
subject=/C=DE/ST=BY/L=Rosenheim/O=taskbrain/OU=Self Signed TLS Key/CN=smtp.taskbrain.de/emailAddress=postmaster@taskbrain.de
Getting Private key
Enter pass phrase for smtpd.key:

www:/etc/postfix/ssl# openssl rsa -in smtpd.key -out smtpd.key
Enter pass phrase for smtpd.key:
writing RSA key

www:/etc/postfix/ssl# cd ..
www:/etc/postfix# cp -a ssl/smtpd.key ssl/smtpd.cert .
www:/etc/postfix# ls -lt
total 152
-rw-r--r-- 1 root root     1017 2011-11-13 23:58 smtpd.cert
-rw-r----- 1 root root      883 2011-11-13 23:58 smtpd.key
...

www:/etc/postfix# /etc/init.d/postfix restart
Stopping Postfix Mail Transport Agent: postfix.
Starting Postfix Mail Transport Agent: postfix.
www:/etc/postfix# 
rootserver/mail.txt · Last modified: 2012/11/01 19:53 by hgoebl