Howto: Debian Mailserver

Dieses Howto befasst sich mit der Einrichtung eines Standalone Mailservers unter Debian GNU/Linux 4.0 unter Verwendung der folgenden Software:

Postfix, Spamassassin, Procmail, Courier-IMAP/POP3, Squirrelmail(optional)

1. Installation der Pakete

Zur Installation der benötigten Pakete bedienen wir uns dem Befehl apt-get.

apt-get install postfix postfix-tls courier-imap courier-pop3 procmail spamassassin spamc dcc-client razor pyzor squirrelmail libsasl2 libsasl2-modules sasl2-bin

Die Nachfrage, bei der Installation, über das anlegen einer www-Administrationsoberfläche können sie getrost mit „Nein“ beantworten.
Als Postfix Konfigurationsart entscheiden wir uns für „Internet-Server“.
Der Mailname des Systems sollte unbedingt der FQDN ihres Servers sein.

2. Konfiguration von Postfix

Nach erfolgreicher Installation der Pakete geht es nun an die Konfiguration von Postfix. Postfix ist der Mail Transfer Agent und wird für jede „Fremdkommunikation“ zuständig sein. Wir werden Postfix so konfigurieren, dass es Mails für mehrere Domains entgegen nimmt.
Öffnen sie die Datei /etc/postfix/main.cf mit einem Editor ihrer Wahl und übernehmen sie das Listing:

# SMTP-Banner
smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
# deaktiviere die Benachrichtigung lokaler Nutzer, da es vermutlich keine gibt

biff = no
# deaktiviere Autovervollständigung um Verwirrung zu vermeiden

append_dot_mydomain = no

delay_warning_time = 4h
# Ihr Hostname

myhostname = <Ihr FQDN>
# Mailaliase

alias_maps = hash:/etc/aliases

alias_database = hash:/etc/aliases
# Defaultdomain

myorigin = /etc/mailname
# Alle nicht virtuellen Domains, für die ihr Server zuständig sein soll

mydestination = <Ihr FQDN>, localhost.localdomain, localhost
# Nur Rechner aus diesen Netzen dürfen Mails ohne Authentifizierung versenden

mynetworks = 127.0.0.0/8

# Unsere Mailboxen haben kein Größenlimit

mailbox_size_limit = 0

# Setzt das Trennzeichen zwischen dem Benutzernamen und der Addresserweiterung

recipient_delimiter = +

# Postfix soll auf über alle Netzwerkkarten erreichbar sein

inet_interfaces = all

# Definiere die Maps der Virtuellen Domains

virtual_alias_maps = hash:/etc/postfix/virtual_alias

virtual_alias_domains = /etc/postfix/virtual_domains

# Verwende SASL (SMTP-AUTH)

smtpd_sasl_auth_enable = yes

smtpd_sasl_security_options = noanonymous

smtpd_sasl_local_domain = $myhostname
# Erlaube Outlook den Zugriff

broken_sasl_auth_clients = yes
# Nehme keine Mails an, wenn der sendende Rechner nicht entweder innerhalb von
# my_networks ist, oder sich per SASL authentifiziert hat. Zusätzlich wird keine Mail
# angenommen, von Domains, die weder einen A, noch einen MX-Record haben und für die der
# Server nicht zuständig ist, davon ausgenommen sind alle Rechner in my_networks und alle
# SASL authentifzierten.

smtpd_recipient_restrictions = permit_mynetworks, reject_unknown_recipient_domain, permit_sasl_authenticated, reject_unauth_destination
# Verlange vom Kommunikationspartner einen validen FQDN als Hostnamen, wird dieser nicht
# gegeben, wird die Mail nicht akzeptiert. Dies vermindert die Spamflut erheblich, da viele
# Spamgateways schlampig Programmiert sind.

smtpd_helo_restrictions = permit_mynetworks, reject_invalid_hostname, reject_non_fqdn_hostname, reject_unknown_hostname
# Der Server soll keine Mails versenden, deren Domain er nicht kennt

smtpd_sender_restrictions = reject_unknown_sender_domain
# HELO wird zur pflicht

smtpd_helo_required = yes
# Verlange strikte RFC-Einhaltung

strict_rfc821_envelopes = yes
# Verwende das Maildir-Format

home_mailbox = Maildir/

 

Damit ist die Konfiguration von Postfix abgeschlossen, überprüfen Sie die Syntax mittels

postfix check

Kommt keine Ausgabe, ist alles in Ordnung und Sie können Postfix per

postfix reload

die neue Konfiguration beibringen.

3. Konfiguration der virtuellen Domains

Legen sie die Dateien /etc/postfix/virtual_alias und /etc/postfix/virtual_domains an.
Editieren sie die zuerst die Datei virtual_domains mit einem beliebigen Editor.
Speichern Sie in der Datei alle ihre Domains durch Kommata getrennt. Zeilenumbrüche sind erlaubt.

Eine virtual_domains Datei könnte z.B. so aussehen:

domain1.de,

domain2.com,

domain3.net

 

Als nächstes bearbeiten wir die Datei virtual_alias. Öffnen sie auch diese Datei mit einem beliebigen Texteditor. Das Format dieser Datei ist im Vergleich zur virtual_domains Datei höchst kompliziert. Es müssen Paare aus Quelle und Ziel(en) gebildet werden. Auf der linken Seite steht die volle Adresse, z.B. test@domain1.de und durch ein Leerzeichen oder einen Tabulatorvorschub getrennt das Ziel, z.B. das Postfach des Benutzers user1. Das sähe dann so aus:

test@domain1.de user1

 

Sie können einer Adresse auch mehrere Empfänger zuordnen. Dazu trennen sie die Empfänger wieder mit Kommata, z.B. so:

test@domain1.de user1,user2,info@domain2.com

 

Wie sie in diesem Beispiel sehen, können sie die Mails auch an eine andere Mailadresse weiterleiten.
Nachdem die Datei fertiggestellt wurde, speichern sie diese und konvertieren Sie sie in das Datenbankformat von Postfix mittels:

postmap /etc/postfix/virtual_alias

Anschließend führen sie erneut eine Konfigurationüberprüfung durch:

postfix check

Alles Okay? Dann laden sie die Konfiguration neu:

postfix reload

Weiter mit der Einrichtung von Courier.

3. Die Einrichtung von Courier

Das war’s auch schon ;)

4. Konfiguration von SASL

Als erstes müssen wir SASL „aktvieren“, da es nach der Installation standardmäßig deaktiviert ist. Dazu öffnen wir die Datei /etc/default/saslauthd mit einem beliebigen Editor.

Die Zeile

START=no

muss in

START=yes

geändert werden.
Anschließend sollte die Zeile

OPTIONS=“-c“

in

OPTIONS=”-c -m /var/spool/postfix/var/run/saslauthd”

geändert werden. Dies ist nötig, da Postfix in einem Chroot-Käfig läuft und auf den Standardsocket von SASL nicht zugreifen kann!
Im Chroot-Käfig von Postfix fehlen ein paar Ordner, diese können wir von dpkg erzeugen lassen:

dpkg-statoverride –add root sasl 710 /var/spool/postfix/var/run/saslauthd

Nun fügen wir noch Postfix zur Gruppe Sasl hinzu, damit ersteres auch auf letzteres zugreifen kann

adduser postfix sasl

Anschließend kann der saslauthd gestartet werden:

/etc/init.d/saslauthd start

Fertig. Die SMTP-AUTH sollte nun laufen.

5. Squirrelmail einrichten

Squirrelmail ist ein IMAP-Webclient.
Um Squirrelmail zu aktivieren, müssen wir einen Symlink setzen.

ln -s /etc/squirrelmail/apache.conf /etc/apache2/conf.d

Apache2 berücksichtigt alle Konfigurationsdateien im Ordner /etc/apache2/conf.d. Die Datei apache.conf konifguriert Apache2 so, dass ein Zugriff auf Squirrelmail möglich ist.
Nach einem Restart von Apache2 ist Squirrelmail sofort verfügbar.

apache2ctl restart

Squirrelmail ist nun einsatzbereit und unter

http://<FQDN>/squirrelmail

verfügbar.

6. Einrichtung von Spamassassin

Als erstes aktivieren wir Spamassassin, da auch dieses bei der Standardinstallation deaktviert ist. Dazu bearbeiten wir die Datei /etc/default/spamassassin mit einem beliebigen Texteditor.
Ändern sie die Zeile

ENABLED=0

in

ENABLED=1

und starten sie Spamassassin anschließend:

/etc/init.d/spamassassin start

Ich werde hier nicht sehr detailliert auf die Konfiguration von Spamassassin eingehen, da dies den Rahmen dieses Howtos erheblich sprengen würde.

Erstellen wir Razor Account

rm /etc/razor/razor-agent.conf
razor-admin -create
razor-admin -create
razor-admin -register

Wenn beim Erstellen des Kontos Fehler auftreten, ist es eventuell notwendig es mehrfach zu versuchen, da der Server eventuell ausgelastet ist.

Anschließend editieren wir /root/.razor/razor-agent.conf wieder mit einem Texteditor und setzen den Debuglevel auf Null.

nun bearbeiten wir die Konfigurationsdatei von Spamassassin (/etc/spamassassin/local.cf) mit einem Texteditor.
Hängen Sie die folgenden Zeilen an die Datei an:

# Verwende Razor
use_razor2 1
# Verwende Pyzor
use_pyzor 1
# Verwende DCC
use_dcc 1
# Verwende Bayes Filter
use_bayes 1
use_bayes_rules 1
bayes_auto_learn 1
# Ab diesem Score wird eine Mail als SPAM markiert

required_score 5.0

Mit dem letzten Parameter werden sie vermutlich ein wenig rumspielen wollen, da die Einstufung ob eine Mail Spam ist oder nicht, von ihnen und nicht von mir abhängt.

Anschließend muss Spamassassin noch neugestartet werden:

/etc/init.d/spamassassin restart

Die Konfiguration von Spamassassin ist damit abgeschlossen.
Natürlich lässt sich dort noch eine ganze menge verfeinern, ich empfehle dazu das Buch „Spamassassin – Leitfaden zu Konfiguration, Integration und Einsatz“ von Alistair McDonald aus dem Addison-Wesley Verlag.

7. Konfiguration von Procmail als Mailfilter

Da Spamassassin die Mails nur markiert, sie jedoch nicht sortiert, müssen wir hierzu ein weiteres Programm bemühen. Procmail ist ein sehr flexibler Mailfilter. Ich werde hier nur kurz zeigen, wie man damit Spammails sortieren kann und alle Mails an Spamassassin weiter reicht.

Damit unsere Mails überhaupt von Spamassassin geprüft werden, müssen wir unsere Mail dorthin weiterleiten, dazwischen befindet sich Procmail als zentrale „Steuerstelle“ der Mails.

Diese Kette schaut dann so aus:

Postfix -> Procmail -> Spamassassin -> Procmail -> Mailbox

Als erstes legen wir für alle Benutzer, deren Mails geprüft werden sollen eine .forward-Datei im jeweiligen Heimatverzeichnis an.
Hier der Inhalt:

| /usr/bin/procmail

Dies sorgt dafür, dass alle Mails durch eine sogenannte Pipe an Procmail geleitet werden. Nun ist es an der Zeit Procmail zu konfigurieren. Dazu benötigt jeder Benutzer eine .procmailrc Datei in seinem Heimatverzeichnis. Der Inhalt:

SHELL=/bin/bash

HOME=/home/<USER>

MAILDIR=HOME/Maildir

DEFAULT=HOME/Maildir

 

:0fw

| /usr/bin/spamc

 

:0:

* ^X-Spam-Status: Yes

HOME/Maildir/.Junk/

 

:0:

*

Procmail wird angewiesen folgendes zu tun:
Als erstes wird jede Mail an /usr/bin/spamc (also Spamassassin) geleitet und von diesem gescannt. Als nächstes wird das Ergebnis des Scans überprüft. Ist im Mailheader die Zeile

X-Spam-Status: Yes

zu finden, so wird die Mail in den Ordner Junk einsortiert.
Alle weiteren Mails landen ganz normal im Maildir.

8. Schlusswort

Ich hoffe ich konnte ihnen einen guten Einblick in die Konfiguration eines Mailservers unter Debian GNU/Linux 4.0 bieten und gebe hiermit sämtliche Rechte an diesem Werk ab, insofern sie nicht kommerziell genutzt werden.


3 Reaktionen zu “Howto: Debian Mailserver”

  1. informant

    Hallo,
    ich möchte anmerken, dass borken_sasl_client nichts direkt mit Outlook zu tun hat, sondern generell mit dem EHLO.

    Ältere Clients verlangen eine Antwort vom Server in Form von: “250 AUTH=mechanism-list” und nicht die jetzt verwendete Art: “250 AUTH mechanism-list”

    Ansonsten gute Anleitung.

  2. Oliver Herms

    Danke für den Kommentar und die Info!
    Vermutlich ist Microsoft da ein wenig hängen geblieben, was die das neue Format der Meldung angeht. Wie dem auch sei, ich werde es am Wochenende korrigieren!

    Vielen Dank.

  3. Manuel Clement

    Sehr gute Anleitung ;-)

Einen Kommentar schreiben