View Full Version : Sure to cause wrath: Reverse Engineering ActiveSync with Exchange server
ivanstojic
08-06-2007, 02:00 AM
Hello everyone!
As you can see by my profile, I'm a rather new member of the XDA-Dev community, and also a new owner of an HTC Tytn. I love it.
I also love open sourced or at least free software.
My problem is: I'd love to have push based e-mail feeding off of my plain old IMAP and/or POP account hosted wherever.
Of the two IMAP IDLE capable clients on WM6 (I'm using LVSW) both feel like a piece of shit along with an attached price tag. One of them was also last updated in early 2006.
I've been looking at WM Outlook and Exchange syncing. I'm thinking about implementing some sort of an interface that would provide Outlook style ActiveSync front end (hey, it's just WebDAV) to a simple IMAP/POP3 account in the background.
I'll probably start working on this just for the kicks anyway, but... would anyone else be interested in seeing/using something like this?
Shaun33
08-06-2007, 06:02 AM
Hello everyone!
As you can see by my profile, I'm a rather new member of the XDA-Dev community, and also a new owner of an HTC Tytn. I love it.
............
I'll probably start working on this just for the kicks anyway, but... would anyone else be interested in seeing/using something like this?
There is software called emoze (http://www.emoze.com.). This relies on your desktop & outlook downloading the email then Emoze sends the data to you PDA over the cell network.
The way i think that would be good is you would need a software client running on your desktop that polls your POP3 server for new headers. When it gets one it sends your PDA a token telling it to go and d/l its pop.
Im thinking of writing one cause i want it to detect if its cradled. I only want my e-mails forwarded to my phone when its not cradeled.
Just some thoughts. But if its in c# ill be happy to try help where i can.
ivanstojic
08-06-2007, 04:13 PM
There is software called emoze (http://www.emoze.com.). This relies on your desktop & outlook downloading the email then Emoze sends the data to you PDA over the cell network.
First off, I'd like to avoid the whole using-the-desktop thing. The mails are accessible on the server, and can stay there until your desktop client picks them up. Ideally, you would use IMAP and just leave the mail on the server as long as you need it, thus having it both accessible from your desktop and your mobile client.
The approach I'm thinking of would emulate an Exchange server. You would configure this server the same way you configure outlook syncing with a real Exchange server on your phone - thus eliminating any need for development or hacking on the client side. Everyone would just be using their default messaging client installed on WM.
Shaun33
09-06-2007, 04:19 AM
First off, I'd like to avoid the whole using-the-desktop thing. The mails are accessible on the server, and can stay there until your desktop client picks them up. Ideally, you would use IMAP and just leave the mail on the server as long as you need it, thus having it both accessible from your desktop and your mobile client.
The approach I'm thinking of would emulate an Exchange server. You would configure this server the same way you configure outlook syncing with a real Exchange server on your phone - thus eliminating any need for development or hacking on the client side. Everyone would just be using their default messaging client installed on WM.
So from My understanding this is what we got.
~ Project ~
CLIENT | HACK'D | <-----> IMAP
A/Sync <---> | Server |
WM6 | APP We Write | <-----> POP3
That should be possible but the reason that your able to recieve it in two places is because the exchnage server is the mailbox essintally. And your desktop account is also attached to the exchange server(someone jump in if im wrong) this means that it knows when something is deleted on your desktop.
So we would have to emulate both the Device and Desktop exchange server functions.
Other way is to just put a wrapper around a popserver. So it will only send the emails to the desktop once, then keep the e-mails for the device.
eg
****Check POP3/IMAP server every x mins
New Email
D/L and Store
Ping PPC Client
PPC Downloads
Flaged as PPC received
Desktop POP3 checks pop wrapper
Because the exchange server has the builtin pop client you will never be able to get true e-mail unless you create a pop3/imap server that has the PPC ping functionality built into it, you will always have the **** step.
Just some thoughts ...
walshieau
09-06-2007, 04:26 AM
First off, I'd like to avoid the whole using-the-desktop thing. The mails are accessible on the server, and can stay there until your desktop client picks them up. Ideally, you would use IMAP and just leave the mail on the server as long as you need it, thus having it both accessible from your desktop and your mobile client.
The approach I'm thinking of would emulate an Exchange server. You would configure this server the same way you configure outlook syncing with a real Exchange server on your phone - thus eliminating any need for development or hacking on the client side. Everyone would just be using their default messaging client installed on WM.
you dont need to 'hack' anything... is you look at the Microsoft Exchange 2007 SDK you can write your own libraries that get called on incoming mail etc... no hacking required... how do you think Blackberry Enterirpse Server and Goodlink Server work??
ivanstojic
09-06-2007, 11:04 AM
The whole idea is that I want nothing to do with Exchange in the software, except to emulate it's ActiveSync features and push e-mail. No SDK, no libraries, nada.
I don't have any problems polling the POP3 server every few minutes. With IMAP it's much easier considering that a lot of IMAP servers support IDLE.
Basically, the architecture would be exactly what Shaun33 described/drew in his post.
Shaun33
09-06-2007, 04:41 PM
The whole idea is that I want nothing to do with Exchange in the software, except to emulate it's ActiveSync features and push e-mail. No SDK, no libraries, nada.
I don't have any problems polling the POP3 server every few minutes. With IMAP it's much easier considering that a lot of IMAP servers support IDLE.
Basically, the architecture would be exactly what Shaun33 described/drew in his post.
Ok best idea is if you have the time.
1. Install Exxhange server and pair your PPC to it.
2. User packet monitoring software such as ethereal (http://www.ethereal.com/) to monitor the data going back between the server and the client the best fun is going to be the fact that is SSL. But there is an option to disable the SSL then you monitor port 80.
If you post a capture file i would be willing to look into helping you develop it.
ivanstojic
13-06-2007, 01:39 AM
Ok best idea is if you have the time.
1. Install Exxhange server and pair your PPC to it.
2. User packet monitoring software such as ethereal (http://www.ethereal.com/) to monitor the data going back between the server and the client the best fun is going to be the fact that is SSL. But there is an option to disable the SSL then you monitor port 80.
If you post a capture file i would be willing to look into helping you develop it.
Ethereal isn't called Ethereal any more, you do know that? It's been known as Wireshark for a while now. Anyway, the protocol is (almost) standard WebDAV protocol with some strange extensions.
I'm working on getting clean dumps of various bits of functionality. Will report soon!
suraj.tomer
13-06-2007, 09:43 PM
hi guys,
i got to know about one website which is provide push mail for pop3 account for free, i tested it on JASJAR and its working fine, you can try it here www.consilient.com may be it would be helpfull...
guyndalf
21-08-2007, 12:04 PM
This certainly sounds interesting to me! Do you still think it is doable?
Furbious
21-08-2007, 12:29 PM
Sounds cool - like you said, it's all webdav oriented, and from IIS logs, getting the content is fairly easy to construct. You won't have to worry about matching up device IDs, etc, so you can ignore that and concentrate on the username with what verbs are being used (foldersync, sync, getestimate, etc)
One thing may get you is the initial connection - after configuring, it will check to see if theres a policy to set on the device after checking the user, not sure how activesync on the device will handle it if it can't get to that.
I always think its funny that MS decided to call this "push" technology, when its just the device constantly polling (probably just an xml change file, i seem to remember something like that)
Anyway, good luck :)
vBulletin® v3.7.0, Copyright ©2000-2008, Jelsoft Enterprises Ltd.