Ct-mailserver leicht gemacht

aus C't-Server Wiki, der freien Wissensdatenbank

Inhaltsverzeichnis

about

Hier im Forum ist zwar schon ein Mailserver HOWTO aber ich moechte niederschreiben, wie man einen Mailserver aufsetzt mit den Sachen, die schon auf der ct Server CD sind. Dieses HOWTO fasst auch einige Threads des Forums zusammen, auf die ich an entsprechender Stelle verlinken werde. Erklärt wird hier die Mailserverinstallation inklusive Webmail und Backup. Mein Email Nutzer wird max heissen, immer wenn dieser Name auftaucht muesst ihr ihn durch eure Daten ersetzen! Fuer Fragen/Anregungen/Kritik bin ich immer offen, einfach eine PN schicken. Allen viel Spass an der Erweiterung des Artikels.

Anfangen muessen wir natuerlich mit

ctsrvcfg

wir benoetigen aus Mail-Server, -Filter und Helfer

fetchmail
exim4 
cyrus21
spamassassin
squirrelmail

Bemerkung 1: squirrelmail ist bei der 1.03 version des ctsever nicht im ctsrvcfg zu finden

fetchmail holt uns unsere Mails beim Provider ab, gibt diese an unseren MTA exim4 weiter, welcher fuer die Weiterleitung an unseren MDA cyrus21 zustaendig ist. cyrus21 sortiert die Mails dann in die entsprechenden Postfaecher.

cyrus mit unserem provider bekanntmachen

SMTP-SERVER Ihres Providers

smtp.hoster.de
bei web.de ist das zBsp.: smtp.web.de

DNS-Domain fuer abgehende E-Mail

frei lassen
es sei denn ihr habt eine eigene Domain

Benutzername fuer SMTP-Zugriff

max.mustermann

Passwort fuer SMTP-Zugriff

max.mustermanns Passwort
Benutzername und Passwort, sind dieselben, mit denen ihr euch zBsp. auch bei web.de einloggt oder gmx.de oder gmail.com...

benutzer fuer cyrus21 einrichten

imapcreate.pl -u cyrus -p <passwort fuer cyrus> -m max localhost

Die ct schreibt hier das es auch ohne Systembenutzer geht, hat bei mir aber nie geklappt... also legen wir noch einen Systemuser an

adduser max
wenn sich dieser User nicht auf dem Server ueber die Shell einloggen soll dann
adduser max --disabled-login

falls ihr diesen User schon bei Installation angelegt habt, braucht ihr es an dieser Stelle nicht zu tun, das ist nur fuer Leute die auch Mails auf eurem Server abrufen sollen.

fetchmail

fetchmail sorgt dafuer, das unsere Mails von unserem Provider abgeholt werden. Man kann fetchmail auf 2 Arten einrichten, entweder man benutzt das webmin modul oder die konsole ;)

folgende Datei anlegen

/etc/fetchmailrc

und mit diesem Inhalt fuellen

poll pop.hoster.de
        proto pop3
        user "max.mustermann"
        pass "muster"
        is max

bei webmin zu finden unter Server -> Fetchmail-Konfiguration -> Benutzer Hier dem Benutzer max auswaehlen und Hinzufügen eines neuen Servers und dort eure Serverdaten eintragen. In /home/max wird dann eine .fetchmailrc angelegt, diese legen wir als fetchmailrc in /etc ab, weil fetchmail in unserem Fall als Daemon laufen soll.

mv /home/max/.fetchmailrc /etc/fetchmailrc
cd /etc
chmod 600 fetchmailrc

nun noch die Zeit einstellen in welchen Intervallen die Mails abgeholt

set daemon 60
        poll pop.hoster.de
        proto pop3
        user "max.mustermann"
        pass "muster"
        is max

mit set daemon 60 kann man die mails jede Minute vom Server abholen lassen

web.de User sollte das intervall auf 15 setzen, weil der web.de Server nur alle 15 Minuten Zugriffe zulaesst. Danke faultier fuer diesen Vorschlag :)

poll pop3.web.de
        proto pop3
        interval 15
        user "max.mustermann"
        pass "muster"
        is max 


Soweit, sogut. Alles was ich bis jetzt beschrieben habe ist auch in der ct 0405 und dem Netzwerke Spezial zu finden. Ihr sollte probieren eine Mail zu verschicken und zu empfangen, um sicherzugehen, das auch alles laeuft. In var/log/exim/mainlog kann man bei auftreten Schwierigkeiten nachsehen, falls etwas nicht funktioniert und gegebenfalls etwas im Forum posten.

spamassassin

Da nun das Grundgeruest steht, hier nun die "Feinheiten" Natuerlich moechten wir keine Spams bekommen, dazu brauchen wir eigentlich nur Punkt 4.A des HOWTOS von mbreinich

Nachdem spamassassin installiert ist, moechte man es natuerlich auch trainieren, es ist ja ein Bayescher Filter. Es gibt dafuer die Befehle

sa-learn --spam *
sa-learn --ham *

die man in dem jeweiligen Userpostfach ausfuehrt, da man das nicht immer per Hand machen will, habe ich mir ein kleines Shellscript geschrieben. Dazu muss man wissen wo cyrus die Emails ablegt. Im Falle vom User max waere das

/var/spool/cyrus/mail/m/user/max

Das Script heisst bei mir learnspam.sh und wird per Cronjob 1 mal am Tag ausgefuehrt und beinhaltet nix weiter als folgende Zeilen

#!/bin/sh
 
cd /var/spool/cyrus/mail/m/user/max
sa-learn --ham *
cd /var/spool/cyrus/mail/s/user/spam/
sa-learn --spam *

wenn ihr das Script in /home/max abgelegt habt, muesst ihr noch folgende Zeile in euren Crontab hinzufuegen

crontab -e
0  0 * * *      /home/max/learnspam.sh

so wird immer um Mitternacht eine Lernrunde durchgefuehrt. Wir haben natuerlich auch Absender denen wir Vertrauen. Dafuer gibt es eine whitelist-Funktion. Diese kann man ueber Webmin oder ueber den besten Editor der Welt ;) editieren.

/etc/spamassassin/local.cf

dort einfach am Ende

whitelist_from melwood@ctserver.org

einfuegen.

whitelist_from *@ctserver.org 

Wildcards benutzen geht natuerlich auch. Man kann das ganze auch wieder ueber webmin machen.

Server -> SpamAssassin E-Mail-Filter -> Erlaubte und verbotene Absender-E-Mail-Adressen und dann einfach bei Absender-E-Mail-Adressen, die niemals als Spam gelten sollen die gewuenschten Emailadressen hinzufuegen. Wer moechte kann hier auch noch weiter Einstellungen vornehmen. Nachdem wir nun Spamfrei sind, wollen wir nun auch Virenfrei werden.

clam-av

Zuerst muessen wir clamav ueber ctsrvcfg installieren. Zu finden ist das Ganze unter Sicherheit/Verschluesselung

clamav

wir muessen dann noch unsere sources.list editieren

/etc/apt/sources.list

und folgende Zeile ergaenzen

deb http://ftp2.de.debian.org/debian-volatile sarge/volatile main

Es werden 2 Daemons installiert, clam-av und freshclam. Letztere ist dafuer zustaendig, aktuelle Virendefinitionen zu laden.

Damit auch alles funktioniert, muss noch unsere

exim4.conf.template

ein wenig angepasst werden.

/etc/exim4/exim4.conf.template

nach dem Kommentarblock main/02_exim4-config_options

av_scanner = clamd:/var/run/clamav/clamd.ctl

nach dem Komentarblock acl/40_exim4-config_check_data

# reject messages with defect mime
deny
message = Serious MIME defect detected ($demime_reason)
log_message = $sender_host_address tried sending defect MIME
demime = *
condition = ${if >{$demime_errorlevel}{2}{1}{0}}

deny
message = Message contains malware or virus ($malware_name).
log_message = $sender_host_address tried sending $malware_name
demime = *
malware = *

deny
message = Attachment has unsupported file format .$found_extension
log_message = $sender_host_address tried sending mime in format .$found_extension
demime = bat:cmd:com:cpl:dll:exe:pif:scr:vb:vbs

mehr Infos HIER

Wer nun noch moechte, kann optional Webmail installieren.

squirrelmail

Dazu brauchen wir natuerlich ersteinmal einen Webserver.

Wir brauchen wieder einmal ctsrvcfg dort findet man den apache unter

Dienste fuer Inter- und Intranet

apache2

squirrelmail haben wir ja schon am Anfang installiert. Hier nochmal die Bemerkung, das es nicht im ctsrvcfg des ctservers 1.03 dabei ist!

Damit wir squirrelmail auch erreichen koennen brauchen wir noch einen Eintrag in
/etc/apache2/sites-available/default
Alias /webmail/ "/usr/share/squirrelmail/"
<Directory "/usr/share/squirrelmail/">
   DirectoryIndex index.php
   Order deny,allow
   Allow from all
   AddType application/x-httpd-php .php
</Directory>

diesen Teil hab ich von

HIER uebernommen

Besser ist es natuerlich ueber SSL. Ein Zertifikat kann man mit

apache-ssl-certificate

erstellen. Dieses legt man unter

/etc/apache2/ssl/apache.pem
ab
/etc/apache2/ports.conf
den SSL Port fuer Apache hinzufuegen, die Datei sollte dann so aussehen
Listen 80
Listen 443

nun muessen wir noch unsere

/etc/apache2/sites-available/default
etwas anpassen
<VirtualHost server.home.local:443>
    ServerAdmin webmaster@home.local

    SSLEngine on
    SSLCertificateFile /etc/apache2/ssl/apache.pem
    SSLCertificateKeyFile /etc/apache2/ssl/apache.pem

    SetEnvIf User-Agent ".*MSIE.*" \
    nokeepalive ssl-unclean-shutdown \
    downgrade-1.0 force-response-1.0
    ...
</VirtualHost> 

Damit SSL auch richtig funktioniert, muessen wir noch 2 Symlinks erstellen.

cd /etc/apache2/mods-enabled
ln -s ../mods-available/ssl.conf
ln -s ../mods-available/ssl.load

mehr Infos gibst dazu HIER

regelsystem

Nun kann man seine Emails noch filtern. Entweder die Mails von bestimmten Absendern in bestimmte Ordner in seinem Imap Postfach weiterleiten oder Spams alle in ein Postfach verschieben.

nocheinmal muessen wir ctsrvcfg aufrufen

wir benoetigen aus Mail-Server, -Filter und Helfer

websieve
nun haben wir alles ausser procmail installiert ;)

Hinweis: procmail ist auch ein MDA mit komplexen Filtermoeglichkeiten, aber die ct selber sagt das procmail die Konfiguration des Emailservers lahmlegen kann.

Man kann sich nun im Squirrelmail einloggen und dort unter Optionen Emailfilter erstellen. Wenn dies nicht geht macht einfach ein

apt-get install libsasl2-modules

das steht HIER Danke melwood ;)

Fuer diejenigen, die lieber den besten editor der Welt nehmen, muss man hier

/var/spool/sieve/<anfangsbuchtabe_des_postfaches>/<postfachname>

eine beliebige Datei erstellen, die dann per Symlink auf eine Datei die default verweist und die im gleichen Ordner liegt.

Gehoeren sollten beiden Dateien cyrus

mehr Informationen zum Sievefiles erstellen findet ihr HIER

backup

Wenn man ein Backup machen moechte, sollte man wissen was man alles backuppen muss. Siehe HIER

Ich habe mir ein kleines Shellscript geschrieben, welches genau wie das Spamlearnscript als Cronjob ausgefuehrt wird und auch wieder bei max im homedir liegt

#!/bin/sh
 
cd /var/spool/cyrus/mail
cp -rp * /mnt/hdd1/emailbackup/mails
cd /var/lib/cyrus
cp -rp * /mnt/hdd1/emailbackup/configs


crontab -e

sollte dann so aussehen

0  0 * * *      /home/max/learnspam.sh
0  0 * * *      /home/max/mailbackup.sh

so das wars :)

Viel Spass mit dem eigenen Mailserver und VIELEN VIELEN DANK AN ALL DIE MIR MIT IHRER HILFE ERMOEGLICHT HABEN DIESES HOWTO ZU SCHREIBEN

autor(en)

moleman