MAPI
MAPI/RPC
OpenChange
Huidige status
Toekomst
OpenChange Jelmer Vernooij OpenChange
LinuxWorld 2009, Utrecht 4 november 2009 OpenChange Jelmer Vernooij OpenChange
MAPI
MAPI/RPC
OpenChange
Huidige status
Toekomst
Wie ben ik?
I I
Student Informatica Sinds 2001 Samba ontwikkelaar I
Voornamelijk Samba 4
I
Sinds 2005 OpenChange ontwikkelaar
I
Debian Ontwikkelaar
OpenChange Jelmer Vernooij OpenChange
MAPI
MAPI/RPC
OpenChange
Huidige status
Toekomst
Microsoft Exchange I
Microsoft “Groupware” I I I I
E-mail Kalender Taken Contactpersonen
Common use-case Server Microsoft Exchange Server Client Microsoft Outlook I
Onderdeel van Microsoft Office
OpenChange Jelmer Vernooij OpenChange
MAPI
MAPI/RPC
OpenChange
Huidige status
Toekomst
OpenChange
I
Free Software implementatie van het MAPI/RPC protocol (GPLv3)
Waarom? I
Integratie in bestaande netwerken
I
Flexibiliteit Prijs
I
I
Microsoft Exchange Server Licensies zijn duur
OpenChange Jelmer Vernooij OpenChange
MAPI
MAPI/RPC
OpenChange
Huidige status
Toekomst
Agenda MAPI MAPI/RPC OpenChange Huidige status Toekomst
OpenChange Jelmer Vernooij OpenChange
MAPI
MAPI/RPC
OpenChange
Huidige status
Toekomst
MAPI
Messaging API I
Ontworpen voor “MS Mail” in 1987 I I
Oorspronkelijk alleen voor e-mail Later ook voor kalender, adresboek, taken
I
Gebaseerd op de X.400 standaard
I
Slechts een API, geen netwerk protocol
OpenChange Jelmer Vernooij OpenChange
MAPI
MAPI/RPC
OpenChange
Huidige status
Toekomst
MAPI / MAPI/RPC
OpenChange Jelmer Vernooij OpenChange
MAPI
MAPI/RPC
OpenChange
Huidige status
Toekomst
MAPI/RPC Layering
I
I
MAPI/RPC gebruikt meestal DCE/RPC over TCP/IP of HTTP ¨ met Windows domein Nauw geintegreerd I I
Gebruikersbeheer en -rechten Policies
OpenChange Jelmer Vernooij OpenChange
MAPI
MAPI/RPC
OpenChange
Huidige status
Toekomst
DCE/RPC I
Algemeen Remote Procedure Call Protocol
I
Goed voorbeeld van design-by-committee
I
Oorspronkelijk een open standaard
I
Veelvuldig gebruikt binnen Windows Werkt over verschillende “transports”
I
I I I
TCP/IP SMB Named Pipes HTTP OpenChange
Jelmer Vernooij OpenChange
MAPI
MAPI/RPC
OpenChange
Huidige status
Toekomst
DCE/RPC I
Algemeen Remote Procedure Call Protocol
I
Goed voorbeeld van design-by-committee
I
Oorspronkelijk een open standaard
I
Veelvuldig gebruikt binnen Windows Werkt over verschillende “transports”
I
I I I I Jelmer Vernooij OpenChange
TCP/IP SMB Named Pipes HTTP Unix Domain Sockets
OpenChange
MAPI
MAPI/RPC
OpenChange
Huidige status
Toekomst
IDL IDL Code I
IDL: Interface Description Language
I
Omschrijft formaat van een functie call in het protocol
I
Door compiler omgezet naar (o.a.) C code
NTSTATUS unixinfo GetPWUid ( [in,out,ref,range(0,1023)] uint32 *count, [in,size is(*count)] hyper uids[], [out,size is(*count)] unixinfo GetPWUidInfo infos[*] );
OpenChange Jelmer Vernooij OpenChange
MAPI
MAPI/RPC
OpenChange
Huidige status
Toekomst
OpenChange: Doel I
Free Software implementatie van het MAPI/RPC protocol (GPLv3) I I I
I I
Protocol implementatie, geen API implementatie Infrastructuur-project I
I I
Client Server Proxy
Focus op integratie met andere projecten
“Standaard” protocol van Exchange Bug-voor-bug, feature-voor-feature compatible I I
Geen modificatie aan clients/servers Geen “connectors” OpenChange
Jelmer Vernooij OpenChange
MAPI
MAPI/RPC
OpenChange
Huidige status
Toekomst
OpenChange Project geschiedenis
I
Jong project I I
Uit de hand gelopen afstudeerproject Gestart in 2005
I
Tweetalig: Frans / Engels
I
4 actieve developers, 2 niet-developers
I
Nauwe samenwerking met het Samba team
OpenChange Jelmer Vernooij OpenChange
MAPI
MAPI/RPC
OpenChange
Huidige status
Toekomst
Samba
I
OpenChange leunt op Samba 4 voor libraries I I I
DCE/RPC basis implementatie LDAP Gebruikersbeheer in Windows netwerken
I
OpenChange Server is een plugin
I
Versies van OpenChange en Samba zijn erg nauw gerelateerd
OpenChange Jelmer Vernooij OpenChange
MAPI
MAPI/RPC
OpenChange
Huidige status
Toekomst
Methode van ontwikkelen
1. Protocol uitzoeken door middel van netwerk analyse
OpenChange Jelmer Vernooij OpenChange
MAPI
MAPI/RPC
OpenChange
Huidige status
Toekomst
Methode van ontwikkelen
1. Protocol uitzoeken door middel van netwerk analyse 2. IDL schrijven
OpenChange Jelmer Vernooij OpenChange
MAPI
MAPI/RPC
OpenChange
Huidige status
Toekomst
Methode van ontwikkelen
1. Protocol uitzoeken door middel van netwerk analyse 2. IDL schrijven 3. Testsuites schrijven en testen tegen Exchange
OpenChange Jelmer Vernooij OpenChange
MAPI
MAPI/RPC
OpenChange
Huidige status
Toekomst
Methode van ontwikkelen
1. Protocol uitzoeken door middel van netwerk analyse 2. IDL schrijven 3. Testsuites schrijven en testen tegen Exchange 4. Library call toevoegen
OpenChange Jelmer Vernooij OpenChange
MAPI
MAPI/RPC
OpenChange
Huidige status
Toekomst
MSDN Documentatie
I
Gepubliceerd vrijwel gelijktijdig met Samba documentatie
I
Opvallend compleet Minder garanties dan Samba
I
I
OpenChange is geen PFIF onderdeel
OpenChange Jelmer Vernooij OpenChange
MAPI
MAPI/RPC
OpenChange
Huidige status
Toekomst
Releases 0.2 MAILOOK — eerste client ondersteuning (Februari 2007) 0.4 WARP – eerste ondersteuning voor taken, kalenders, contacten (Juni 2007) 0.6 HOLODECK – GPLv3, administratie tools (Oktober 2007) 0.7 PHASER – documentatie, command-line tools (April 2008)
OpenChange Jelmer Vernooij OpenChange
MAPI
MAPI/RPC
OpenChange
Huidige status
Toekomst
Releases 0.2 MAILOOK — eerste client ondersteuning (Februari 2007) 0.4 WARP – eerste ondersteuning voor taken, kalenders, contacten (Juni 2007) 0.6 HOLODECK – GPLv3, administratie tools (Oktober 2007) 0.7 PHASER – documentatie, command-line tools (April 2008) 0.8 ROMULUS – client side compleet, proxy (December 2008)
OpenChange Jelmer Vernooij OpenChange
MAPI
MAPI/RPC
OpenChange
Huidige status
Toekomst
Releases 0.2 MAILOOK — eerste client ondersteuning (Februari 2007) 0.4 WARP – eerste ondersteuning voor taken, kalenders, contacten (Juni 2007) 0.6 HOLODECK – GPLv3, administratie tools (Oktober 2007) 0.7 PHASER – documentatie, command-line tools (April 2008) 0.8 ROMULUS – client side compleet, proxy (December 2008) I
Opgenomen in alle grote Linux distributies (Zomer 2009)
OpenChange Jelmer Vernooij OpenChange
MAPI
MAPI/RPC
OpenChange
Huidige status
Toekomst
Releases 0.2 MAILOOK — eerste client ondersteuning (Februari 2007) 0.4 WARP – eerste ondersteuning voor taken, kalenders, contacten (Juni 2007) 0.6 HOLODECK – GPLv3, administratie tools (Oktober 2007) 0.7 PHASER – documentatie, command-line tools (April 2008) 0.8 ROMULUS – client side compleet, proxy (December 2008) I
Opgenomen in alle grote Linux distributies (Zomer 2009)
1.0 BORG – eenvoudige server (Voorjaar 2010?)
OpenChange Jelmer Vernooij OpenChange
MAPI
MAPI/RPC
OpenChange
Huidige status
Toekomst
libmapi
I
libmapi: C Library die MAPI/RPC spreekt I I
Vrijwel compleet Nog enkele (onbelangrijke) delen missen
I
libmapi++: C++ wrapper rond libmapi
I
Perl bindings
I
Python bindings onderweg
OpenChange Jelmer Vernooij OpenChange
MAPI
MAPI/RPC
OpenChange
Huidige status
Toekomst
Client side
I
openchangeclient
I
exchange2mbox
I
exchange2ical
I
exchange2pop3
I
fetchmail plugin
OpenChange Jelmer Vernooij OpenChange
MAPI
MAPI/RPC
OpenChange
Huidige status
Toekomst
Desktop Integratie — Evolution
I
Oorspronkelijk ontwikkeld door een groep studenten
I
Nu ontwikkeld door Novell Plugin beschikbaar vanaf GNOME 2.26
I
I
O.a. vanwege de licensie
OpenChange Jelmer Vernooij OpenChange
MAPI
MAPI/RPC
OpenChange
Huidige status
Toekomst
Desktop Integratie — KDE
I
2008 Google Summer of Code project
I
Compleet in C++, gebaseerd op libmapi++
I
Plugin beschikbaar voor Akonadi (KDE 4)
I
Nog niet functioneel genoeg
OpenChange Jelmer Vernooij OpenChange
MAPI
MAPI/RPC
OpenChange
Huidige status
Toekomst
Desktop Integratie — Mozilla
I I
Mislukt 2009 Google Summer of Code project Alleen mogelijk als plugin vanwege licentie I
I
Mozilla accepteert geen code in core die afhankelijk is van GPL
Weinig interesse voor (?)
OpenChange Jelmer Vernooij OpenChange
MAPI
MAPI/RPC
OpenChange
Huidige status
Toekomst
MAPI proxy I I
(Transparante) proxy voor MAPI/RPC Gebruikt voor: I
Optimaliseren I
I I
Gebruikt in een WAN-optimiser
Monitoren Debuggen
Overview
OpenChange Jelmer Vernooij OpenChange
MAPI
MAPI/RPC
OpenChange
Huidige status
Toekomst
Wireshark ondersteuning
I
Vanaf Wireshark 1.1 ?
I
Decodeert en toont MAPI verkeer
I
Gegenereerd aan de hand van OpenChange IDL
I
Nog niet compleet
OpenChange Jelmer Vernooij OpenChange
MAPI
MAPI/RPC
OpenChange
Huidige status
Toekomst
Server I
Momenteel nog een “plugin” voor Samba
I
Veel benodigde code is al aanwezig vanwege de proxy server Stapsgewijs:
I
1. 2. 3. 4.
Testsuite (ontwikkeld tegen Exchange) “Domme implementatie” met eenvoudige backends Ondersteuning meer/andere backends Mappen naar open protocollen I I I
SMTP (LMTP?) IMAP iCal / CalDAV ?
Eerste release Mei 2010 ? Jelmer Vernooij OpenChange
OpenChange
MAPI
MAPI/RPC
OpenChange
Huidige status
Toekomst
Overig
I
Ondersteuning voor Samba 3 I
I
Mogelijk al vanaf Samba 3.5
DCE/RPC over HTTP ondersteuning I
Nodig voor firewalls
OpenChange Jelmer Vernooij OpenChange
MAPI
MAPI/RPC
OpenChange
Huidige status
Toekomst
Verschillen met andere Exchange replacements
I
Implementatie van het Exchange protocol I
I
Geen client-side plugins nodig (zoals onder andere
Geen nieuwe storage backends aan server kant
OpenChange Jelmer Vernooij OpenChange
MAPI
MAPI/RPC
OpenChange
Huidige status
Toekomst
Meer informatie
I
http://www.openchange.org/
I
http://mapiproxy.openchange.org/
I
#openchange on irc.freenode.net
I
Debian: http://packages.debian.org/openchange
I
Ubuntu: http://packages.ubuntu.com/openchange
OpenChange Jelmer Vernooij OpenChange