Halli Leute! Vielleicht habt ihr es schon gemerkt, dass ich mir einen neuen Server einrichte ,denn heute gibts ne Anleitung, wie ich mir Postfix mit Spamassasin und Procmail einrichte, damit mein Mailserver nicht mehr so mit Spam überschüttet wird.
Voraussetzungen
Diese Anleitung ist für Debian 7 Wheezy geschrieben, sollte aber auch auf anderen Debian basierten Systemen funktionieren. Standardmäßig ist exim als Mailserver installiert. Die Installation von Postfix wird diesen automatisch entfernen, da ein Server keine zwei Mailserver haben darf. Für die Anleitung wird ein Root-Zugriff benötigt. Als Editor verwende ich vim (das darf euch aber reichlich egal sein ;)). Grundverständnisse von Konsole und das Bearbeiten von Dateien setzte ich aus gegeben voraus.
Der Server beherbergt verschiedene Domains und Webseiten und verschiedenste Postfächer und Weiterleitungen.
Postfix
Postfix ist ein mächtiger Mailserver der unsere Postfächer und Domains verwaltet. Weitere Informationen über Postfix sind hier zu finden: Wikipediaeintrag zu Postfix.
Ich habe mich für Postfix entschieden, da dies der quasi Standard bei Linux-Maschinen ist. Ich bin mir sicher, es gibt viele schöne Alternativen, aber ich habe mich bereits sehr an Postfix gewöhnt.
Postfix Installation
Zunächst müssen wir uns natürlich erst mal Postfix installieren und konfigurieren.
aptitude install postfix
Postfix wird installiert und eine Installationsprozedur wird gestartet. Zunächst soll man den Typ der Mailkonfiguration wählen:
- No configuration
- Internet Site
- Internet with smarthost
- Satelite system
- Local only
Wir wählen natürlich „Internet Site“. Anschließend fragt die Installation welches unser mail name ist. Dies ist in der Regel eine Domain. Da wir aber mehrere Domains mit dem Server abhandeln wollen, setzten wir hier eine Defaultadresse (sucht euch eine eurer Domains aus). Das wars auch schon mit der Installation.
Postfix konfiguration
Zunächst muss festgelegt werden, für welche Domains Emails akzeptiert werden sollen. Ich verwalte dies über eine extra Datei. Dazu erstellen wir zunächst einen Ordner und dann die entsprechende Datei:
mkdir /etc/postfix/virtual/
vim /etc/postfix/virtual/domains
In der Datei sollte eine Liste von Domains stehen, für die der Mailserver Mails akzeptieren soll. Beispielsweise also etwas wie das:
domain1.net
domain1.de
domain2.de
domain3.com
Nun müssen wir eine Datei anelgen, in dem die Emailweiterleitungen bzw. Konten verwaltet werden.
vim /etc/postfix/virtual/addresses
Eine Beispielkonfiguration könnte wie folgt aussehen:
#################################
# #
# domain1.de #
# #
#################################
domain1.de DOMAIN
@domain1.de nichtempfehlenswert@gmx.de
mail@domain1.de blablub@gmail.com
hans@domain1.de hans@localhost
Die Bedeutung der Konfiguration:
- # : Dies ist ein stink normaler Kommentar, damit man sich in seiner Konfiguration auch ein bisschen zurechtfindet.
- domain1.de DOMAIN : Dies legt die Domain fest. Für jede Domain die berücksichtigt werden soll, muss ein solcher Identifyer in der Konfiguration vorhanden sein.
- @domain1.de : Diese Zeile würde alle Emails an die Emailadresse nichtempfehlenswert@gmx.de weiterleiten. Dies ist, wie die Email schon sagt nicht wirklich empfehlenswert, da das ein hohes Spamaufkommen provoziert.
- mail@domain1.de wird an die Adresse blablub@gmail.de weitergeleitet
- hans@domain1.de wird an das lokale Emailkonto hans@localhost weitergeleitet
Der Postfix weiß natürlich noch nichts von unseren neu erstellten Dateien, deshalb müssen wir diese zunächst in der Konfigurationsdatei vermerken. Die Datei /etc/postfix/main.cf muss wie folgt verändert werden:
mydestination = somedomain.de, localhost.localdomain, localhost, /etc/postfix/virtual/domains
virtual_maps = hash:/etc/postfix/virtual/addresses
Der Eintrag mydestination sollte bereits vorhanden sein. virtual_maps musste ich bei mir erst erstellen. Nun weiß Postfix schon einmal über unsere Konfiugrationsdateien Bescheid. Nun müssen wir aber noch zwei Befehle ausführen:
postmap /etc/postfix/virtual/addresses
/etc/init.d/postfix reload
Der erste Befehl macht die Adressen in der Datei „addresses“ für postfix verfügbar. Dieser Befehl muss bei jeder Änderung durchgeführt werden! Schreibt euch diesen Befehl am besten gleich in einen Kommentar in die Datei „addresses“ mit rein, damit ihr ihn nicht vergesst. Der zweite Befehl startet den Postfix-Mailserver neu und macht die Änderungen an der Konfiguration sichtbar.
Nun sollte bereits ein Mailempfang möglich sein. Testet dies indem ihr euch selbst eine Email schickt.
Beachtet dazu immer /var/log/mail.info auf etwaige Fehler.
TLS für Postfix einrichten
Um die Kommunikation verschlüsselt ablaufen zu lassen, ist eine TLS-Verschlüsselung dringend zu empfehlen. Es gibt kostenlose Zertifikate, so z.B. von www.startssl.com. Diese sind gültig und werden von nahezu jedem Client angenommen. Dazu müsst ihr euch zunächst einen Account bei startssl.com einrichten. Lasst euch nicht von dem überaus hässlichen Design abschrecken. startssl.com bietet einen kostenlosen Service, der einfach nur Gold wert ist.
Wenn ihr einen Account habt, müsst ihr zunächst die Domain eures Mailservers validieren. Dazu einfach im Usermenü auf „Validation Wizzard“ klicken und anschließend „Domain Name Validation“. Füllt nun alles aus und lasst euch eine Email zuschicken (dazu müsst ihr die angezeigte Email natürlich zunächst in eure /etc/postfix/virtual/addresses eintragen).
Nachdem die Validierung erfolgt ist, klickt auf „Certificate Wizzard“ und wählt anschließend „Web-Server Validation“ aus. Der erste Schritt kann übersprungen werden, da wir uns unser eigenes Zertifikat erstellen:
mkdir /etc/postfix/certs
cd /etc/postfix/certs
openssl req -new -newkey rsa:4048 -nodes -keyout private.key -out website.de.csr
chmod 400 private.key
Mit dem ersten Befehl erstellt ihr zunächst ein neues Verzeichnis für die Zertifikate. Anschließend wechseln wir in dieses Verzeichnis mit „cd“. Nun erstellen wir uns einen eigenen privaten Schlüssel und gleichzeitig auch ein csr (Request-Zertifikat für startssl.com). Ihr werdet einige Dinge gefragt, füllt diese so gut wie möglich aus. Die optionalen Angaben können ausgelassen werden. Einzig bei „Common Name“ müsst ihr die Domain des Mailservers eintragen. Mit dem letzten Befehl ändern wir die rechte des privaten Schlüssels. Sichert diesen und stellt außerdem sicher, dass niemand in den Besitz dieses Schlüssels gerät!
Bei Startssl solltet ihr euch nun bei dem Schritt „Submit Certificate Request“ befinden. Öffnet die Date „website.de.csr“ und kopiert den Inhalt in das Textfeld.
Folgt nun den Schritten bis ihr euer Zertifikat in einem Textfeld angezeigt bekommt. Kopiert dieses und erstellt auf eurem Server im Verzeichnis certs die Datei „website.de.crt“ und kopiert den kompletten Inhalt in diese Datei und speichert diese.
Nun laden wir mit dem Befehl
wget --no-check-certificate https://www.startssl.com/certs/ca-bundle.pem -O startssl-ca-bundle.pem
das Zertifikatbundel von startssl herunter. Damit sagen wir unserem Server, das wir Startssl vertrauen. Führt diesen Befehl wieder im certs-Ordner aus.
Nun müssen wir der Konfiguration von Postfix nur noch die Zertifikatdaten geben. Die Konfiguration ist manchmal etwas anders, hier gibt es jetzt mal meine, damit ihr vergleichen könnt (die Konfiguration ist wieder in der main.cf).
# TLS parameters
# See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for
# information on enabling SSL in the smtp client.
smtpd_tls_auth_only = no
smtp_use_tls = yes
smtpd_use_tls = yes
smtp_tls_note_starttls_offer = yes
smtpd_tls_key_file = /etc/postfix/certs/private.key
smtpd_tls_cert_file = /etc/postfix/certs/website.de.crt
smtpd_tls_CAfile = /etc/postfix/certs/startssl-ca-bundle.pem
smtp_tls_CAfile = $smtpd_tls_CAfile
smtpd_tls_loglevel = 1
smtpd_tls_received_header = yes
smtpd_tls_session_cache_timeout = 3600s
tls_random_source = dev:/dev/urandom
Es ist geschafft. Ab hier funktioniert schon mal der Postfix für den Mailversand. Alle weiteren Schritte sind nun nicht mehr zwingend erforderlich, werden jedoch dringend empfohlen!
Postfix abhärten
Um das System ein wenig widerstandsfähiger gegen Spam zu machen, hier ein paar kleine Einstellungen, die ihr in die main.cf eintragen könnt. Bitte testet dann aber den Mailversand, ob noch alles korrekt funktioniert. Die Doku dazu findet ihr hier: Postfix Doku
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
broken_sasl_auth_clients = yes
smtpd_recipient_restrictions = permit_sasl_authenticated, permit_mynetworks, reject_unauth_destination
smtpd_helo_restrictions = reject_invalid_helo_hostname, reject_non_fqdn_helo_hostname, reject_unknown_helo_hostname
Postfix IPv6 fähig machen
Tja, ich glaube, ich brauche euch nicht erklären, warum es langsam echt nötig wird, die Server für IPv6 vorzubereiten. Für diese Anleitung wird vorausgesetzt, dass euer Server bereits IPV6 kann. Vergesst auch nicht, den DNS-Eintrag eurer Domain richtig einzustellen. Dem Mailserver bringen wir das Ganze dann auch noch bei :).
Um den Mailserver richtig zu konfigurieren ist eigentlich nicht viel nötig. Es reicht folgender Eintrag:
inet_protocols = all
smtp_bind_address6 = 2a01:4f8:202:5028::2
Mit „inet_protocols“ legt ihr fest, dass auch IPv6 akzeptiert werden soll. Mit dem Eintrag „smtp_bind_address6“ legt ihr die IPv6-Adresse des Mailservers fest. Dieser Eintrag sollte mit dem Eintrag im DNS-Record übereinstimmen. Um zu testen, ob alles klappt, könnt ihr temporär „inet_protocols = ipv6“ einstellen und eine Email an eine @gmail.com-Adresse schicken. Bei Gmail bin ich mir sicher, dass diese auch IPv6 akzeptieren. Schaut auch immer wieder ins Logfile. Kommt die Mail an, hat alles geklappt und euer Server ist richtig konfiguriert. Stellt anschließend wieder auf „all“ um. Es ist zwingend notwendig, den Mailserver neu zu starten, nachdem das Protokoll geändert wurde. Ein Reload ist nicht ausreichend.
Zusammenfassung
Postfix ist soweit eingerichtet. Je nach Umfang hat man damit schon wirklich viel zu tun, aber die Einstellung lohnt sich auf jeden Fall. Beim Schreiben der Anleitung hab ich die Erfahrung gemacht, dass an diversen anderen Stellen noch weitere Einstellungen gemacht werden müssen. So muss z.B. der DNS-Server umgestellt werden. Wie dieser eingerichtet wird, werde ich an einer anderen Stelle noch weiter erläutern.
Auch die Installation von Spamassassin und Procmail werde ich in einem anderen Beitrag verwursten. Wie dies geht könnt ihr im Beitrag Spamassassin für Postfix auf Debian 7 einrichten nachlesen.