HowTo: Postfix mit SSL / TLS einrichten

Wer den MTA Postix mit SSL bzw. TLS betreiben will, steht oft vor einigen kleinen Problemchen z.B. dem erstellen der SSL Zertifikate. Um die Sache mal ein wenig näher zu beleuchten gibt es heute hier eine kleine Anleitung, wie man Postfix fit macht für SSL bzw. den TLS Versand.

So lernt unser Postfix mit TLS umzugehen!

Also was ist TLS? TLS steht für „Transport Layer Security“ und ist IMHO eine Weiterentwicklung von SSL d.h. ein Protokoll was eine verschlüsselte Übertragung von Daten ermöglicht, hier explizit im Mailverkehr auf Seiten des SMTP in Kombination mit unserem MTA Postfix. Ich erkläre das hier für ein SuSE OS, sollte aber auch bei anderen Linux Derivaten mehr oder minder so funktionieren. Also labern wir nicht lange rum und fangen direkt mal an! Vorher sollte aber sichergestellt sein, dass ihr via Yast die entsprechenden (Open)SSL Pakete installiert habt. Wichtig ist auch, dass ihr ein Postfix habt, was TLS unterstützt. Wie man das selber mit TLS Support kompiliert erfahrt ihr hier.

Wir gehen nach /etc/postfix (wie man Verzeichnisse wechselt muss ich wo nicht erklären????) und knöpfen uns mal die main.cf vor, die wir um ein bisschen Text erweitern z.B. mit dem Editor, ergo geben wir in der Kommandozeile im benannten Verzeichnis ein:

vi main.cf

Dann gehen wir ganz nach unten und fügen folgende Zeilen ein:

#TLS Support
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/smtpd.key
smtpd_tls_cert_file = /etc/postfix/certs/smtpd.crt
smtpd_tls_CAfile = /etc/postfix/certs/cacert.pem
smtpd_tls_loglevel = 1
smtpd_tls_received_header = yes
smtpd_tls_session_cache_timeout = 3600s
tls_random_source = dev:/dev/urandom

Jetzt beenden wir den Spaß mit einem Tastendruck auf ESC und dann einen :wq! und nun sollten wir wieder auf der Kommandozeile sein. Alternativ kann man die Änderungen auch im Midnight Commander oder sonstigem Editor machen, ja gar mit postconf aber das führt zu weit.

Gut, nun haben wir die halbe Miete, wir haben Postfix schon einmal für TLS konfiguriert, was wir nun brauchen ist noch ein hübsches Zertifikat. Daher erzeugen wir jetzt das in der Konfiguration hinterlegte Verzeichnis „certs“ (viele nennen es auch einfach nur ssl) und dies erfolgt in der Kommandozeile via

mkdir certs

und dann wechseln in das neu erstellte Verzeichnis:

cd certs

So nun gehts los mit den Zertifikaten und hier fangen wir beim Private Key an:

openssl genrsa -des3 -rand /etc/hosts -out smtpd.key 1024

Wenn ihr das eingegeben habt, werdet ihr nach einem „Passphrase“ gefragt, nehmt da einen kleinen zusammen geschriebenene Satz wie z.B. „ichessegernnudeln“ oder „dafrassdiekuhdasschaf“ – diesen Passphrase kennt man auch vom W-Lan einrichten mit WPA, dass aber nur so als Gedanke. 😉

So dann geht es weiter mit Rechte setzen, wir wollen ja, dass nicht jeder auf den erzeugen Key zugreifen kann:

chmod 600 smtpd.key

Dann fangen wir mal an das Zertifikat zu erzeugen:

openssl req -new -key smtpd.key -out smtpd.csr

Hier kommt dann eine Abfrage, d.h. man muss dort Daten hinterlegen und damit es da keine Probleme gibt, hier mal ein Beispiel wie man das ausfüllen kann:

Country Name (2 letter code) [AU]:DE
State or Province Name (full name) [Some-State]:Saxony
Locality Name (eg, city) []:Berlin
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Mustermann GmbH
Organizational Unit Name (eg, section) []:Technik
Common Name (eg, YOUR name) []:mail.meinewunschdomain.de
Email Address []:technik@maxmustermann-it-service.de

Was ist wichtig? Country Name ist klar, wir leben in der BRD als geben wir da DE ein, Staaten oder Provinzen nehmen wir das Bundesland, in dem Fall Saxony für Sachsen. Naja der Rest sollte klar sein, wichtig wird es dann beim „Common Name“ denn dort gebt ihr eure entsprechende Host Domain ein. Dann geht es weiter, nach der Eingabe den oben benannten Passphrase wieder eingeben:

openssl x509 -req -days 365 -in smtpd.csr -signkey smtpd.key -out smtpd.crt
openssl rsa -in smtpd.key -out smtpd.key.unencrypted

Jetzt nennen wir den Key noch ein bisschen um:

mv -f smtpd.key.unencrypted smtpd.key

Und nun machen wir noch eine Autogrammstunde 😉

openssl req -new -x509 -extensions v3_ca -keyout cakey.pem -out cacert.pem -days 365

Wir müssen nun noch Postfix neu starten, dass können wir mit einem einfachen postfix reload erledigen, damit die neuen Einstellungen auch aktiv werden. Testen könnt ihr auch ob es funktioniert, am besten mit einem Windows PC auf „Start“ dann auf „Ausführen“ gehen und dort tippt ihr dann ein „telnet mein.hostname.de 25“, ganz klar dort euren echten Mailserver z.B. smtp.muellermuster.de eintragen. Wenn der Mailserver sich meldet, dann melden wir uns quasi auch mit einem „EHLO“ gefolgt vom Hostname. Nun bekommen wir eine Auflistung der möglichen „Befehle“ hier ist auch STARTTLS dabei. Genau das tippen wir nun auch so ein und dann sollte das so aussehen:
posftls1

Sebastian ist IT-Techniker sowie Berater aus Leidenschaft. Er betreibt einen Computerservice in Leipzig, bei dem die individuellen Wünsche & Visionen des Kunden im Mittelpunkt stehen.

One Response
  • Christian
    Nov 20, 2014

    Hallo,

    vielen Dank für die tolle Anleitung.

    Ich werde TLS und PFS für Postfix einrichten mit einem „echten“ Zertifikat von einer CA.

    Mir ist aber unklar, welche Dateien ich dafür brauche.

    .crt, .pem, .key?

    Viele Grüße

    Christian Nov 20, 2014
    Antworten

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.