meta data for this page
Mail Address Extension / Instant Aliases mit Microsoft Exchange
Bekannterweise unterstützt Microsoft Exchange (auch bis zur Version 2019) keine Address Extensions oder Instant Aliases oder wie auch immer man sie nennen möge.
Wer es gar nicht kennt, kurze Erklärung:
Benutzer A kann seine E-Mail Adresse individuell erweitern, in dem er den Alias durch das im Mailserver definierte Trennzeichen (bspw. unter Postfix “recipient_delimiter”) und ein selbstdefinierten String übergibt.
Adresse: benutzer.a@domain.tld
zusätzliche Adresse: benutzer.a+besonderswichtig@domain.tld
Damit lassen sich nach Bedarf unterschiedliche Adressen erzeugen, die bei unterschiedlichen Portalen, Anwendungen, Shops, usw. verwendet werden können. Macht die Identifizierung bei Missbrauch leichter und vereinfacht das automatische Filtern/Sortieren im Posteingang.
Alle größeren Linux Mailserver kennen dieses Feature. Wenn auch unter unterschiedlichen Namen. Microsoft Exchange leider nicht.
Workaround am Beispiel mit Postfix als Relay
Man stelle vor den Exchange eine (oder mehrere ) Postfix Instanz(en) die alle Mails an den Exchange relayen. An der Stelle sollte man schon darauf achten, dass Postfix nur die Mails annimmt, deren Empfänger tatsächlich am Exchange existieren.
Ob man das nun mit lokalen Dateien
recipient_delimiter = + relay_domains = hash:/etc/postfix/relay_domains relay_recipient_maps = hash:/etc/postfix/relay_aliases
- relay_domains
domain.tld OK
- relay_aliases
benutzer.a@domain.tld OK
macht oder aufwendigere Datenbank/Directory Anbindungen baut ist egal. Je nach Wunsch und Anforderungen.
Ich persönlich mag die lokalen Textdateien. Ausfallsicher, keine akuten Abhängigkeiten und lassen sich einfach per Script befüllen.
Handling der Alias-Adressen im Postfix
Bisher
- Mail kommt am Postfix an
- ggfls. werden Spamprüfungen durchgeführt
- Postfix schlägt nach, wohin er die Mail relayen soll und kippt sie dort ab
- der Exchange Server bekommt sie für die Adresse benutzer.a+besonderswichtig@domain.tld zugestellt, kennt sie nicht und bounced.
- (man könnte man Exchange Benutzer die Adresse manuell hinzufügen, dann würde er sie annehmen und dem Postfach zustellen, aber das widerspricht dem Grundgedanken der Extensions)
Workaround
Wir lassen Postfix die ursprüngliche Adresse mit Extension auf die korrekte Adresse am Exchange mappen.
Dazu bedienen wir uns der Postfix Option “smtp_generic_maps”
smtp_generic_maps = hash:/etc/postfix/generic_maps
Und schreiben in die generic_maps welche Adresse auf welche Adresse gemappt werden soll:
- generic_maps
benutzer.a@domain.tld benutzer.a@domain.tld
Sieht merkwürdig und sinnfrei aus, aber beim Relaying im Postfix passiert folgendes:
- Postfix prüft die smtp_generic_maps bei ausgehenden Mails (also Mails vom Postfix zum Exchange) ob Änderungen an Adressen notwendig sind
- Dabei prüft er die Adresse gegen die generic_maps nach folgendem Suchmuster
- benutzer.a+besonderswichtig@domain.tld
- benutzer.a@domain.tld
- domain.tld
- Der erste Treffer wird verwendet. Im Beispiel also benutzer.a@domain.tld. Diese wird umgeschrieben auf die gleiche Adresse. Somit wird der Postfix die Mail für benutzer.a+besonderswichtig@domain.tld an benutzer.a@domain.tld am Exchange zustellen. Die Mail-Header bleiben unberührt und man kann am Exchange wunderbar mit Filtern die Adresse weiterverarbeiten.
Cool, oder?