---------- Forwarded message ----------
From: Yangyan Li <[EMAIL PROTECTED]>
Date: Sun, Sep 7, 2008 at 9:01 PM
Subject: Yangyan's GSoC Summary
To: [EMAIL PROTECTED], Jelmer Vernooij <[EMAIL PROTECTED]>


Hi Julien/Jelmer:

Here is summary of my GSoC project(two part: Add MAPI support for
fetchmail and mapi2pop3 tool):

This is a project of Google Summer of Code(GSoC) 2008 with OpenChange
as the mentoring organization, by GSoC student Yangyan Li and his
mentor Jelmer Vernooij.

1. Add MAPI support for fetchmail
==========================

General overview
==========
Fetchmail(http://fetchmail.berlios.de/) is a full-featured, robust,
well-documented remote-mail retrieval and forwarding utility intended
to be used over on-demand TCP/IP links (such as SLIP or PPP
connections). It supports every remote-mail protocol now in use on the
Internet: POP2, POP3, RPOP, APOP, KPOP, all flavors of IMAP, ETRN, and
ODMR. It can even support IPv6 and IPSEC.

This project aims to add MAPI support into fetchmail, making it be
able to fetch mail from Microsoft's Exchange server with MAPI as well
as it does from those POP3 or IMAP servers.

How it works?
=============
As mentioned in the "IMAP support and the method table" section of
"Eric S. Raymond's former Design Notes On Fetchmail", fetchmail
abstracts all the protocol-independent setup logic and flow of control
in the driver, and the protocol-specific stuff in the method table. So
most of the task in this project is to implement the methods in the
method table with MAPI.

The main difference between MAPI and IMAP or POP is that the
connection between client and server is handled by libmapi, while IMAP
or POP connects to server via socket. The solution is: if the current
protocol is MAPI, it buffers mail data when the flow of control
invokes "fetch" method and then the "read" method reads from the
buffer instead of the socket.

State of development
=================
It's still in fetchmail's SVN branch BRANCH_MAPI:
http://mknod.org/svn/fetchmail/branches/BRANCH_MAPI now. It will be
merged into fetchmail's SVN trunk:
http://mknod.org/svn/fetchmail/trunk later.

Requirements
============
This project is based on libmapi 0.8 and libmagic is needed.

How to turn on MAPI support in fetchmail?
=========================================
configure with option --enable-MAPI.


2. mapi2pop3 tool
==============
mapi2pop3  behaves  as  a  proxy  server,  which  transaltes  MAPI
into POP3. The tool talks to Exchange server as a client, and
responses to POP3 commands as a server.

A brief history of this tool
===================
mapi2pop3 tool was designed for --plugin option of fetchmail,  which
reads pop3 commands from stdin and writes responses to stdout.
However, some functions in the library used by this tool may write
error or warning messages to stdout, which makes it hard to cooperate
with fetchmail's --plugin option. Then my mentor told me that it would
be useful for people using mail client directly to make it listen to a
specified socket and behave as a real pop3 server. So this feature was
added.

State of development
=================
This tool is something like openchangeclient or exchange2mbox, and
will be added to OpenChange's SVN repository.

Thanks!
Yangyan
_______________________________________________
devel mailing list
devel@openchange.org
http://mailman.openchange.org/listinfo/devel

Reply via email to