---------- 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