Jelmer Vernooij - Sambajelmer/openchange-linuxworld2009.pdf · 2009. 11. 5. · MAPI Messaging API...

34
MAPI MAPI/RPC OpenChange Huidige status Toekomst OpenChange Jelmer Vernooij OpenChange LinuxWorld 2009, Utrecht 4 november 2009 Jelmer Vernooij OpenChange OpenChange

Transcript of Jelmer Vernooij - Sambajelmer/openchange-linuxworld2009.pdf · 2009. 11. 5. · MAPI Messaging API...

Page 1: Jelmer Vernooij - Sambajelmer/openchange-linuxworld2009.pdf · 2009. 11. 5. · MAPI Messaging API I Ontworpen voor “MS Mail” in 1987 I Oorspronkelijk alleen voor e-mail I Later

MAPI MAPI/RPC OpenChange Huidige status Toekomst

OpenChange

Jelmer Vernooij

OpenChange

LinuxWorld 2009, Utrecht4 november 2009

Jelmer Vernooij

OpenChange

OpenChange

Page 2: Jelmer Vernooij - Sambajelmer/openchange-linuxworld2009.pdf · 2009. 11. 5. · MAPI Messaging API I Ontworpen voor “MS Mail” in 1987 I Oorspronkelijk alleen voor e-mail I Later

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

Page 3: Jelmer Vernooij - Sambajelmer/openchange-linuxworld2009.pdf · 2009. 11. 5. · MAPI Messaging API I Ontworpen voor “MS Mail” in 1987 I Oorspronkelijk alleen voor e-mail I Later

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

Page 4: Jelmer Vernooij - Sambajelmer/openchange-linuxworld2009.pdf · 2009. 11. 5. · MAPI Messaging API I Ontworpen voor “MS Mail” in 1987 I Oorspronkelijk alleen voor e-mail I Later

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

Page 5: Jelmer Vernooij - Sambajelmer/openchange-linuxworld2009.pdf · 2009. 11. 5. · MAPI Messaging API I Ontworpen voor “MS Mail” in 1987 I Oorspronkelijk alleen voor e-mail I Later

MAPI MAPI/RPC OpenChange Huidige status Toekomst

Agenda

MAPI

MAPI/RPC

OpenChange

Huidige status

Toekomst

Jelmer Vernooij

OpenChange

OpenChange

Page 6: Jelmer Vernooij - Sambajelmer/openchange-linuxworld2009.pdf · 2009. 11. 5. · MAPI Messaging API I Ontworpen voor “MS Mail” in 1987 I Oorspronkelijk alleen voor e-mail I Later

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

Page 7: Jelmer Vernooij - Sambajelmer/openchange-linuxworld2009.pdf · 2009. 11. 5. · MAPI Messaging API I Ontworpen voor “MS Mail” in 1987 I Oorspronkelijk alleen voor e-mail I Later

MAPI MAPI/RPC OpenChange Huidige status Toekomst

MAPI / MAPI/RPC

Jelmer Vernooij

OpenChange

OpenChange

Page 8: Jelmer Vernooij - Sambajelmer/openchange-linuxworld2009.pdf · 2009. 11. 5. · MAPI Messaging API I Ontworpen voor “MS Mail” in 1987 I Oorspronkelijk alleen voor e-mail I Later

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

Page 9: Jelmer Vernooij - Sambajelmer/openchange-linuxworld2009.pdf · 2009. 11. 5. · MAPI Messaging API I Ontworpen voor “MS Mail” in 1987 I Oorspronkelijk alleen voor e-mail I Later

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

Page 10: Jelmer Vernooij - Sambajelmer/openchange-linuxworld2009.pdf · 2009. 11. 5. · MAPI Messaging API I Ontworpen voor “MS Mail” in 1987 I Oorspronkelijk alleen voor e-mail I Later

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

Page 11: Jelmer Vernooij - Sambajelmer/openchange-linuxworld2009.pdf · 2009. 11. 5. · MAPI Messaging API I Ontworpen voor “MS Mail” in 1987 I Oorspronkelijk alleen voor e-mail I Later

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

Page 12: Jelmer Vernooij - Sambajelmer/openchange-linuxworld2009.pdf · 2009. 11. 5. · MAPI Messaging API I Ontworpen voor “MS Mail” in 1987 I Oorspronkelijk alleen voor e-mail I Later

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

Page 13: Jelmer Vernooij - Sambajelmer/openchange-linuxworld2009.pdf · 2009. 11. 5. · MAPI Messaging API I Ontworpen voor “MS Mail” in 1987 I Oorspronkelijk alleen voor e-mail I Later

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

Page 14: Jelmer Vernooij - Sambajelmer/openchange-linuxworld2009.pdf · 2009. 11. 5. · MAPI Messaging API I Ontworpen voor “MS Mail” in 1987 I Oorspronkelijk alleen voor e-mail I Later

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

Page 15: Jelmer Vernooij - Sambajelmer/openchange-linuxworld2009.pdf · 2009. 11. 5. · MAPI Messaging API I Ontworpen voor “MS Mail” in 1987 I Oorspronkelijk alleen voor e-mail I Later

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

Page 16: Jelmer Vernooij - Sambajelmer/openchange-linuxworld2009.pdf · 2009. 11. 5. · MAPI Messaging API I Ontworpen voor “MS Mail” in 1987 I Oorspronkelijk alleen voor e-mail I Later

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

Page 17: Jelmer Vernooij - Sambajelmer/openchange-linuxworld2009.pdf · 2009. 11. 5. · MAPI Messaging API I Ontworpen voor “MS Mail” in 1987 I Oorspronkelijk alleen voor e-mail I Later

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

Page 18: Jelmer Vernooij - Sambajelmer/openchange-linuxworld2009.pdf · 2009. 11. 5. · MAPI Messaging API I Ontworpen voor “MS Mail” in 1987 I Oorspronkelijk alleen voor e-mail I Later

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

Page 19: Jelmer Vernooij - Sambajelmer/openchange-linuxworld2009.pdf · 2009. 11. 5. · MAPI Messaging API I Ontworpen voor “MS Mail” in 1987 I Oorspronkelijk alleen voor e-mail I Later

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

Page 20: Jelmer Vernooij - Sambajelmer/openchange-linuxworld2009.pdf · 2009. 11. 5. · MAPI Messaging API I Ontworpen voor “MS Mail” in 1987 I Oorspronkelijk alleen voor e-mail I Later

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

Page 21: Jelmer Vernooij - Sambajelmer/openchange-linuxworld2009.pdf · 2009. 11. 5. · MAPI Messaging API I Ontworpen voor “MS Mail” in 1987 I Oorspronkelijk alleen voor e-mail I Later

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

Page 22: Jelmer Vernooij - Sambajelmer/openchange-linuxworld2009.pdf · 2009. 11. 5. · MAPI Messaging API I Ontworpen voor “MS Mail” in 1987 I Oorspronkelijk alleen voor e-mail I Later

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

Page 23: Jelmer Vernooij - Sambajelmer/openchange-linuxworld2009.pdf · 2009. 11. 5. · MAPI Messaging API I Ontworpen voor “MS Mail” in 1987 I Oorspronkelijk alleen voor e-mail I Later

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

Page 24: Jelmer Vernooij - Sambajelmer/openchange-linuxworld2009.pdf · 2009. 11. 5. · MAPI Messaging API I Ontworpen voor “MS Mail” in 1987 I Oorspronkelijk alleen voor e-mail I Later

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

Page 25: Jelmer Vernooij - Sambajelmer/openchange-linuxworld2009.pdf · 2009. 11. 5. · MAPI Messaging API I Ontworpen voor “MS Mail” in 1987 I Oorspronkelijk alleen voor e-mail I Later

MAPI MAPI/RPC OpenChange Huidige status Toekomst

Client side

I openchangeclientI exchange2mboxI exchange2icalI exchange2pop3I fetchmail plugin

Jelmer Vernooij

OpenChange

OpenChange

Page 26: Jelmer Vernooij - Sambajelmer/openchange-linuxworld2009.pdf · 2009. 11. 5. · MAPI Messaging API I Ontworpen voor “MS Mail” in 1987 I Oorspronkelijk alleen voor e-mail I Later

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

Page 27: Jelmer Vernooij - Sambajelmer/openchange-linuxworld2009.pdf · 2009. 11. 5. · MAPI Messaging API I Ontworpen voor “MS Mail” in 1987 I Oorspronkelijk alleen voor e-mail I Later

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

Page 28: Jelmer Vernooij - Sambajelmer/openchange-linuxworld2009.pdf · 2009. 11. 5. · MAPI Messaging API I Ontworpen voor “MS Mail” in 1987 I Oorspronkelijk alleen voor e-mail I Later

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

Page 29: Jelmer Vernooij - Sambajelmer/openchange-linuxworld2009.pdf · 2009. 11. 5. · MAPI Messaging API I Ontworpen voor “MS Mail” in 1987 I Oorspronkelijk alleen voor e-mail I Later

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

Page 30: Jelmer Vernooij - Sambajelmer/openchange-linuxworld2009.pdf · 2009. 11. 5. · MAPI Messaging API I Ontworpen voor “MS Mail” in 1987 I Oorspronkelijk alleen voor e-mail I Later

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

Page 31: Jelmer Vernooij - Sambajelmer/openchange-linuxworld2009.pdf · 2009. 11. 5. · MAPI Messaging API I Ontworpen voor “MS Mail” in 1987 I Oorspronkelijk alleen voor e-mail I Later

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

Page 32: Jelmer Vernooij - Sambajelmer/openchange-linuxworld2009.pdf · 2009. 11. 5. · MAPI Messaging API I Ontworpen voor “MS Mail” in 1987 I Oorspronkelijk alleen voor e-mail I Later

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

Page 33: Jelmer Vernooij - Sambajelmer/openchange-linuxworld2009.pdf · 2009. 11. 5. · MAPI Messaging API I Ontworpen voor “MS Mail” in 1987 I Oorspronkelijk alleen voor e-mail I Later

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

Page 34: Jelmer Vernooij - Sambajelmer/openchange-linuxworld2009.pdf · 2009. 11. 5. · MAPI Messaging API I Ontworpen voor “MS Mail” in 1987 I Oorspronkelijk alleen voor e-mail I Later

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