Debian Mailserver Howto

Debian Mailserver Howto
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.

Code:
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:

Code:
# 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 = 
# 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 = , 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

Code:
postfix check

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

Code:
postfix reload

die neue Konfiguration beibringen.

Jetzt müssen wir Postfix noch kurz beibringen, wie es auf SASL zur Authentifizierung zugreifen kann.
Dazu legen wir die Datei /etc/postfix/sasl/smtpd.conf mit folgendem Inhalt an:

Code:
pwcheck_method: saslauthd
mech_list: digest-md5 cram-md5 login plain
autotransition:true
saslauthd_path: /var/run/saslauthd/mux
pwcheck_method: saslauthd

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:

Code:
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:

Code:
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:

Code:
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:

Code:
postmap /etc/postfix/virtual_alias

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

Code:
postfix check

Alles Okay? Dann laden sie die Konfiguration neu:

Code:
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

Code:
START=no

muss in

Code:
START=yes

geändert werden.
Anschließend sollte die Zeile

Code:
OPTIONS=“-c“

in

Code:
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:

Code:
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

Code:
adduser postfix sasl

Anschließend kann der saslauthd gestartet werden:

Code:
/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.

Code:
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.

Code:
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

Code:
ENABLED=0

in

Code:
ENABLED=1

und starten sie Spamassassin anschließend:

Code:
/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

Code:
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:

Code:
# 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:

Code:
/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:

Code:
| /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:

Code:
SHELL=/bin/bash
HOME=/home/
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

Code:
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.

© Copyleft 2007 by Oliver H.