Tags:
create new tag
, view all tags

Synchronisation der E-Mailadresse

Für E-Mailadressen stellt nethz generell die primäre Datenquelle dar. Die Daten werden auf folgende Zielsysteme synchronisiert:

  • PDB (Personal-Datenbank)
  • LDAPS (Authentisierungs und Authorisierungs-Infrastruktur AAI)
  • LDAP (via PDB)
  • Active Directory (AD)

Die Zielsysteme sind an einer unterschiedlichen Menge von E-Mailadressen interessiert:

  • PDB: nur primäre E-Mailadresse des primären Useraccounts («Die» Emailadresse)
  • LDAP: wie PDB
  • LDAPS: primäre E-Mailadresse des jeweiligen Useraccounts
  • AD: alle E-Mailadressen, inklusive Aliase

Die E-Mailadressen werden in den Tabellen EMAIL und EMAIL_DOMAIN erfasst. Trigger sorgen dafür, dass den Zielsystemen entsprechende Synchronisationstabellen gefüllt werden:

  • EMAIL_UP_AFT_LDAPS schreibt in SYNC_UNAME_TO_LDAPS
  • EMAIL_INS_AFT_LDAPS schreibt in SYNC_UNAME_TO_LDAPS
  • EMAIL_UP_AFT_PDB schreibt in SS_PDB_AUTH
  • EMAIL_INS_AFT_PDB schreibt in SS_PDB_AUTH

Die Synchronisationstabellen wie SYNC_UNAME_TO_LDAPS sind immer nach demselben Prinzip aufgebaut:

Feldname Beschreibung
NUID Primärschlüssel
ZEITSTEMPEL  Datum des Inserts / letzten Änderung
IS_INSERTED 1 bedeutet, dass es sich um einen neuen Datensatz handelt
IS_UPDATED 1 bedeutet, dass der Datensatz geändert hat
IS_DELETED 1 bedeutet, dass der Datensatz gelöscht wurde

Generell interessiert nicht, was genau geändert wurde - diese Daten können ja jederzeit aktuell aus den entsprechenden Tabellen ausgelesen werden. Es ist einfacher und schneller, ein bestimmtes Objekt komplett zu aktualisieren als jede Datenkategorie einzeln (Adresse, Anrede, E-Mail, Gruppenzugehörigkeiten). Die Anzahl und Komplexität der beteiligten Datenbank-Objekte und cronjobs kann dadurch massiv verringert werden. Pro Uname soll jeweils nur 1 Datensatz in der Synchronisationstabelle vorhanden sein. Ist der Datensatz bereits vorhanden, so soll der Zeitstempel aktualisiert und die Flags gesetzt werden. Es ist gut möglich, dass ein Datensatz sowohl bei IS_INSERTED als auch bei IS_DELETED eine 1 gesetzt hat. Der synchronisationsjob selbst entscheidet, welche Flags er mit welcher Priorität behandelt. Es gilt das Grundprinzip: Trigger sollen so einfach wie möglich gehalten werden.

Der Name der Synchronisationstabelle ist diskutabel, der Fokus bezieht sich hier auf die entsprechende Tabelle in der Datenbank, nicht auf das posixAccount - Objekt im LDAPS. Wichtig ist aber vielmehr, dass die primären Tabellen, also EMAIL, ADRESSE, PERSON, NGROUP_MEBER direkt in diese Synchronisationstabelle schreiben. Trigger-Kaskaden sind zu vermeiden, da sie manchmal sehr schwer zu debuggen sind.

Synchronisation zu den Zielsystemen

Generell wird für die Synchronisation der Zielsysteme die Tabelle UPDATE_PERSON abgearbeitet und bei erfolgreicher Abarbeitung das Synchronisationsflag auf 0 gesetzt.
Zielsystem cronjob Felder
Aladin sync_aladin.pl e_Mail
LDAPS update_LDAPS.pl mail
AD direkt via Webinterface (Admin-Tool) mail, proxyAddresses, targetAddress, deliverAndRedirect

-- SwenVermeul - 12 Nov 2007

Topic revision: r3 - 2011-10-10 - 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