Ct-mailserver leicht gemacht
aus C't-Server Wiki, der freien Wissensdatenbank
Nächstältere Version→ | ←Nächstjüngere Version
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 erstzen!
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 ensprechenden 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 maxwenn 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 max auswaehlen und Hinzufügen eines neuen Servers und dort eure Serverdaten eintragen, in /home/max wird dann eine .fetchmailrc angelegt, diese legen wir dann in /etc ab, weil fetchmail 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. thx 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.
spamassassin
Da nun das Grundgeruest steht, hier nun die "Feinheiten"
Natuerlich moechten wir keine Spams bekommen, dazu brauchen wir eigentlich nur dieses HOWTO von supermihi
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 uns beinhaltet nix weiter als folgnde 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. Es gibnt wieder die Moeglichkeit ueber Webmin oder ueber den besten Editor der Welt ;)
/etc/spamassassin/local.cf
dort einfach am Ende
whitelist_from melwood@ctserver.org
einfuegen
whitelist_from *@ctserver.org
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 wie clamav ueber ueber ctsrcfg 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 noch unsere
exim.conf.template
ein wenig anpassen
/etc/exim4/exim4.conf.template
nach dem Kommentarblock main/02_exim4-config-options
av_scanner = clamd:/var/run/clamav/clamd.ctl
nach dem Komentarblock acl40_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
da brauchen wir wieder ctsrvcfg
Dienste fuer Inter- und Intranet
apache2
squirrelmail haben wir ja schon am Anfang installiert, aber 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, mit
apache-ssl-certificate
ein SSL Zertifikat erstellen und unter
/etc/apache2/ssl/apache.pemablegen
/etc/apache2/ports.confden SSL Port hinzufuegen, die Datei sollte dann so aussehen
Listen 80 Listen 443
nun muessen wir noch unsere
/etc/apache2/sites-available/defaultetwas anpassen
</VirtualHost> <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>
und den ssl noch enablen
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 Odner 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
websievenun 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
/var/spool/sieve/<anfangsbuchtabe_des_postfaches>/<postfachname>
hier eine beliebige Datei erstellen, die dann per Symlink auf eine Datei die default heisst im gleichen Ordner zeigt
gehoeren sollten beiden files 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
moleman 20:52, 24. Feb 2006 (CET)