Jelmer Vernooij - Sambajelmer/openchange-linuxworld2009.pdf · 2009. 11. 5. · MAPI Messaging API...
Transcript of Jelmer Vernooij - Sambajelmer/openchange-linuxworld2009.pdf · 2009. 11. 5. · MAPI Messaging API...
MAPI MAPI/RPC OpenChange Huidige status Toekomst
OpenChange
Jelmer Vernooij
OpenChange
LinuxWorld 2009, Utrecht4 november 2009
Jelmer Vernooij
OpenChange
OpenChange
MAPI MAPI/RPC OpenChange Huidige status Toekomst
Wie ben ik?
I Student InformaticaI Sinds 2001 Samba ontwikkelaar
I Voornamelijk Samba 4I Sinds 2005 OpenChange ontwikkelaarI Debian Ontwikkelaar
Jelmer Vernooij
OpenChange
OpenChange
MAPI MAPI/RPC OpenChange Huidige status Toekomst
Microsoft Exchange
I Microsoft “Groupware”I E-mailI KalenderI TakenI Contactpersonen
Common use-case
Server Microsoft Exchange ServerClient Microsoft Outlook
I Onderdeel van Microsoft Office
Jelmer Vernooij
OpenChange
OpenChange
MAPI MAPI/RPC OpenChange Huidige status Toekomst
OpenChange
I Free Software implementatie van het MAPI/RPC protocol(GPLv3)
Waarom?I Integratie in bestaande netwerkenI FlexibiliteitI Prijs
I Microsoft Exchange Server Licensies zijn duur
Jelmer Vernooij
OpenChange
OpenChange
MAPI MAPI/RPC OpenChange Huidige status Toekomst
Agenda
MAPI
MAPI/RPC
OpenChange
Huidige status
Toekomst
Jelmer Vernooij
OpenChange
OpenChange
MAPI MAPI/RPC OpenChange Huidige status Toekomst
MAPI
Messaging APII Ontworpen voor “MS Mail” in 1987
I Oorspronkelijk alleen voor e-mailI Later ook voor kalender, adresboek, taken
I Gebaseerd op de X.400 standaardI Slechts een API, geen netwerk protocol
Jelmer Vernooij
OpenChange
OpenChange
MAPI MAPI/RPC OpenChange Huidige status Toekomst
MAPI / MAPI/RPC
Jelmer Vernooij
OpenChange
OpenChange
MAPI MAPI/RPC OpenChange Huidige status Toekomst
MAPI/RPC Layering
I MAPI/RPC gebruikt meestal DCE/RPC over TCP/IP ofHTTP
I Nauw geintegreerd met Windows domeinI Gebruikersbeheer en -rechtenI Policies
Jelmer Vernooij
OpenChange
OpenChange
MAPI MAPI/RPC OpenChange Huidige status Toekomst
DCE/RPCI Algemeen Remote
Procedure Call ProtocolI Goed voorbeeld van
design-by-committeeI Oorspronkelijk een open
standaardI Veelvuldig gebruikt binnen
WindowsI Werkt over verschillende
“transports”I TCP/IPI SMB Named PipesI HTTP
I Unix Domain Sockets
Jelmer Vernooij
OpenChange
OpenChange
MAPI MAPI/RPC OpenChange Huidige status Toekomst
DCE/RPCI Algemeen Remote
Procedure Call ProtocolI Goed voorbeeld van
design-by-committeeI Oorspronkelijk een open
standaardI Veelvuldig gebruikt binnen
WindowsI Werkt over verschillende
“transports”I TCP/IPI SMB Named PipesI HTTPI Unix Domain Sockets
Jelmer Vernooij
OpenChange
OpenChange
MAPI MAPI/RPC OpenChange Huidige status Toekomst
IDL
I IDL: Interface DescriptionLanguage
I Omschrijft formaat van eenfunctie call in het protocol
I Door compiler omgezetnaar (o.a.) C code
IDL Code
NTSTATUSunixinfo GetPWUid ([in,out,ref,range(0,1023)]uint32 *count,[in,size is(*count)]hyper uids[],[out,size is(*count)]unixinfo GetPWUidInfoinfos[*] );
Jelmer Vernooij
OpenChange
OpenChange
MAPI MAPI/RPC OpenChange Huidige status Toekomst
OpenChange: Doel
I Free Software implementatie van het MAPI/RPC protocol(GPLv3)
I ClientI ServerI Proxy
I Protocol implementatie, geen API implementatieI Infrastructuur-project
I Focus op integratie met andere projectenI “Standaard” protocol van ExchangeI Bug-voor-bug, feature-voor-feature compatible
I Geen modificatie aan clients/serversI Geen “connectors”
Jelmer Vernooij
OpenChange
OpenChange
MAPI MAPI/RPC OpenChange Huidige status Toekomst
OpenChange Project geschiedenis
I Jong projectI Uit de hand gelopen afstudeerprojectI Gestart in 2005
I Tweetalig: Frans / EngelsI 4 actieve developers, 2 niet-developersI Nauwe samenwerking met het Samba team
Jelmer Vernooij
OpenChange
OpenChange
MAPI MAPI/RPC OpenChange Huidige status Toekomst
Samba
I OpenChange leunt op Samba 4 voor librariesI DCE/RPC basis implementatieI LDAPI Gebruikersbeheer in Windows netwerken
I OpenChange Server is een plugin
I Versies van OpenChange en Samba zijn erg nauwgerelateerd
Jelmer Vernooij
OpenChange
OpenChange
MAPI MAPI/RPC OpenChange Huidige status Toekomst
Methode van ontwikkelen
1. Protocol uitzoeken door middel van netwerk analyse
2. IDL schrijven3. Testsuites schrijven en testen tegen Exchange4. Library call toevoegen
Jelmer Vernooij
OpenChange
OpenChange
MAPI MAPI/RPC OpenChange Huidige status Toekomst
Methode van ontwikkelen
1. Protocol uitzoeken door middel van netwerk analyse2. IDL schrijven
3. Testsuites schrijven en testen tegen Exchange4. Library call toevoegen
Jelmer Vernooij
OpenChange
OpenChange
MAPI MAPI/RPC OpenChange Huidige status Toekomst
Methode van ontwikkelen
1. Protocol uitzoeken door middel van netwerk analyse2. IDL schrijven3. Testsuites schrijven en testen tegen Exchange
4. Library call toevoegen
Jelmer Vernooij
OpenChange
OpenChange
MAPI MAPI/RPC OpenChange Huidige status Toekomst
Methode van ontwikkelen
1. Protocol uitzoeken door middel van netwerk analyse2. IDL schrijven3. Testsuites schrijven en testen tegen Exchange4. Library call toevoegen
Jelmer Vernooij
OpenChange
OpenChange
MAPI MAPI/RPC OpenChange Huidige status Toekomst
MSDN Documentatie
I Gepubliceerd vrijwel gelijktijdig met Samba documentatieI Opvallend compleetI Minder garanties dan Samba
I OpenChange is geen PFIF onderdeel
Jelmer Vernooij
OpenChange
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?)
Jelmer Vernooij
OpenChange
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?)
Jelmer Vernooij
OpenChange
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?)
Jelmer Vernooij
OpenChange
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?)
Jelmer Vernooij
OpenChange
OpenChange
MAPI MAPI/RPC OpenChange Huidige status Toekomst
libmapi
I libmapi: C Library die MAPI/RPC spreektI Vrijwel compleetI Nog enkele (onbelangrijke) delen missen
I libmapi++: C++ wrapper rond libmapiI Perl bindingsI Python bindings onderweg
Jelmer Vernooij
OpenChange
OpenChange
MAPI MAPI/RPC OpenChange Huidige status Toekomst
Client side
I openchangeclientI exchange2mboxI exchange2icalI exchange2pop3I fetchmail plugin
Jelmer Vernooij
OpenChange
OpenChange
MAPI MAPI/RPC OpenChange Huidige status Toekomst
Desktop Integratie — Evolution
I Oorspronkelijk ontwikkeld door een groep studentenI Nu ontwikkeld door NovellI Plugin beschikbaar vanaf GNOME 2.26
I O.a. vanwege de licensie
Jelmer Vernooij
OpenChange
OpenChange
MAPI MAPI/RPC OpenChange Huidige status Toekomst
Desktop Integratie — KDE
I 2008 Google Summer of Code projectI Compleet in C++, gebaseerd op libmapi++I Plugin beschikbaar voor Akonadi (KDE 4)I Nog niet functioneel genoeg
Jelmer Vernooij
OpenChange
OpenChange
MAPI MAPI/RPC OpenChange Huidige status Toekomst
Desktop Integratie — Mozilla
I Mislukt 2009 Google Summer of Code projectI Alleen mogelijk als plugin vanwege licentie
I Mozilla accepteert geen code in core die afhankelijk is vanGPL
I Weinig interesse voor (?)
Jelmer Vernooij
OpenChange
OpenChange
MAPI MAPI/RPC OpenChange Huidige status Toekomst
MAPI proxy
I (Transparante) proxy voor MAPI/RPCI Gebruikt voor:
I OptimaliserenI Gebruikt in een WAN-optimiser
I MonitorenI Debuggen
Overview
Jelmer Vernooij
OpenChange
OpenChange
MAPI MAPI/RPC OpenChange Huidige status Toekomst
Wireshark ondersteuning
I Vanaf Wireshark 1.1 ?I Decodeert en toont MAPI verkeerI Gegenereerd aan de hand van OpenChange IDLI Nog niet compleet
Jelmer Vernooij
OpenChange
OpenChange
MAPI MAPI/RPC OpenChange Huidige status Toekomst
Server
I Momenteel nog een “plugin” voor SambaI Veel benodigde code is al aanwezig vanwege de proxy
serverI Stapsgewijs:
1. Testsuite (ontwikkeld tegen Exchange)2. “Domme implementatie” met eenvoudige backends3. Ondersteuning meer/andere backends4. Mappen naar open protocollen
I SMTP (LMTP?)I IMAPI iCal / CalDAV ?
Eerste releaseMei 2010 ?
Jelmer Vernooij
OpenChange
OpenChange
MAPI MAPI/RPC OpenChange Huidige status Toekomst
Overig
I Ondersteuning voor Samba 3I Mogelijk al vanaf Samba 3.5
I DCE/RPC over HTTP ondersteuningI Nodig voor firewalls
Jelmer Vernooij
OpenChange
OpenChange
MAPI MAPI/RPC OpenChange Huidige status Toekomst
Verschillen met andere Exchange replacements
I Implementatie van het Exchange protocolI Geen client-side plugins nodig (zoals onder andere
I Geen nieuwe storage backends aan server kant
Jelmer Vernooij
OpenChange
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/openchangeI Ubuntu: http://packages.ubuntu.com/openchange
Jelmer Vernooij
OpenChange
OpenChange