Tags:
create new tag
, view all tags

Vergleich Realisierung von Forwards mit contact oder mit targetAddress

Begriffsdefinitionen

  • Mail-enabled user ein AD-Userobjekt mit Mailadresse aber ohne Exchange-Mailbox. Besitzt eine oder mehrere Proxy-Adressen sowie (möglicherweise) eine targetAddress. Ohne targetAdress erhält der Absender an eine der Proxy-Adressen eine Fehlermeldung. Alternativ zur targetAdress kann das Objekt auf einen contact resp. auf ein anderes mail-enabled object zeigen (s.u.).
  • Mailbox-enabled user ein AD-Userobjekt mit Mailadresse und Exchange-Mailbox. Besitzt eine oder mehrere Proxy-Adressen. Eine targetAddress ist nicht vorgesehen, funktioniert technisch aber trotzdem (als Forward-Adresse). Auf diese Weise wurden früher alle Mailkontos eröffnet.
  • contact ein AD-Objekt wie ein AD-Userobjekt (UO), aber ohne Username/Passwort. D.h. contacts beschreiben keine Useraccounts (Identities) und können deshalb nicht in Security-Gruppen verwendet werden.
  • outbound.ethz Emaildomäne innerhalb der ETH, welche nicht von Exchange gehostet wird
  • inbound.ethz Emaildomäne innerhalb der ETH, welche von Exchange gehostet wird
  • gmail.com Emaildomäne ausserhalb der ETH

Was ist ein Forward?

Unter einem Forward wird allgemein die Weiterleitung von eingehenden Emails verstanden. Technisch gesehen kann unter Exchange diese Weiterleitung auf verschiedene Arten realisiert werden:

  1. Verwendung eines altRecipient. Dabei zeigt ein Userobjekt auf ein anderes (mail-enabled) AD-Objekt. Beispiele:
    • Contact
    • Mailverteiler
    • public Folder
  2. Setzen einer targetAddress. Dieses Attribut im Userobjekt enthält einen String à la SMTP:user@extern.com. Dieses Attribut ist eigentlich ein Feature des AD und beispielsweise für Contacts und mail-enabled User vorgesehen. Wird ein solcher mail-enabled User allerdings mit einer Mailbox versehen (d.h. mailbox-enabled), so kann es mit den Exchange-Tools passieren, dass beim Verschieben der Mailbox dieses Attribut verloren geht.

Dieser Umstand war der Grund dafür, den Forward-Mechanismus in nethz auf Contacts umzustellen.

Vorteile eines Forwards mit einem Contact

  • Exchange-Tools können bedenkenlos verwendet werden, der Forward «verschwindet» nicht einfach
  • entspricht dem von Microsoft empfohlene Weg

Nachteile eines Forwards mit einem Contact

Die Nachteile der Realisierung eines Forwards mit einem Contact sind in erster Linie die hohe Komplexität, die aus der Auftrennung in zwei Objekte resultiert. Die beiden Objekte können hinterher nicht unabhängig voneinander behandelt werden, sondern bleiben stark gekoppelt. Hinzu kommt, dass bei Änderungen viele Fälle unterschieden werden müssen. Die folgenden Szenarien sollen dies verdeutlichen:

Szenario 1: Mailbox-enabled User mit outbound.ethz und Forward auf outbound.ethz ändert Hauptadresse

HELP Beachte:

  • Die Hauptadresse wird in den (Telefon-)Verzeichnissen angezeigt!
  • Aus der bisherigen Hauptadresse wird ein Alias erstellt.

Fälle

  1. Initiales Setzen der richtigen Hauptadresse eines Users mit Mailbox auf dezentralem Server (häufig)
  2. Ändern der Hauptadresse eines Users mit Mailbox auf dezentralem Server, damit die richtige Adresse in den Verzeichnissen erscheint (selten)

Realisierung mit targetAddress

  • mail-Attribut des Userobjekts wird geändert
  • neue Hauptadresse und Alias werden in Liste der Proxy-Adressen des Userobjekts geschrieben
  • targetAddress-Attribut wird auf neue Hauptadresse geändert

vorher  
mail haupt@outbound.ethz.ch
proxyAddresses SMTP:haupt@outbound.ethz.ch
targetAddress SMTP:haupt@outbound.ethz.ch
nachher  
mail neue@outbound.ethz.ch
proxyAddresses SMTP:neue@outbound.ethz.ch
proxyAddresses smtp:haupt@outbound.ethz.ch
targetAddress SMTP:neue@outbound.ethz.ch

Realisierung mit contact

  • mail-Attribut des Userobjekts bleibt bestehen (username@ethz.ch)
  • neues Alias wird als Proxy-Adresse ins Userobjekt geschrieben
  • contact-Objekt wird umbenannt (rename) (Fall 2) oder neu erstellt (Fall 1)
  • Proxy-Adresse des contact-Objekts wird durch neue Hauptadresse ersetzt
  • targetAddress-Attribut des contacts wird auf neue Hauptadresse gesetzt
  • altRecipient des Userobjekts zeigt auf neuen Contact

vorher (Userobjekt)  
mail username@ethz.ch
proxyAddresses SMTP:username@ethz.ch
altRecipient cn=haupt@outbound.ethz.ch,ou=contacts,...
vorher (Contact)  
mail haupt@outbound.ethz.ch
proxyAddresses SMTP:haupt@outbound.ethz.ch
targetAddress SMTP:haupt@outbound.ethz.ch
nachher (Userobjekt)  
mail neue@outbound.ethz.ch
proxyAddresses SMTP:username@ethz.ch
proxyAddresses smtp:haupt@outbound.ethz.ch
altRecipient cn=neue@extern.ethz.ch,ou=contacts,...
nachher (Contact)  
mail neue@outbound.ethz.ch
proxyAddresses SMTP:neue@outbound.ethz.ch
targetAddress SMTP:neue@outbound.ethz.ch

Szenario 1a: Wie Szenario 1, aber ohne Forward

Fälle: Wie bei 1. Ohne Forward bedeutet keine targetAddress und kein Contact.

Realisierung mit targetAddress

  • mail-Attribut des Userobjekts wird geändert
  • neue Hauptadresse und Alias werden als Proxy-Adressen in Userobjekt geschrieben

vorher  
mail haupt@outbound.ethz.ch
proxyAddresses SMTP:haupt@outbound.ethz.ch

nachher  
mail neue@outbound.ethz.ch
proxyAddresses SMTP:neue@outbound.ethz.ch
proxyAddresses smtp:haupt@outbound.ethz.ch

Realisierung mit contact

  • mail-Attribut des Userobjekts wird geändert (outbound@ethz.ch)
  • neues Alias wird (zusammen mit Hauptadresse) als Proxy-Adresse ins Userobjekt geschrieben

vorher (Userobjekt)  
mail haupt@outbound.ethz.ch
proxyAddresses SMTP:haupt@outbound.ethz.ch

nachher (Userobjekt)  
mail neue@extern.ethz.ch
proxyAddresses SMTP:neue@outbound.ethz.ch
proxyAddresses smtp:haupt@outbound.ethz.ch

Szenario 2: Mailbox-enabled User mit outbound.ethz bekommt eine inbound.ethz Hauptadresse

Beachte

  • Die Hauptadresse wird in den (Telefon-)Verzeichnissen angezeigt!
  • Aus der bisherigen Hauptadresse wird ein Alias erstellt.

Fälle

Es ist nicht klar, welches der wirkliche Anwendungsfall ist.

  1. Migration nach Exchange, wobei gleichzeitig die Hauptadresse geändert werden soll? (selten)
  2. Migration nach Exchange, ohne Änderung der Hauptadresse

Realisierung mit targetAddress

  • neue Hauptadresse und Alias werden als Proxy-Adressen in Userobjekt geschrieben
  • ob Forward auf outbound.ethz bleibt, ist dem User überlassen

vorher (Userobjekt)  
mail haupt@outbound.ethz.ch
proxyAddresses SMTP:haupt@outbound.ethz.ch
targetAddress SMTP:haupt@outbound.ethz.ch
nachher (Userobjekt)  
mail neue@inbound.ethz.ch
proxyAddresses SMTP:neue@inbound.ethz.ch
proxyAddresses smtp:haupt@outbound.ethz.ch
targetAddress SMTP:haupt@outbound.ethz.ch

Realisierung mit contact

  • inbound.ethz wird in als Proxy-Adresse ins Userobjekt geschrieben

vorher (Userobjekt)  
mail username@ethz.ch
proxyAddresses SMTP:username@ethz.ch
altRecipient cn=haupt@outbound.ethz.ch,ou=contacts,...
vorher (Contact)  
mail haupt@outbound.ethz.ch
proxyAddresses SMTP:haupt@outbound.ethz.ch
targetAddress SMTP:haupt@outbound.ethz.ch
nachher (Userobjekt)  
mail neue@inbound.ethz.ch
proxyAddresses SMTP:neue@inbound.ethz.ch
altRecipient cn=haupt@outbound.ethz.ch,ou=contacts,...
nachher (Contact)  
mail haupt@outbound.ethz.ch
proxyAddresses SMTP:haupt@outbound.ethz.ch
targetAddress SMTP:haupt@outbound.ethz.ch

Szenario 3: Mailbox-enabled User löscht seinen outbound.ethz-Forward

Beachte

  • Falls der Forward mit einem Contact realisiert ist, muss berücksichtigt werden, dass das Contact-Objekt in einer Verteilerliste vorkommen kann und dass mehrere AD-Objekte auf einen Contact zeigen können.

Fälle

  1. z.B. Abschluss einer Migration nach Exchange

Realisierung mit targetAddress

  • targetAddress-Attribut wird gelöscht

vorher (Userobjekt)  
mail haupt@outbound.ethz.ch
proxyAddresses SMTP:haupt@outbound.ethz.ch
targetAddress SMTP:haupt@outbound.ethz.ch
nachher (Userobjekt)  
mail haupt@outbound.ethz.ch
proxyAddresses SMTP:haupt@outbound.ethz.ch

Realisierung mit contact

  • falls altRecipient ein contact ist und die proxy-Adresse des Contacts diesem User gehören
    • Userobjekt in allen Listen nachführen, in welchen der contact war
    • falls contact noch von einem anderen Konto als altRecipient gebraucht wurde, Userobjekt als altRecipient eintragen
    • contact löschen
    • Emailadresse des Contacts in die Liste der Proxy-Adressen des Userobjekts eintragen * falls es die Hauptadresse ist: mit SMTP: (sonst smtp:)
  • ansonsten nur altRecipient-Attribut löschen

vorher (Userobjekt)  
mail username@ethz.ch
proxyAddresses SMTP:username@ethz.ch
altRecipient cn=haupt@outbound.ethz.ch,ou=contacts,...
vorher (Contact)  
mail haupt@outbound.ethz.ch
proxyAddresses SMTP:haupt@outbound.ethz.ch
targetAddress SMTP:haupt@outbound.ethz.ch
nachher (Userobjekt)  
mail haupt@outbound.ethz.ch
proxyAddresses SMTP:haupt@outbound.ethz.ch
proxyAddresses smtp:username@ethz.ch

Szenario 4: mail-enabled Userobjekt mit outbound.ethz als Hauptadresse wird mailbox-enabled

Bisher wurden alle AD-Userobjekte mit einer Mailbox erstellt. Künftig soll zwischen mail- und mailbox-enabled Userobjekte unterschieden werden. Auf AD-Seite liegt der wesentliche Unterschied darin, dass bei einem mailbox-enabled User die Attribute homeMDB und homeMTA (ev. noch ein paar weitere) vorhanden sind. Dieses Szenario beschreibt, was passiert, wenn einem nethz-User mit Outbound-Hauptadresse der künftige Mailbox-Service vergeben wird.

Userobjekt mit outbound.ethz als Hauptadresse hat entweder entsprechenden Eintrag in targetAddress oder Contact.

  • Mailbox-Attribute werden in Userobjekt geschrieben

Realisierung mit targetAddress

  • homeMDB und homeMTA in Userobjekt schreiben

Realisierung mit contact

  • homeMDB und homeMTA in Userobjekt schreiben
  • Fall1: Forward des mail-enabled Users wurde mit targetAddress realisiert:
    • outbound.ethz aus Proxy-Adresse des Userobjekts entfernen
    • neuen contact erstellen mit outbound.ethz.ch als Proxyadresse
    • altRecipient-Attribut im Userobjekt setzen
  • Fall2: Forward des mail-enabled Users wurde mit einem contact realisiert:
    • keine weiteren Aktionen nötig

Fall1

vorher (Userobjekt)  
mail haupt@outbound.ethz.ch
proxyAddresses SMTP:haupt@outbound.ethz.ch
targetAddress SMTP:haupt@outbound.ethz.ch
nachher (Userobjekt)  
mail username@ethz.ch
proxyAddresses SMTP:username@ethz.ch
altRecipient cn=haupt@outbound.ethz.ch,ou=contacts,...
nachher (Contact)  
mail haupt@outbound.ethz.ch
proxyAddresses SMTP:haupt@outbound.ethz.ch
targetAddress SMTP:haupt@outbound.ethz.ch

Szenario 5: mailbox-enabled Userobjekt mit haupt@outbound.ethz als Hauptadresse und alias@outbound.ethz als Alias setzt einen Forward auf haupt@outbound.ethz.ch

Es gibt Leute, die haben eine Exchange-Mailbox aber eine outbound-Mailadresse. Auf dem outbound.ethz.ch-Server ist ein Forward nach username@ethz.ch gesetzt, sodass alle Mails in der Exchange-Mailbox landen.

Realisierung mit targetAddress

  • targetAddress-Attribut wird in das Userobjekt geschrieben (SMTP:haupt@outbound.ethz)
  • Nachteil: die Eigenschaft «speichern und weiterleiten» kann so nicht genutzt werden
  • Abhilfe: einen expliziten Contact erstellen und altRecipient auf diesen Contact setzen

vorher (Userobjekt)  
mail haupt@outbound.ethz.ch
proxyAddresses SMTP:haupt@outbound.ethz.ch
proxyAddresses smtp:alias@outbound.ethz
proxyAddresses smtp:username@ethz.ch
nachher (Userobjekt)  
mail haupt@outbound.ethz.ch
proxyAddresses SMTP:haupt@outbound.ethz.ch
proxyAddresses smtp:alias@outbound.ethz
proxyAddresses smtp:username@ethz.ch
targetAddress SMTP:haupt@outbound.ethz.ch

Realisierung mit contact

  • Hauptadresse wird aus der Liste der Proxy-Adressen des Userobjekts entfernt
  • Alias wird als Pseudo-Hauptadresse (SMTP:) «erkoren»
  • mail-Attribut des Userobjekts wird auf Alias gesetzt
  • Contact-Objekt wird erstellt (sofern nicht bereits vorhanden)
  • altRecipient - Attribut des Userobjekts enthält distinguishedName des Contacts
  • alternativ kann auch ein vorhandenes Alias zur neuen Hauptadresse des Userobjekts «erkoren» werden

vorher (Userobjekt)  
mail haupt@outbound.ethz.ch
proxyAddresses SMTP:haupt@outbound.ethz.ch
proxyAddresses smtp:alias@outbound.ethz
proxyAddresses smtp:username@ethz.ch
nachher (Userobjekt)  
mail username@ethz.ch
proxyAddresses SMTP:username@ethz.ch
proxyAddresses smtp:alias@outbound.ethz
altRecipient cn=haupt@outbound.ethz.ch,ou=contacts,...
nachher (Contact)  
mail haupt@outbound.ethz.ch
proxyAddresses SMTP:haupt@outbound.ethz.ch
targetAddress SMTP:haupt@outbound.ethz.ch

Szenario 6: wie Szenario 5, aber Forward wird auf alias@outbound.ethz.ch

Realisierung mit targetAddress

  • targetAddress-Attribut wird in das Userobjekt geschrieben (SMTP:alias@outbound.ethz.ch)

vorher (Userobjekt)  
mail haupt@outbound.ethz.ch
proxyAddresses SMTP:haupt@outbound.ethz.ch
proxyAddresses smtp:alias@outbound.ethz
proxyAddresses smtp:username@ethz.ch
nachher (Userobjekt)  
mail haupt@outbound.ethz.ch
proxyAddresses SMTP:haupt@outbound.ethz.ch
proxyAddresses smtp:alias@outbound.ethz
proxyAddresses smtp:username@ethz.ch
targetAddress SMTP:alias@outbound.ethz.ch

Realisierung mit contact

  • Alias wird aus der Liste der Proxy-Adressen des Userobjekts entfernt
  • Contact-Objekt wird mit Alias erstellt (sofern nicht bereits vorhanden)
  • altRecipient - Attribut des Userobjekts enthält distinguishedName des Contacts
  • Wahlweise kann auch die Hauptadresse des Userobjekts in username@ethz.ch ändern

vorher (Userobjekt)  
mail haupt@outbound.ethz.ch
proxyAddresses SMTP:haupt@outbound.ethz.ch
proxyAddresses smtp:alias@outbound.ethz
proxyAddresses smtp:username@ethz.ch
nachher (Userobjekt)  
mail haupt@outbound.ethz.ch
proxyAddresses SMTP:haupt@outbound.ethz.ch
proxyAddresses smtp:username@ethz.ch
altRecipient cn=alias@outbound.ethz.ch,ou=contacts,...
nachher (Contact)  
mail alias@outbound.ethz.ch
proxyAddresses SMTP:alias@outbound.ethz.ch
targetAddress SMTP:alias@outbound.ethz.ch

Szenario 7: Eine Verteilerliste (mit Security-Funktion) wird erstellt. Eine Liste von Emailadressen wird als Member hinzugefügt

mit targetAddress
  • alle Emailadressen des Users sind in der Liste der Proxy-Adressen eingetragen
  • Userobjekt wird als Member der Liste hinzugefügt

mit contact

  • Falls Hauptadresse angegeben wird: contact wird hinzugefügt
  • ALERT! Verteilerliste funktioniert, Securityliste hingegen nicht!
  • ALERT! Es muss der Username oder ein Mail-Alias eingegeben werden, sonst funktioniert die Security-Liste nicht

Fazit

Ein Forward mit einem Contact ist insbesondere in Verbindung mit dem jetzigen Admin-Tool unnötig kompliziert und fehleranfällig. Zu den prominentesten Fehlerquellen zählen:
  • doppelte Proxyadressen
  • fehlende oder falsche Hauptadresse
  • Email-Loop
In allen Fällen werden Emails nicht zugestellt. Natürlich ist das alles eine Frage der Korrektheit des dahinterliegenden Codes. Gleichwohl muss man annehmen, dass durch Erweiterungen wie Trennung von AD und Mailbox oder separierte Contact-Verwaltung neue Szenarien entstehen, welche von den bisherigen Modulen abgefangen werden müssen. Eine solche Kopplung ist generell unerwünscht.

-- SwenVermeul - 2010-06-01

Topic revision: r10 - 2010-06-18 - vermeul
 
This site is powered by the TWiki collaboration platform Powered by PerlCopyright © 2008-2017 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback