Postfix nach gültigen Emailadressen auf einem Exchangeserver fragen lassen

Häufig wird zwischen Internet und dem internen Mailserver ein Linux mit Postfix eingesetzt, um unerwünschte Viren und SPAM nicht in das Firmennetzwerk gelangen zu lassen.

Postfix Mailproxy

Oft wird dabei eingestellt, dass alle Emails für die interne Domäne angenommen und an den internen Emailserver weiter geleitet werden, da Postfix die gültigen Emailadressen des internen Emailservers nicht kennt. Daraus ergeben sich jedoch zwei Probleme:

  1. Es werden auch Viren und SPAM für ungültige Emailadressen angenommen und untersucht, was unnötige Resourcen verbraucht.
  2. Es werden unnötige Unzustellbarkeitsbenachrichtigungen erzeugt, welche die Warteschlange im Mailserver verstopfen. Hinzu kommt, dass diese bei Viren und SPAM oft an falsche Emailadressen gehen. Dadurch werden zum Teil mehrere Zustellversuche unternommen, wodurch die Warteschlange wiederum noch mehr verstopft.

Um diese Probleme zu umgehen muss Postfix in der Lage sein, Emails an ungültige Emailadressen gar nicht erst anzunehmen. Dazu muss es jedoch die Möglichkeit haben, die Gültigkeit einer Emailadresse zu erfragen. Da Exchange ab der Version 2000 die dazu nötigen Informationen im Active Directory speichert, kann dies mit einer LDAP-Anfrage an einen Windows Domänen Controller geschehen. Ab Postfix 2.1 kann dies mit wenigen Zeilen Konfiguration und der Option relay_recipient_maps eingestellt werden. In der Firewall sollten vorher allerdings LDAP-Anfragen von Postfix an mindestens einen internen Windows Domänen Controller erlaubt werden. Dazu müssen Verbindungen des Postfix auf den TCP-Port 389 des Windows Domänen Controllers erlaubt werden.

Mit der Option relay_recipient_maps kann Postfix dazu gebracht werden nur Emails für gültige Emailadressen der eigenen Domäne weiterzuleiten. Bei unbekannten Emailadressen verweigert Postfix die Annahme einer Email mit der Meldung: Recipient address rejected: User unknown in relay recipient table. Diese existierenden Emailadressen können dabei auch über LDAP abgefragt werden, wenn Postfix mit LDAP-Unterstützung installiert ist (bei Debian muss dazu das Paket postfix-ldap installiert sein). Dazu muss man lediglich die folgende Zeile in die Datei /etc/postfix/main.cf einfügen.


relay_recipient_maps = ldap:/etc/postfix/ldap_relay_recipient_maps.cf

Danach muss die Datei /etc/postfix/ldap_relay_recipient_maps.cf mit den Einstellungen für die LDAP-Abfrage angelegt werden. Für die Abfrage der Emailadressen von den Windows Domän Controllern ad-01 und ad-02 der Domäne example.com als Benutzer postfix sollte sie wie folgt aussehen.


server_host = ad-01.example.com
              ad-02.example.com
search_base = dc=example, dc=com
version = 3

bind_dn = CN=postfix,CN=Users,DC=example,DC=com
bind_pw = password

query_filter = (proxyAddresses=smtp:%s)
result_attribute = mail

Die Voraussetzung ist natürlich, dass es einen Benutzer postfix unterhalb Users in der Domäne example.com gibt. Dieser muss jedoch keine Administrationsrechte haben. Es reicht ein normaler Benutzer.

Ob die Konfiguration in der Datei ldap_relay_recipient_maps.cf funktioniert, kann man als root mit dem folgendem Befehl testen.

/usr/sbin/postmap -q "postmaster@example.com" ldap:/etc/postfix/ldap_relay_recipient_maps.cf

Sofern es die Emailadresse postmaster@example.com gibt, sollte diese als Ausgabe erscheinen. Wenn es keine Ausgabe gibt, existiert diese nicht.

Weiter Infos zu dem Thema sind unter den folgenden Links zu finden:

Dieser Beitrag wurde unter Computer & Technik, Kommunikationstechnik, Linux, Windows abgelegt und mit , , , verschlagwortet. Setze ein Lesezeichen auf den Permalink.

6 Antworten auf Postfix nach gültigen Emailadressen auf einem Exchangeserver fragen lassen

  1. Die Verwendung von LDAP sehe ich an dieser Stelle sehr kritisch. Du benutzt LDAP ohne SSl-Absicherung und speicherst den Benutzeraccount im Klartext samt Passwort in der Konfigurationsdatei. Sollte der Linuxserver mal erfolgreich angegriffen werden, sind das unnötige Risiken. Warum nicht SMTP call-ahead nutzen? Dann brauchst Du die ganze LDAP-Konfiguration nicht. Das läuft ganz einfach über Port 25. Und Du vermeidest Dictionary Attacken über SMTP Tar Pitting, die auch zu DOS-Angriffen mutieren könnten.

    Just my 2 cents!
    Daniel

  2. kristian sagt:

    Das klingt natürlich noch viel besser. Ich werde gleich mal versuchen das umzusetzen. Danke für die Verbesserungsvorschäge!

    Gruß
    Kristian

  3. kristian sagt:

    SMTP call-ahead zeigte bei meinen ersten Versuchen eine deutlich schlechtere Performance als LDAP. Ich muss mir jetzt noch mal ein geeignetest Testsenario aufbauen, um das auch noch mal unter großer Last zu testen.

    Nach diesen Erfahrungen frage ich mich, ob LDAP nicht das performantere Protokoll für soetwas ist und ob man die dadurch entstehenden Risiken nicht begrenzen kann.

    Gruß
    Kristian

  4. clemens sagt:

    this sync method could be of use, u dont need to open your dmz firewall, and still works if the exchange server is temporarely not available.

    http://www.unixwiz.net/techtips/postfix-exchange-users.html

  5. Dennis Uckel sagt:

    Hi,

    die ganze Thematik ist noch aus einer ganz anderen Perspektive interessant. Laut geltender Gesetzgebung gilt eine E-Mail dem Empfänger (in dem Falle der Firma) als zugestellt, wenn der Postfix die E-Mail annimmt. Ich habe dazu mal einen Vortrag von Peer Heinlein (studierter Jurist und Postfix-Guru) gehört.

    Bei uns wird vom Postfix eine Testnachricht versandt. Sollte der Exchange, Groupwise, etc. mit Recipient unknown antworten, wird die E-Mail gar nicht angenommen. Das eignet sich vor allem, wenn es kein allumfassendes LDAP gibt. Works like a charm.

    P.S.: Der Themenumfang deines Blogs gefällt mir :-)

  6. kristian sagt:

    Danke für die nette Ergänzung. Das ist auf jeden Fall ein sehr interessanter Aspekt. Außerdem freue ich mich immer über Rückmeldungen, da sie mir zeigen das meine Gedanken und Aufzeichnungen jemanden behilflich sind. Ich war die letzte Woche in NYC und komme deshalb erst jetzt dazu den Kommentar frei zu schalten. ;-)

Hinterlasse eine Antwort

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


*

Du kannst folgende HTML-Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>