debian | postfix und relay_recipient_maps vom Exchange (II)

Weiter gehts im schnellen Lauf, denn der Teddy gibt nicht auf 🙂

Hier der versprochene zweite Teil zum Thema postfix und relay_recipient_maps vom Exchange.

Nachdem wir nun nahezu automatisch die Liste aller gültigen Empfänger auf das Mail-Gateway kopieren können, müssen wir nun die Liste so aufbereiten, das postfix damit etwas anfangen kann.

Bisher sieht die Liste in etwa so aus:

dn: CN=Administrator,CN=Users,DC=example,DC=de
changetype: add
proxyAddresses: SMTP:Administrator@example.de
proxyAddresses: X400:c=DE;a= ;p=EXAMPLE;o=Exchange;s=Administrator;


So kann man die Liste natürlich nicht an postfix geben. Wenn man sich dann die Liste genau anschaut, dann findet man viele Einträge von EMail-Adressen, die der Exchange selber benötigt und die man nicht über das Mail-Gateway erreichbar machen muß. Es müssen also folgende Dinge gemacht werden:

  1. Löschen der unnötigen Zeilen.
  2. Aufbereiten der Textdatei
  3. Hinzufügen des Kommandos OK zu jeder Zeile
  4. Löschen der unbenötigten Emailadressen

Dazu verwenden wir das Script von postfix-buch.com. Leider hat sich in dem Script ein kleiner Fehler eingeschlichen :(. Das Original-Script sieht so aus:

#!/bin/bash
# Extract all Adresses that start with SMTP or smtp from
# an Active Directory export, but omit those that are listed in blacklist
cat $1 | tr -d \" | tr , \\n| tr \; \\n | awk -F\: '/(SMTP|smtp):/ {printf("%s\tOK\n",$2)}' |
grep -v -f blacklist > $2

Wenn man sich das Script aus dem Buch anschaut, dann findet man schnell den Fehler – nach der Korrektur sieht das Script so aus:

#!/bin/bash
# Extract all Adresses that start with SMTP or smtp from
# an Active Directory export, but omit those that are listed in blacklist
cat $1 | tr -d \" | tr , \\n| tr \; \\n | awk -F\: '/^proxyAddresses: (SMTP|smtp):/ {printf("%s\tOK\n",$3)}' |
grep -v -f blacklist > $2

Die Email-Adressen, welche man nicht in der Tabelle haben möchte, schreibt man in eine Datei blacklist. Meine blacklist sieht so aus:

SystemMailbox
Administrator
Default
exchangeV1
globalevents
internal
KontaktevonEXAMPLE
EXAMPLE
EXAMPLE-Archiv
OABVersion2
OABVersion3a
Offlineadressbuch-firstadministrativegroup
PublicFolder08275515@example.de
PublicFolder94568143@example.de
schema-root

Wenn man jetzt das Script ausführt

./extract_valid_recipient /home/exchange/recipient.txt /home/exchange/relay_recipient

So sieht das Ergebnis (less /home/exchange/relay_recipients) dann so aus:

user1@example.de^M OK
useruser2@example.de^M OK
user2@example.de^M OK
Administrator@example.de^M OK

Wie man sieht hat debian Probleme mit dem DOS-Zeilenumbruch. Um diesen Unix-Konform geradezubiegen installiert man sich das Paket tofrodos, welches den Befehl dos2unix mit sich bringt.

Mit einem
dos2unix relay_recipients
wandelt man die Liste um und Voilá!

Das ist natürlich falsch. Man muß die DOS-Zeilenumbrüche in der Original-Datei recipient.txt schon löschen und kann anschließend die Datei durch den Filter schicken.

(Wer es komplizierter mag, der nehme den Befehl flip. Eine Erklärung dazu findet er hier.)

Jetzt wandeln wir die Datei in eine Postfix-Datenbank um

postmap hash:/home/exchange/relay_recipients

und kopieren wir die Datei in das postfix-Verzeichnis

mv /home/exchange/relay_recipients.db /etc/postfix/relay_recipients.db

Wichtig ist der Hinweis im Buch, das die Datenbank-Datei im Home-Verzeichnis unseres exchange-Users erstellt und anschließend kopiert wird, da es beim Fehlschlagen des postmap-Befehls ansonsten keine relay_recipients.db im postfix-Verzeichnis geben und Postfix seinen Betrieb einstellen würde.

Eingebunden in postfix wird es mit einem Eintrag in der /etc/postfix/main.cf

relay_recipient_maps = hash:/etc/postfix/relay_recipients

Jetzt kann man, wenn man es möchte, natürlich das Ganze noch automatisieren und in Scripte packen, dazu noch als Taskplaner/cron ausführen lassen. Aber das kommt später.

Ein Gedanke zu „debian | postfix und relay_recipient_maps vom Exchange (II)

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

Schreibe einen Kommentar

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