Doctoring Exchange or: How I Learned to Stop Worrying and Love the winmail.dat Introduction ------------ The aim of this document is to describe how to implement some Microsoft Exchange groupware features using the CommuniGate Pro mail server and free software on Linux. Note that CommuniGate provides a MAPI connector. This document does not describe using such a connector. You will get more features by using the MAPI connector, notably shared folders. However, that costs extra. My environment consists of about 50 users using Evolution on Linux, Outlook 2000, and Outlook 2002 on Windows. Part of my goal was to allow communication between the clients, including decoding winmail.dat files, and processing meeting requests sent from Outlook to Evolution. Evolution is not necessary, and any client that understands the vcal format will work in this scenario. This document describes implementing the following features: - Free/busy posting and querying - Meeting request decoding and accepting for non-Outlook clients - General winmail.dat extracting of attachments - Resource scheduling (meeting rooms, etc) Limitations ----------- This setup does not provide shared folders/calendars. Recurring meetings are not supported yet. However, I've spent a bit of time trying to reverse engineer recurring meeting info, and have sent info to the developer of ytnef. This may be implemented soon. Free/busy posting is not authenticated. It is assumed the LAN is trusted to post correct information. Requirements ------------ You will need the following applications: - CommuniGate Pro Tested with v4.1.8 - Apache with WebDAV support Red Hat 8.0 has this support with the default Apache server - Samba Red Hat 8.0 has the necessary packages - Ytnef http://ytnef.sourceforge.net This is used to decode winmail.dat files - ytnef_cg_filter.pl http://www.bigfoot.com/~valankar/ This is the filter interface to CommuniGate that utilizes ytnef - Clam Antivirus http://www.clamav.net/ It is highly recommended you use this virus software, which the above filter supports - Jical http://jical.sourceforge.net/ This is required for Outlook users to see free/busy information of Evolution users. You will need Java of course (ugh). We will need a directory that is accessible via both Apache and Samba. In our example it will be /var/www/html/freebusy. In the examples below, mail.domain.com is the CommuniGate mail server. freebusy.domain.com is the free/busy server with Apache and Samba. Conference room resources will be designated by account names beginning with 'room_'. Apache Setup ------------ The following configuration should be added to Apache: Options -Indexes Dav On RewriteEngine on RewriteRule ^.*(room_.*)\.vfb$ http://mail.domain.com/~$1/freebusy.vfb [P,L] This turns on WebDAV. It also sets up a proxy rewrite rule for any requests for a free/busy information of accounts beginning with 'room_'. Such requests will be forwarded to the CommuniGate server. We will use such accounts as conference room resources. Note that if you have CommuniGate MAPI users, you would set them up similar to the rewrite rule above. This way their free/busy information comes from the CommuniGate server. Samba Setup ----------- The following configuration should be added to Samba: [freebusy] path = /var/www/html/freebusy public = yes guest ok = yes guest only = yes guest account = apache writable = yes printable = no This allows file:// posting from Outlook 2000 clients. ytnef_cg_filter.pl setup ------------------------ See the documentation for this filter to setup. One thing to note is that you should make sure to add resource user accounts to the %vcf_users hash. Such accounts should be setup with rules according to: http://www.stalker.com/CommuniGatePro/WebCalendar.html#Automatic Free/busy posting and querying ------------------------------ Outlook 2000 can only post free/busy information via a file:// copy. I have not succeeded in any other way. For this we will use Samba. Outlook 2002 can post free/busy information via http:// using the WebDAV protocol. For this we will use Apache. For Evolution we will have to use a script to grab the calendar from desktop systems and convert them to the format needed for Outlook to query. Outlook Setup ------------- Outlook 2000 ------------ For all Outlook 2000 clients, you should install the latest service pack. I know for sure that Free/busy posting and querying is broken without the service pack. I have tested with SR-1. You also MUST install Web Publishing Wizard v1.52. You can get it here: http://www.microsoft.com/downloads/details.aspx?FamilyID=63c2db9b-c616-46c2-8713-af9bb83c8d89&DisplayLang=en In the free/busy options, set the search location to: http://freebusy.domain.com/freebusy/%NAME%.vfb Set the posting location to: file://\\freebusy\freebusy\USERNAME.vfb Where USERNAME is the non-domain part of their email address. Outlook 2002 ------------ For all Outlook 2002 clients, you should install the latest service pack. I have tested with SP-2. Set the option to NOT send meeting requests as Ical format. This is because it will cause incompatibilities with Outlook 2000 users as described here: http://support.microsoft.com/default.aspx?scid=kb;en-us;307313 In the free/busy options, set the search location to: http://freebusy.domain.com/freebusy/%NAME%.vfb Set the posting location to: http://freebusy.domain.com/freebusy/USERNAME.vfb Where USERNAME is the non-domain part of their email address. Evolution Setup --------------- Unfortunately, for Evolution contacts you must specify a free/busy URL for each specific contact. I don't know a way around this. You will need to setup a process on freebusy.domain.com to grab: ~username/evolution/local/Calendar/calendar.ics And process them with Jical to generate the free/busy information, in a fashion similar to: /usr/local/java/bin/java -cp ./jical.jar shellRun -ical2FBURL calendar.ics \ http://freebusy.domain.com/freebusy/ username username@domain.com 180 > \ username.vfb Contact me if you need more details on this. Conclusion ---------- That's really all there is. Good luck!