debian | postfix und relay_recipient_maps vom Exchange (I)

Nachdem ich im Kapitel „Mail-Gateways“ aus dem Buch Postfix – Einrichtung, Betrieb und Wartung gelesen habe, wie man eine Empfängerliste auf dem Exchange exportiert und in postfix einbindet habe ich mich mal dran gemacht das zu realisieren. Die Bemühungen kommen daher, das regelmäßig Versuche gestartet werden auf die Email-Adresse micha AT makomi DE einzuliefern – eine Adresse die bei mir gar nicht existiert. Nachdem ich mal die Suchmaschine meines Vertrauens mit der „ominösen“ Emailadresse gefüttert habe war klar: Da hat jemand die Adresse in einem Forum angegeben und die Betreiber hat nix Besseres zu tun, als die Profile öffentlich zu machen.

Nun, eine erste Mail an den Admin hat keine Reaktion vorgerufen, also selber nach Lösungen suchen. Die Lösung steht in dem obigen Buch – übrigens sehr zu empfehlen.

Jetzt aber zur Realisierung:

Zuerst muß auf dem Exchange die aktuelle Email-Adressenliste generiert werden. Die Daten sind schon alle im Active Directory vorhanden, man muß sie da nur rausbekommen. Das geht mit Boardmitteln, aber der Reihe nach. Als Erstes lohnt es sich für den Austausch der Listen ein eigenes Verzeichnis anzulegen:

mkdir c:\mailgw

Dann wird die Liste extrahiert:

ldifde -m -n -g -f "C:\Mailgw\recipient.txt" -r "(mailnickname=*)" -l proxyAddresses

Ein kurze Erklärung zu den Parametern:

-g Deaktiviert die seitenweise Suche.
-m Aktiviert die SAM-Logik beim Export.
-n Exportiert keine Binärwerte.
-f Dateiname Dateiname für die Eingabe bzw. Ausgabe.
-r Filter LDAP-Suchfilter (Standard: „(objectClass=*)“).
-l Liste Liste der Attribute (durch Komma getrennt), nach denen bei
der LDAP-Suche gesucht wird.

Das Komplizierteste ist nun der Datenaustausch vom Exchange-Server zum Mail-Gateway. Um dies zu bewältigen muß man dem Exchange-Server zuerst beibringen, wie man per Secure Copy (kurz SCP) Dateien verschicken kann. Es gibt verschiedene Programme dafür, am bekanntesten ist aber als Kommandozeilentool PuTTYs PSCP. Wir benötigen die beiden Programme pscp.exe und puttygen.exe.

Nun legen wir zuerst auf dem debian-Server einen neuen Benutzer an, der nur für den Transfer der Listen auf das Mail-Gateway verantwortlich ist:

useradd -d /home/exchange/ -m exchange

Im Gegensatz zu den Angaben im Buch mußte ich bei debian Lenny das Homeverzeichnis explizit mit angeben, da Lenny anscheinend das nicht selbstständig anlegt.

Nachdem der Benutzer existiert geben wir ihm zuerst einmal ein Passwort:

passwd exchange

Anschließend generieren wir ein SSH-Schlüsselpaar, damit der Dateitransfer ohne die Eingabe von Passwörtern erfolgen kann:

su - exchange
cd ~
ssh-keygen -t rsa

Bei der Nachfrage nach einer Passphrase bitte nix eingeben. Nur wenn hier kein Passwort eingegeben wird, kann der Dateiaustausch wirklich vollautomatisch erfolgen.

Generating public/private rsa key pair.
Enter file in which to save the key (/home/exchange/.ssh/id_rsa):
Created directory '/home/exchange/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/exchange/.ssh/id_rsa.
Your public key has been saved in /home/exchange/.ssh/id_rsa.pub.
The key fingerprint is:
ba:90:03:e8:06:20:5f:30:00:52:a9:11:c6:2e:ae:10 exchange@example.de
The key's randomart image is:
+--[ RSA 2048]----+
|&+..             |
|=*.              |
|.o+              |
|.+ +             |
|. o +   S        |
|E. . . o         |
|..    =          |
|o      +         |
|.     .          |
+-----------------+

Es werden nun zwei neue Dateien im Unterverzeichnis .ssh erstellt: id_rsa und id_rsa.pub

Damit der Server weiß, das der Benutzer exchange mit Hilfe von Schlüsseln auf den Server zugreifen darf, muß man noch den Inhalt der Datei id_rsa an die Datei ~/.ssh/authorized_keys angehängt werden. Dazu gibt man

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

ein und gibt mit

chmod 644 authorized_keys

der Datei die richtigen Rechte.

Nun muß der private Schlüssel des Paares auf einem sicheren Weg zum Exchange-Server kommen. Dazu nutzen wir gleich die pscp.exe.

pscp exchange@mail.example.de:/home/exchange/.ssh/id_rsa .

Ich denke der Syntax ist klar. Natürlich müssen wir uns jetzt mit einem Passwort authentifizieren – genau mit dem, welches wir oben vergeben haben.

Um die Schlüsseldatei nutzen zu können müssen wir sie in ein PuTTY-verträgliches Format wandeln. Dazu nutzen wir die von PuTTY mitgelieferte puttygen.de

puttygen c:\mailgw\id_rsa

es öffnet sich eine GUI

puttygen-1

Nach eine Klick auf OK öffnet sich der PuTTY Key Generator-Dialog:

puttygen-2

Hier kann man im Feld Key comment dem konvertierten Schlüssel einen Namen wegen und anschließend Save private key drücken.

puttygen-3

Aufgrund der leeren Passphrase wird hier eine Warnung ausgegeben, was aber ok ist.

Nun können wir mit dem eben erstellten/konvertierten Key eine verschlüsselte Verbindung zu unserem Mail-Gateway aufnehmen

pscp -i mail.example.de.ppk recipient.txt exchange@mail.example.de:/home/exchange/

Nachdem das geklappt hat, können wir dem Benutzer exchange auf dem Mail-Gateway das Passwort wegnehmen – dann ist ein einloggen nur noch mit dem Key möglich.

usermod -L exchange

Weiter geht es im zweiten Teil, der demnächst erscheint.

2 Gedanken zu „debian | postfix und relay_recipient_maps vom Exchange (I)

  1. Pingback: debian | postfix und relay_recipient_maps vom Exchange (II) | controlc.de

  2. Pingback: mac | VMware Fusion über die Kommandozeile steuern | controlc.de

Schreibe einen Kommentar

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