Postfix – TLS / SSL Verschlüsselung aktivieren

In aller Munde ist es stets, dass man verschlüsselte Verbindungen nutzen soll. Auch beim Versand von E-Mails sollte man auf Verschlüsselung setzen, damit die Kommunikation entsprechend sicher abgewickelt wird. Auch Postfix bietet diese Möglichkeit.

Verschlüsselung der Verbindung zwischen Client und Server

Bei Ubuntu werden standardmäßig einige selbstsignierte Zertifikate mitgeliefert, welche per Default auch schon im Postfix hinterlegt sind.

smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key

Benutzt man diese, kommen bei allen gängigen E-Mail Clients jedoch Hinweise, dass die Verbindung eventuell nicht sicher sei. Beseitzt man kein gültiges Zertifikat, kann man hier auch ein Zertifikat von LetsEncrypt verwenden. Mehr dazu kann man auch im Artikel “kostenfreie TLS-Zertifikate mit Let’s Encrypt” lesen. Wie man ein konstenpflichtiges Zertifkat erwerben kann, wird zudem im Artikel “SSL leicht gemacht – CSR und Keyfile erstellen und Zertifikat ordern” beschrieben. Alternativ kann hierzu auch unser Support kontaktiert werden.

Anschließend ist die Option smtpd_tls_security_level zu befüllen – per Default ist diese nicht gesetzt.

smtpd_tls_security_level = may

Durch “may” wird besagt, dass TLS Verschlüsselte Clients unterstützt werden, es aber nicht zwingend notwendig ist. Wer TLS Verschlüsselte Kommunikation forcieren möchte, kann hier entsprechend “enforce” setzen, damit es erzwungen wird und Clients immer verschlüsselt mit dem Server Kommunizieren. Damit wäre es grundlegend getan, man sollte jedoch noch darauf achten gewisse SSL Versionen, sowie Cipher zu verbieten, da diese schon etwas älter sind und daher nicht mehr als sicher gelten. Anbei eine Beispielkonfiguration, diese muss je nach Endgerät ggf. auch angepasst werden.

smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3
smtpd_tls_mandatory_ciphers = high
smtpd_tls_exclude_ciphers = ECDHE-RSA-RC4-SHA
smtpd_tls_mandatory_exclude_ciphers = ECDHE-RSA-RC4-SHA

Möchte man zudem die TLS Informationen auch im Header sehen, kann man noch folgende Option setzen:

smtpd_tls_received_header = yes

Verschlüsselung der Verbindung zwischen Servern

Damit wäre die Client <-> Server Kommunikation soweit verschlüsselt und viele denken sich sicher, das wäre es. Zwischen Mailservern findet aber natürlich ebenfalls Kommunikation statt, welche verschlüsselt werden soll. Dies wird entsprechend wie folgt aktiviert:

smtp_tls_cert_file = /etc/ssl/certs/ssl-cert-snakeoil.pem
smtp_tls_key_file = /etc/ssl/private/ssl-cert-snakeoil.key
smtp_tls_security_level=may

Ähnlich wie bei der Client-Server-Kommunikation wird auch hier durch “may” besagt, dass Verschlüsselung genutzt wird insofern es möglich ist. Im Header kann man dies nun auch nachvollziehen, indem man nach ähnlichen Daten sucht:

Ohne Verschlüsselung (smtp_tls_security_level=none):
Received: from mail.domain1.tld (mail.domain1.tld [1.2.3.4]) by mail.domain2.tld (Postfix) with ESMTP id 1234567890

Mit Verschlüsselung (smtp_tls_security_level=may):
Received: from mail.domain1.tld (mail.domain1.tld [1.2.3.4]) by mail.domain2.tld (Postfix) with ESMTPS id 1234567890

Verschlüsselung der IMAP Verbindung

Damit wären wir fertig mit Postfix. Anbei noch einige Informationen für jene, die Dovecot nutzen um E-Mails von Ihrem Server per IMAP abzurufen, denn diese Verbindungen wollen ja auch noch verschlüsselt werden. Dies funktioniert sehr simpel – die Konfigurationen dafür finden wir normalerweise unterhalb von “/etc/dovecot/conf.d/“, meist handelt es sich dabei um die Datei “10-ssl.conf“.
Dort editieren, bzw. erweitern wir unsere entsprechenden Konfigurationen um folgende Zeilen:

ssl = yes
ssl_cert = </etc/ssl/certs/ssl-cert-snakeoil.pem
ssl_key = </etc/ssl/private/ssl-cert-snakeoil.key

Zudem nehmen wir noch einige Feinjustierungen vor, wie bereits zuvor bei Postfix. Beachten sollten wir aber, dass sich die Cipher-Liste je nach Endgerät auch ändern kann und man diese etwas anpassen muss. Diese dient hier nur als Beispiel.

ssl_protocols = !SSLv3 !SSLv2
ssl_cipher_list = EECDH+ECDSA+AESGCM:EECDH+aRSA+AESGCM:EECDH+ECDSA+SHA384:EECDH+ECDSA+SHA256:EECDH+aRSA+SHA384:EECDH+aRSA+SHA256:EECDH+aRSA+RC4:EECDH:EDH+aRSA:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!SRP:!DSS:!RC4
ssl_dh_parameters_length = 2048

Auch hier gilt: Hat man bereits ein gültiges Zertifikat, kann man dieses hier gerne verwenden um Fehler im E-Mail Client zu verhindern. Nun ist noch in der “10-auth.conf” die folgende Einstellung wichtig:

disable_plaintext_auth = no

Damit wird ein ähnlicher Effekt erzielt, wie bereits bei Postfix wenn wir “may” als Option gesetzt haben. Wir können nun TLS nutzen, müssen es aber nicht zwingend. Wer hier auf absolute Nummer sicher gehen möchte, kann natürlich auch hier “yes” setzen.

Mit “dovecot -n” können wir die aktiven Einstellungen überprüfen.

Fabian Rothlauf

Autor: Fabian Rothlauf

Fabian kehrte nach seinem fünfjährigen Ausflug nach Weimar zurück in seine Geburtsstadt Nürnberg und hat im September 2016 bei NETWAYS als Systems Engineer im Hosting Support angefangen. Der Mopsliebhaber, der schon seit seinem 16. Lebensjahr ein Faible für Adminaufgaben hat, liebt außerdem Grillen, Metal und Computerspiele. An seinem Beruf reizt ihn vor allem die Abwechslung, gute Weiterentwicklungsmöglichketen und dass es selten mal einen Stillstand gibt. Nachdem er die Berufsschulzeit bereits mit Eric und Georg genießen durfte, freut er sich bei NETWAYS nun auf weitere nette Kollegen, interessante Aufgaben und neue Blickwinkel.

Postfix – Fine tuning für bessere Performance

Postfix ist von grundauf schon recht schnell. E-Mails werden in einer Queue abgelegt und dort entsprechend der Reihe nach abgearbeitet, dennoch gibt es auch hier und dort gewisse Optimierungen, um zum Beispiel beim Versand von Newslettern etwas schneller zu sein. Wir möchten hierbei aber auch darauf hinweisen, dass manche dieser Einstellungen dazu führen, dass Mechanismen von Postfix außer Kraft gesetzt werden, die dafür da sind den Server vor Überlastung zu bewahren. Daher sollte man schon wissen was genau man macht und nicht alles kopieren, ohne sich Gedanken gemacht zu haben, was es bewirkt.

Fangen wir an, bei der Annahme neuer E-Mails. Standardmäßig akzeptiert Postfix je Prozess neue Mails, bevor diese intern weiter verarbeitet werden. Um diese Zahl zu erhöhen, kann man einfach die Anzahl der Prozesse erhöhen – per Default sind 100 gesetzt. Dies passiert mit folgendem Parameter:

default_process_limit = 150

Dieser Erhöht wohlgemerkt jegliche Prozesse von Postfix, möchte man diese genauer steuern, kann man diese in der master.cf ebenfalls anpassen. Man sollte jedoch immer die Auslastung des Systems im Auge behalten, beispielweise mit Icinga oder um direkte Vergleiche zu sehen mit Graphite, da man unter Umständen den Server überlastet. Daher sollte dieses Limit Schrittweise erhöht werden.

Danach schauen wir uns die Annahme des Postfix etwas genauer an. Hier gibt es zwei Anlaufstellen, die man sich etwas genauer ansehen sollte. Zum einen kommt hier tar pitting zum Einsatz, dem ein oder anderem sicher ein Begriff. Im Grunde wird dabei die Kommunikation zwischen Server und einem unerwünschten Client künstlich verlangsamt. Dies führt dazu, dass der fehlerhafte Client, oder ein Spammer nicht einfach so den Server überlasten kann. Dennoch bleibt der Postfix Prozess dadurch blockiert. Da wir annehmen, dass wir dem Client vertrauen – zum Beispiel, da die Mails auch nur in einem internen Netzwerk angenommen werden, deaktivieren wir dieses Feature:

smtpd_error_sleep_time = 0

Zum anderen wird die Annahme neuer Mails ebenfalls begrenzt, wenn ein Client zuviele Connections öffnet. Dies ist durchaus gut im Normalfall, in unserem speziellen Fall wollen wir jedoch auch diesen Wert deaktivieren, da alle Connections angenommen werden sollen. Zum anderen deaktivieren wir auch das Throttling neuer Verbindungen des clients.

smtpd_client_connection_count_limit = 0
smtpd_client_connection_rate_limit = 0

Damit nehmen wir nun alles an, egal wieviel kommt, damit alle Prozesse ausgelastet werden und verzögern auch keine neuen Verbindungen.

Kommen wir zum Versand an die selbe Domain. Vor allem bei Newslettern ist es oftmals der Fall, dass gleich mehrere tausend Empfänger die selbe Domain betreffen, wie Beispielsweise gmail.com. Während Postfix nun mit mehreren hundert Prozessen laufen kann, ist es jedoch nicht anzuraten den Mailserver der Empfänger mit mehreren hundert Verbindungen zu penetrieren. Dafür sind die folgenden Einstellungen wichtig:

initial_destination_concurrency = 5
default_destination_concurrency_limit = 20

Dabei handelt es sich um die Defaultwerte, man kann hier mit default_destination_concurrency_limit etwas “spielen”, damit Beispielsweise mehr Mails in einem Schwung an eine Domain verschickt werden, kann man diesen Wert erhöhen. Oftmals wird auch davon gesprochen die Queue einfach öfter abzuarbeiten, als per Default gesetzt ist. Mechanismen wie Greylisting verhindern jedoch, dass diese Einstellung einen großen Effekt erzielt, da die Mail vom empfangenden Mailserver widerum abgelehnt werden würde.

Anschließend kann man die aktiven Einstellungen per postconf überprüfen. Möchte man noch einige Sekunden mehr gewinnen, kann man sich auch noch Gedanken machen, ob ein Caching Nameserver dies ermöglichen kann, damit Anfragen optimiert werden können.

Fabian Rothlauf

Autor: Fabian Rothlauf

Fabian kehrte nach seinem fünfjährigen Ausflug nach Weimar zurück in seine Geburtsstadt Nürnberg und hat im September 2016 bei NETWAYS als Systems Engineer im Hosting Support angefangen. Der Mopsliebhaber, der schon seit seinem 16. Lebensjahr ein Faible für Adminaufgaben hat, liebt außerdem Grillen, Metal und Computerspiele. An seinem Beruf reizt ihn vor allem die Abwechslung, gute Weiterentwicklungsmöglichketen und dass es selten mal einen Stillstand gibt. Nachdem er die Berufsschulzeit bereits mit Eric und Georg genießen durfte, freut er sich bei NETWAYS nun auf weitere nette Kollegen, interessante Aufgaben und neue Blickwinkel.

NETWAYS stellt sich vor – Fabian Rothlauf

This entry is part 4 of 33 in the series Mitarbeitervorstellung

Name: Fabian Rothlauf

Alter: 31

Position bei NETWAYS: Systems Engineer im Hosting Support

Bei NETWAYS seit: September 2016

Was genau gehört zu Deinem Aufgabenbereich bei NETWAYS?

Primär geht es bei uns im Hostingsupport darum, unsere Kunden bei Problemen zu unterstützen, oder bestenfalls diese Probleme frühzeitig zu erkennen um entsprechende Gegenmaßnahmen einleiten zu können. Aber nicht nur wenn unsere Kunden Probleme haben sind wir der direkte Ansprechpartner, sondern beraten und unterstüzen diese auch bei jeglicher Planung neuer Vorhaben.

An welchen Projekten arbeitest Du gerade?

Erst letzte Woche habe ich ein Projekt abgeschlossen, bei dem es darum ging im Auftrag einer unserer Hostingkunden, ein Cluster zu realisieren, welches bei einem Event von Skoda in Portugal zum Einsatz kommt. Ungewöhnlich, wenn man glaubt, dass wir nur für “Hosting” zuständig seien, aber genau das ist es was den Beruf ausmacht und ihn vor allem bei NETWAYS so attraktiv gestaltet.

Welche größeren oder besonders interessanten Projekte stehen zukünftig an?

In naher Zukunft steht die Migration eines Kunden mit rund 50 Servern unterschiedlicher Arten auf dem Plan – es wird also definitiv nicht langweilig.

Was macht Dir an Deiner Arbeit am meisten Spaß?

Ich bekam mit ganzen fünf Jahren meinen ersten Computer und erledige seit meinem 16. Lebensjahr – damals noch sehr Laienhaft – unterschiedliche Aufgaben, welche sich um Serveradminstration drehen. Es war also relativ früh schon klar, wohin mein Weg wohl einmal führen würde. Das Beste an unserem Beruf ist: Man lernt nie aus. Neue Technologien und neue Herausforderungen zusammen mit einem weiten Spektrum an unterchiedlichen Kundensetups lassen es praktisch nicht zu, dass sich ein gewisser Alltag, oder gar Stillstand einfindet. Ich mag es morgens zur Arbeit zu kommen und eben nicht zu 100% zu wissen was mich erwartet. Was mich bei NETWAYS überrascht hat, ist der familiäre Umgang untereinander, durch den man sich auch als Neuling gleich fühlt als würde man schon ewig hier arbeiten.

Was machst Du, wenn Du mal nicht bei NETWAYS bist?

Selbst mit meinen mittlerweile 31 Jahren habe ich mein Hobby, welches mich auch zur Serveradministration brachte, nie aufgegeben – Onlinespiele, vorzugsweise World of Warcraft, Overwatch oder DayZ. Komme ich dann doch mal vom PC weg, dann genieße ich die meiste Zeit mit meiner Lebensgefährtin, oder versuche meine “Couchpotatoe” von Hund, einem in die Jahre gekommenen Mops, dazu zu bewegen sich doch mal aus dem Haus zu wagen.

Wie geht es in Zukunft bei Dir weiter?

Beruflich gesehen sehe ich nach nur wenigen Monaten meine berufliche Zukunft defintiv bei NETWAYS, ich müsste ehrlich gesagt von allen guten Geistern verlassen sein, etwas anderes anzustreben, nachdem ich hier nicht nur herzlich aufgenommen wurde, sondern mir jegliche Wege sowohl beruflich und fachlich weiterzukommen offen stehen.

Fabian Rothlauf

Autor: Fabian Rothlauf

Fabian kehrte nach seinem fünfjährigen Ausflug nach Weimar zurück in seine Geburtsstadt Nürnberg und hat im September 2016 bei NETWAYS als Systems Engineer im Hosting Support angefangen. Der Mopsliebhaber, der schon seit seinem 16. Lebensjahr ein Faible für Adminaufgaben hat, liebt außerdem Grillen, Metal und Computerspiele. An seinem Beruf reizt ihn vor allem die Abwechslung, gute Weiterentwicklungsmöglichketen und dass es selten mal einen Stillstand gibt. Nachdem er die Berufsschulzeit bereits mit Eric und Georg genießen durfte, freut er sich bei NETWAYS nun auf weitere nette Kollegen, interessante Aufgaben und neue Blickwinkel.