Wege und API's

Ehe Sie generell mit Exchange und Outlook eine Lösung entwickeln wollen, müssen Sie selbst natürlich die verschiedenen Zugriffswege und API's kennen, damit Sie die richtige Schnittstelle nutzen.

What API should I be using for new Exchange 2007 development? http://blogs.technet.com/b/exchange/archive/2007/06/04/439829.aspx
813349 Support policy for Microsoft Exchange APIs with the .NET Framework applications
Exchange API-spotting Exchange Developer Roadmap
http://blogs.msdn.com/exchangedev/archive/2008/05/22/exchange-developer-roadmap.aspx
Planning for Internal and Third-Party Applications
http://technet.microsoft.com/en-us/library/ee861107.aspx

Ich habe hier einmal exemplarisch einige Wege zu den Daten in Exchange aufgeführt:

Einige Zugriffe erfolgen von einem Client oder anderen Diensten über das Netzwerk und einige Zugriffe sind nur auf dem Server selbst möglich, bzw. bei der Installation der Exchange Admin Tools teilweise auch remote nutzbar.

Nummer Beschreibung

VBA
Client: Outlook VBA
Outlook selbst enthält die Komponenten von Visual Basic for Applications, mit denen Sie umfangreiche Lösungen mit Outlook entwickeln können. Voraussetzung für die Funktion ist aber ein gestartetes Outlook und die Nutzung von Funktionen, die durch Outlook oder den Anwender angestoßen werden.

VBScript
Client: Outlook VBScript
Mittels VBScript können Sie ebenfalls außerhalb von Outlook dennoch auf die Objekte in Outlook zugreifen. Das Outlook Objekt Modell erlaubt umfangreiche Zugriffe. Nur wenn Sie bestimmte Dinge verändern, schreiben oder senden wollen, kommt bei neueren Outlook Modellen eine Sicherheitswarnung.

Formulare
Client: Outlook Formulare
Weiterhin erlaubt Outlook in eigenen Formularen Code zu hinterlegen, um die Formulare "intelligent" zu gestalten. So können bestimmte Funktionen auf dem Client realisiert werden. Dies erfordert aber Outlook und unterstützt kein OWA oder andere Clients.

DLL
Outlook DLL
Outlook selbst kann durch DLLs um Funktionen erweitert werden. Exchange selbst erweitert Outlook so um die Karteikarten bei Postfächern und Regeln. Microsoft Fax,  diverse Telefoniedienste und andere Funktionen werden ähnlich nachgerüstet.

CDO/MAPI
Server: CDO/CDOEX/CDOEXM/MAPI

Client:CDO und MAPI
Sie können aber auch ohne Outlook direkt auf MAPI aufsetzen um Nachrichten zu erstellen, zu senden oder auch eingehende Nachrichten zu verarbeiten. Denken Sie aber daran, dass dazu MAPI installiert und ein MAPI-Profile konfiguriert sein muss.

Auf dem Server gibt es neben der MAPI und WebDAV Schnittstelle auch die Option, per CDOEX und CDOEXM die Einstellungen der Benutzer und Server zu verändern. Besonders CDOEXM eignet sich wunderbar auch per VBScript um bestimmte administrative Tätigkeiten zu automatisieren. Siehe auch  WSH - MBSIZE. Diese Schnittstelle ist auch auf dem Client verfügbar, wenn die Exchange Admin Tools installiert sind.

CDOEX ist seit Exchange 2007 "abgekündigt", d.h. es funktioniert noch mit Exchange 2007 und die folgenden 10 Jahre aber darüber hinaus gibt es keine Zusicherung mehr.
http://blogs.technet.com/b/exchange/archive/2005/09/15/410941.aspx

a
WebDAV
Client-Server: HTTP per WebDAV.
Um MAPI und all die Probleme zu umgehen gibt es mit Exchange 2000 und höher die Option per HTTP auf Inhalte zuzugreifen. Die meisten Anwender kennen den Zugriff nur als "Outlook Web Access", aber es ist ein universeller Weg, auf Content in Exchange zuzugreifen.

WebDAV ist seit Exchange 2007 "abgekündigt", d.h. es funktioniert noch mit Exchange 2007 und die folgenden 10 Jahre aber darüber hinaus gibt es keine Zusicherung mehr.
http://blogs.technet.com/b/exchange/archive/2005/09/15/410941.aspx

b
Webservice
Erstmals mit Exchange 2007 gibt es auch eine echte "Webservice"-Schnittstelle auf die Exchange Datenbank. Diese wird z.B. von Outlook 2007 genutzt, die so die Frei/Belegt-Daten anderer Benutzer abfragt.

Webservice


LDAP
ADSI
Client-Server: AD mittels LDAP/ADSI
Für den Zugriff auf die Verzeichnisinformationen eignet sich hingegen LDAP bzw. ADSI. Über diesen Weg können Sie auf die Adressbücher und Konfigurationsinformation der Exchange Organisation zugreifen. Allerdings ist damit kein Zugriff auf Inhalte in Postfächern oder gemeinsamen Ordnern (Auch keine Kontaktordner) möglich. LDAP/ADSI ist aber eine legitime Schnittstelle, um z.B.: Benutzer anzulegen, Verteiler zu pflegen etc. (Siehe auch WSH - GAL Anzeigename ändern, WSH - Benutzer mit Postfach anlegen und andere Beispiele.
Aber auch der Zugriff per XML ist möglich. (Siehe http://www.Microsoft.com/windows2000/server/evaluation/news/bulletins/dsml.asp)

Event
Server: Event Service
Skripte sind VB-Script Elemente, welche zwar mit Outlook erstellt und in einem Ordner abgelegt werden aber der Server interpretiert diese durch den Dienst Event Service, welche gestartet werden muss. Diese Schnittstelle ist bei Exchange 2000/2003 eigentlich eher aus Kompatibilitätsgründen zu Exchange 5.5 enthalten aber per Default nicht aktiviert. Als leistungsfähigere Alternative stehen EventSinks zur Verfügung

SMTP
SMTP Pickup und Port 25, CDONTS
Auf jedem Windows 200x Server, auf dem ein Microsoft SMTP-Server installiert ist, können Nachrichten über Port 25 (z.B.  mit Blat, über das Pickup Verzeichnis oder CDONTS versendet werden.

Eingehende Nachrichten können über Transport Event Sinks und Protokoll Event Sinks (Server: EventSink) verarbeitet werden.

Server ExOLEDB
Exklusiv auf dem Exchange Server gibt es noch die OLEDB-Schnittstelle, die einen Datenbankähnlichen Zugriff auf Exchange Inhalte zulässt. Allerdings ist diese Funktion nur auf dem Exchange Server selbst verfügbar und kann nur auf Daten auf diesem Exchange Server zugreifen.

ExOLEDB ist seit Exchange 2007 "abgekündigt", d.h. es funktioniert noch mit Exchange 2007 und die folgenden 10 Jahre aber darüber hinaus gibt es keine Zusicherung mehr.
http://blogs.technet.com/b/exchange/archive/2005/09/15/410941.aspx

Server: EventSink
EventSinks mehr als nur der Nachfolger des begrenzt einsetzbaren Server: Event Service. Sinks werden direkt von Store oder SMTP-Server gestartet und erlauben damit auch eine synchrone Verarbeitung.

Diese Sinks erlauben eine komplette Modifikation jeder per SMTP ein oder ausgehenden Nachricht. Sie können hier z.B.: Virenscanner, Disclaimer, Spamfilter und vieles mehr realisieren. Siehe auch SMTP-EventSink, EventDisclaimer einfügen, MessageID-Fix und viele andere Beispiele


Server: AVAPI
AVAPI
Diese Schnittstelle ist nicht öffentlich wird primär von Virenscannern genutzt. Siehe auch Virenschutz
Regeln Regeln im Posteingang und Regeln auf öffentlichen Ordnern

Diese Option, bestimmte Funktionen in Exchange und Outlook zu automatisieren ist keine Programmierung im engeren Sinne. Sie finden die Beschreibung hierzu auf Regeln

M: Der Zugriff auf das "M:-Laufwerk" eines Servers sehe ich nicht als legitime Schnittstelle für Entwickler an, da dieser Zugriff mit zu vielen Problemen behaftet ist. Siehe dazu auch Laufwerk M:.
Connector Noch nicht weiter beschrieben ist das Connector-API, mit der sich fremde Connectoren (FAX, SMS, SAP etc.) in Exchange mit einbinden können.
WMI Mit Exchange 2000/2003 ist der Zugriff auf einige Einstellungen auch per WMI möglich. So können per WMI z.B. die Größe von Mailboxen, die Länge der Wartenschlangen und andere Daten abgefragt werden

Ich hoffe diese kurze Einleitung hat ihnen einen Überblick über die verschiedenen Zugriffswege auf Exchange und Outlook gezeigt. Sie sollten auf jeden Fall mehrere Schnittstellen begutachten, um ihre Aufgabenstellung zu lösen.

Während jede API auf dem Client mehr oder minder Outlook und MAPI-Profile benötigt, sind ServerAPIs wie WebDAV oder ADSI sehr flexibel und leistungsfähig, aber eben auch näher am System. CDOEX und CDOEXM erlauben hier ein einfacheres Objektmodell, aber sind nur auf dem Server zu nutzen.

Microsoft Exchange Server 2007 Service Pack 1 (SP1) SDK December 2008
http://www.microsoft.com/downloads/details.aspx?FamilyID=47720d33-fa5a-4af4-a8eb-fa39695cbad1&displaylang=en

Kleine Geschichte der APIs

Ich versuche hier auf de MSXFAQ nur die APIs zu beschreiben, die aktuell und sinnvoll einzusetzen sind. Aber wenn Sie etwas in der Vergangenheit wühlen, dann werden Sie feststellen, dass seit Microsoft 3.0 jede Menge APIs den Weg bis zum heutigen Tag gepflastert haben

Jahr APIs

Quelle

Beschreibung
1992
  • SimpleMAPI 1.0

MS-Mail 3.0

Diese Schnittstelle wurde mit Microsoft Mail 3.0 erstmals veröffentlicht. Das war der Startschutz von MAPI und es was sicher nicht abzusehen, dass es so ein Langläufer wird. Damals gab es noch andere MAPI-Schnittstellen wie VIM (Vendor Independent Messaging von Lotus Notes, und CMC  Common Messaging C???  von Novell/WordPerfect)
1995
  • Extended MAPI

Windows95

Durch Windows 95 wurde auch der neue "Exchange Client" verfügbar, welcher nun der Nachfolger von MS-Mail sein sollte. Dieser Client wurde auch mit Exchange Server genutzt, ehe Outlook 97 dann den Wechsel bedeutet (Nicht mit dem Exchange Server) zu verwechseln.
1996
  • Directory API
  • Electronic Forms Designer
  • Exchange Developer Kit Gateway
  • OLE Messaging 1.0 (CDO 1.0)
  • Common Messaging Calls 1.0

Exchange 4.0

Exchange 4.0 hat nun auch im Backend die alte Microsoft Mail Datenbank (MAILDATA) ersetzt und entsprechend sowohl für den Server als auch auf dem Client neue APIs mitgebracht
1997
  • Active Messaging SDK 1.1
    (CDO 1.1)

Exchange 5.0

 
1997
  • CDO 1.2
  • CDO Rendering (CDOHTML)
  • Event Service Agents

Exchange 5.5

Exchange 5.5 hat Exchange weiter für das Internet geöffnet. Erstmals konnte per "OWA" auf das Postfach zugegriffen werden.

Zudem gab es nun auch den "Event Agent", welcher auf dem Server eingestellte Ordner überwachte und Skripte beim Eintreffen neuer Nachrichten ausführt.

1997
  • CDONTS

Windows NT4 Option Pack

Durch das Windows NT4 Option pack war es nun mit dem darin enthaltenen IIS4 und dem SMTP-Server möglich, auch Mails mit Windows zu verarbeiten. CDONTS war dazu die erste API, um Nachrichten auf dem Server zu senden
1998
  • CDO 1.2.1
  • Routing Objects
  • HTML Form Converter

Exchange 5.5 SP1

 
2000
  • Antivirus API (VSAPI)

Exchange 5.5

In der Zeit hat sich Sybari den Grundstock für ihr Unternehmen gelegt, indem Sie einen Weg gefunden haben, Viren in Exchange zu finden und zu stoppen, ehe diese in der Datenbank landen.

Erst durch die VSAPI, die Microsoft nachgereicht hat, konnten alle Hersteller dann über eine offizielle API gehen.

2000
  • CDO for Exchange 2000 (CDOEx)
  • CDO for Exchange Management (CDOExM)
  • CDO for Workflow
  • Exchange Installable File System
  • Exchange OLEDB provider (ExOLEDB)
  • WSS Forms
  • FrontPage Extensions
  • OWA URL commands
  • Backup and Restore API (a.k.a. ESEdbcli2)
  • Queue Viewer API
  • Store Events
  • WebDAV
  • WMI classes for Exchange management
  • Workflow Designer

Exchange 2000

Das Jahr 2000 war auch der Start von Exchange 2000 und einer ganz neuen Plattform für Nachrichten und Zusammenarbeit. Entsprechend gibt es einen ganzen Satz neuer APIs die heute noch genutzt werden.

Einige hingegen werden eher selten eingesetzt, z.B.: die Queue Viewer API

2000
  • CDO for Windows 2000 (CDOSYS)
  • SMTP Transport Events

Windows 2000

Durch die Installation von Windows 2000 und dem darin enthaltenen SMTP-Server kommen ebenfalls einige APIs mit, die auch in Exchange vorhanden sind.
2001
  • Antivirus API 2.0 (VSAPI 2.0)

Exchange 2000

 
2003
  • Antivirus API 2.0 (VSAPI 2.3)

Exchange 2003

Im Hinblick auf APIs hat Exchange 2003 nicht viel Neuerungen mitgebracht. Es ist ja auch eher eine kleine aber wichtige Weiterentwicklung von Exchange 2000.

Weitere Links

Tags:Programmieren Code VBScript Eventsink Wege