Julien Kerihuel. <j.kerihuel@openchange.org> OpenChange Project



Similar documents
Understanding MAPI. Julien Kerihuel,

OpenChange overview and current server implementation

Exchange, MAPI & Evolution. Johnny Jacob <jjohnny@novell.com> johnnyjacob.org

SOGo. Open Source Groupware at the University of Konstanz

BlackBerry Enterprise Server for Microsoft Exchange Version: 5.0 Service Pack: 2. Feature and Technical Overview

Exchange Web Services [EWS] support in The Bat! v7

Unisys INFOIMAGE FOLDER ON WINDOWS NT. Connector for Microsoft Exchange. Getting Started Guide

RELEASE NOTES Product Version: 7.2 Date: November, 2015

WirelessOffice Administrator LDAP/Active Directory Support

Feature and Technical

Note: With v3.2, the DocuSign Fetch application was renamed DocuSign Retrieve.

BlackBerry Enterprise Service 10. Secure Work Space for ios and Android Version: Security Note

PCRecruiter Resume Inhaler

SerNet. Samba Status Update. Munich 13. March Volker Lendecke SerNet Samba Team. Network Service in a Service Network

Using and Contributing Virtual Machines to VM Depot

User Guide. DocAve Lotus Notes Migrator for Microsoft Exchange 1.1. Using the DocAve Notes Migrator for Exchange to Perform a Basic Migration

- Training. Getting Started with Outlook Information Technology Services - Training The University of Texas at Austin

Networking Best Practices Guide. Version 6.5

SerNet. Samba Status Update. Linuxkongress Hamburg October 10, Volker Lendecke SerNet Samba Team. Network Service in a Service Network

Attix5 Pro Plug-ins. V6.2 User Manual. Cover. for Microsoft Windows. Your guide to installing and using Attix5 Pro plug-ins. Last updated: 2011/10

INTEGRATION OF MS OUTLOOK IN SUSE LINUX OPENEXCHANGE SERVER

Integration with Active Directory. Jeremy Allison Samba Team

Univention Corporate Server. Operation of a Samba domain based on Windows NT domain services

White Paper March 1, Integrating AR System with Single Sign-On (SSO) authentication systems

SonicWALL CDP 5.0 Microsoft Exchange User Mailbox Backup and Restore

Exchange Migration Guide

TREK GETTING STARTED GUIDE

kalmstrom.com Business Solutions

TREK GETTING STARTED GUIDE

MAPI Connector Overview

MailStore Server 5.0 Documentation

vcenter Operations Management Pack for SAP HANA Installation and Configuration Guide

Zimbra Connector for Outlook Administrator Guide

CISNTWK-492e. Microsoft Exchange Server 2003 Administration. Chapter Five Managing Addresses

Spectrum Technology Platform. Version 9.0. Spectrum Spatial Administration Guide

Archiving in Microsoft Outlook. This document looks at archiving and saving space in the Microsoft Outlook program. INFORMATION SYSTEMS SERVICES

CatDV Pro Workgroup Serve r

Vembu NetworkBackup v3.1.1 GA

IBM Tivoli Composite Application Manager for Microsoft Applications: Microsoft Exchange Server Agent Version Fix Pack 2.

How to Convert Outlook Folder Into a Single PDF Document

Exchange Mailbox Protection

1 Accessing accounts on the Axxess Mail Server

Installation Manual Version 8.5 (w/sql Server 2005)

2.0. Quick Start Guide

FreeIPA 3.3 Trust features

Profile synchronization guide for Microsoft SharePoint Server 2010

McAfee One Time Password

Table of Contents. Page 3

SAM XFile. Trial Installation Guide Linux. Snell OD is in the process of being rebranded SAM XFile

Attix5 Pro Server Edition

SharePoint Wiki Redirect Installation Instruction

PRiSM Security. Configuration and considerations

Novell GroupWise Microsoft Exchange/Outlook (PST)

Securing Corporate on Personal Mobile Devices

PanelView Plus. Technology in the Spotlight

NaviCell Data Visualization Python API

Herve Roggero 3/3/2015

The syslog-ng Store Box 3 F2

Prerequisites and Configuration Guide

Architecture. Outlook Synchronization in Microsoft Dynamics CRM. Microsoft Dynamics CRM White Paper:

Modular Messaging. Release 4.0 Service Pack 4. Whitepaper: Support for Active Directory and Exchange 2007 running on Windows Server 2008 platforms.

ADMINISTRATOR'S GUIDE. Version 12.20

SQL Backup and Restore using CDP

Introduction. Connection security

SonicWALL CDP 5.0 Microsoft Exchange InfoStore Backup and Restore

SavvyDox Publishing Augmenting SharePoint and Office 365 Document Content Management Systems

Active Directory network protocols and traffic

Getting Started with STATISTICA Enterprise Programming

The Power of Classifying in SharePoint 2010

How To Backup An Exchange 2007 Mailbox With A Backup From A Backup To A Backup On A Windows 2007 Mail Box (Brick Level) (Barcondown) (For Windows 2007) (Powerpoint) (Windows 2007) And Power

Exchange Granular Restore Instructional User Guide

IceWarp Server Upgrade

CRM Migration Manager for Microsoft Dynamics CRM. User Guide

CA DLP. Stored Data Integration Guide. Release rd Edition

Personal Folders Backup

Document OwnCloud Collaboration Server (DOCS) User Manual. How to Access Document Storage

QUESTION: 1 Which of the following are valid authentication user group types on a FortiGate unit? (Select all that apply.)

Best Available Integration of Outlook and SharePoint

Creating Basic Custom Monitoring Dashboards Antonio Mangiacotti, Stefania Oliverio & Randy Allen

TECHNICAL REFERENCE GUIDE

126 SW 148 th Street Suite C-100, #105 Seattle, WA Tel: Fax:

Configuring Security Features of Session Recording

State of Wisconsin DET File Transfer Protocol Service Offering Definition (FTP & SFTP)

SharePoint and LibreOffice

Contents About the Contract Management Post Installation Administrator's Guide... 5 Viewing and Modifying Contract Management Settings...

Blackbaud Sphere & The Raiser s Edge Integration Guide

Setting up an MS SQL Server for IGSS

Zimbra Connector for Microsoft Outlook User Guide ZCO 7.2

You can see the Microsoft Exchange System objects (MESO) in advanced view of the Microsoft Active Directory Users and Computers tool.

Pimbox Zarafa migration manual. Migration to Pimbox Zarafa

Out n About! for Outlook Electronic In/Out Status Board. Administrators Guide. Version 3.x

SDK Code Examples Version 2.4.2

REDUCING YOUR MICROSOFT OUTLOOK MAILBOX SIZE

TECHNICAL REFERENCE GUIDE

Dell Client Profile Updating Utility 5.5.6

Moxa Device Manager 2.3 User s Manual

Python for Series 60 Platform

Transcription:

Linux MAPI programming over ExchangeRPC Julien Kerihuel <j.kerihuel@openchange.org> OpenChange Project

1 Opening Exchange to a wider world 2

1 OpenChange Goals The OpenChange Project aims to provide a portable Open Source implementation of Microsoft Exchange Server and Exchange protocols Three main goals: provide a library for interoperability with Exchange protocols provide an alternative to Microsoft Exchange Server: uses native Exchange protocols provides exactly equivalent functionality when viewed from Microsoft Outlook clients develop a body of knowledge about the most popular groupware protocols in use commercially today 3

1 MAPI Overview MAPI is the glue between Exchange and Outlook Not a network protocol but a set of functions call interfaces developed by Microsoft before Microsoft Exchange existed ExchangeRPC: Proprietary transport protocol for MAPI Closely matches the MAPI calling interface 2 main protocols used in MAPI communications: NSPI: Address Book protocol EMSMDB: Exchange transport 4

1 MAPI Overview EMSMDB pipe version evolved since Exchange 5.5: Exchange 5.5 to Exchange 2000: obfuscated content (xor 0xa5) Use EcDoConnect (0x1) and EcDoRpc function (0x2) Implemented in libmapi Exchange 2003: AirMAPI compression algorithm introduced (possibly XPRESS based) New pipe functions introduced for EcDoConnect (0xa) and EcDoRpc (0xb) Some packets are still obfuscated with xor 0xa5 while others are compressed Exchange 2007: No MAPI captures realized yet 5

1 MAPI Overview OpenChange libmapi implements: NSPI interface EMSMDB interface from Exchange 2000. MAPI API that exposes these protocols widely compatible implementation tested against: Exchange 5.5 Exchange 2000 Exchange 2003 Small Business Server 2003 Exchange 2007 (once Administrator creates Public Folder store) 6

1 Describing a MAPI conversation Client side: MAPI applications call MAPI providers, using the API to pass data MAPI providers pack the client or server MAPI information in a blob ExchangeRPC protocol is used to transport the MAPI information, using one of two MAPI specific protocols: EMSMDB Message Store Protocol NSPI Address book Protocol Store provider on server side: extracts the MAPI blob from RPC protocol functions analyzes its content performs operations embedded within it 7

1 OpenChange Architecture Developed in C Released under the GNU GPLv2 or later license (upgrade to GPLv3 planned) Use Samba4 libraries and modular design: MSRPC transport (dcerpc, ndr) Memory allocation system (talloc) Storage (ldb LDAP database) Server development: EMSABP provider EMSMDB provider 8

1 MAPI library design Design: Provide a set of functions with similar semantics to the Microsoft C++ API, maximising the benefit of shared information across the two implementations. Hides implementation details from the user: passing in a groupwarerelated object and getting back a response in order to have a groupware conversation. Architecture: Global context rather than separately instantiated objects with private members Opaque objects passed by reference between MAPI functions No object hierarchy implemented 9

1 MAPI library capabilities MAPI Profiles Similar objective to Microsoft ones Stored in LDB database and access through IProfAdmin interface Store information related to: Connection Credentials User information Common MAPI objects support Messages, Calendars, Tasks, Contacts, Notes Fetch, send, delete, move operations available MAPI containers Create, Delete, Empty folders 10

1 MAPI library capabilities MAPI tables and search operations Search, filter, restrict results MAPI Notifications Over UDP and EMSMDB NEWMAIL notification implemented MAPI Permissions Add, Remove, Modify on a given folder Pre defined Roles and Rights Support permission modifications for Default and Anonymous Public Folders Create, Delete, Empty folders Specify directory class (messages, appointments, contacts etc.) 11

2 Getting Started 12

2 OpenChange requirements howto.txt from docs directory contains the most up todate instructions for installing and configuring openchange. Installation information are provided in the LinuxConf paper associated to this presentation. 13

2 Setting a MAPI Profile database We need to create a MAPI profile database and add a profile prior running any MAPI application We will use mapiprofile command line tool *** Demo *** 14

2 Hello Exchange Sample See mapi_sample1.c Important Steps: Initialize MAPI library Open a MAPI Session Uninitialize MAPI library Output: $ gcc mapi_sample1.c o mapi_sample1 pkg config libmapi cflags libs $./mapi_sample1 MAPIInitialize : MAPI_E_SUCCESS (0x0) GetDefaultProfile : MAPI_E_SUCCESS (0x0) MapiLogonEx : MAPI_E_SUCCESS (0x0) 15

3 MAPI Concepts 16

3 MAPI Objects Any MAPI data you access is associated to objects. Design differences: With Microsoft framework instanciated objects inherits from parent classes. With OpenChange, objects are opaque: Linux MAPI developer must know what they are doing. MAPI object related functions mapi_object_init: Must be called prior any MAPI operation on this object mapi_object_release: Called when an object reaches its end of life MAPI Handles temporary identifiers returned by Exchange when you access or create objects on the server. make reference to a particular object all along its session lifetime only links between objects accessed on the client side and efficiently stored on the server side 17

3 MAPI Properties attributes of a MAPI object used to describe something associated with the object. Composed of: Property Tag: Property Type Property ID Property Value Value matching property type Related functions: GetProps / SetProps Related structure: SPropValue 18

3 MAPI Tables MAPI tables are used to view MAPI objects as a set of rows and columns; where objects are rows and MAPI properties columns of the table. OpenChange identified 3 kind of tables associated to specific MAPI calls: GetHierarchyTable Collect information about child containers GetContentsTable Collect information about objects within a container GetTable Retrieve information about permissions for a given container or object 19

4 MAPI applications 20

4 MAPI fetchmail Initialize OpenChange MAPI MapiInitialize, GetDefaultProfile and MapiLogonEx Open the Message Store OpenMsgStore Open Inbox folder GetDefaultFolder and OpenFolder Retrieve Contents Table GetContentsTable Customize the MAPI view SetColumns Browse the table and dump items QueryRows, GetPropsAll and mapidump convenient functions Clean up and Exit MAPIUnitialize 21

4 Better than a thousand words Demonstration: openchangepfadmin openchangeclient exchange2mbox 22

5 Questions? 23