jump to navigation

InterIMAP Progress Update #3 April 28, 2008

Posted by atmospherian in InterIMAP.
Tags: , ,

So last week i checked in some pretty important updates that i wanted to go over in a little more detail.

Configuration Serialization
I felt it would be useful to be able to store the configuration settings in an external file that could be read from multiple applications using the library. To facilitate this i created a command line app that walks the user through the creation of the settings file. A settings file can also be created from inside any application by calling the SaveConfig method on an IMAPConfig instance. Right now the config data is being serialized in binary, but i will probably change that to XML so that the config can be editted externally.

In the interest of security i will be researching different encryption methods to encrypt the passwords that are stored in the external file. Doing this has a few pros and cons: The Pro is increased security from people opening the file and seeing what the password to the account is. The con is this method will prevent the config file in its entirety from being editable externally. All the other options can be changed, but trying to change the encrypted password would not work. But i suppose that the need to modify the file manually would be pretty minimal considering there is a quick and easy way to re-generate it. I might build a Windows app to create and edit config files to make it that much easier.

Local Data Cache
I also started to implement the caching of folder and message data to the local filesystem. For this to be useful, all the message and folder information must first be downloaded. Depending on the account this is run on, it can take a considerable amount of time. The account that i am currently using for testing has over 10,000 messages and over 100 folders, so using this account to test the cache might not be the best option so i plan to create a fake account and add some folders and messages to simulate how the cache would work.

In the configuration there is a setting for the name of the cache file, which if specified, can be loaded by the client after logon and used to populate the object model with all the previously downloaded messages. A method would then have to be devised to check each folder for new and deleted messages and update the object model accordingly. As far as i can tell the only flag on a message that can change is whether its been read or not.

I’m looking into whether the library should support a full “offline mode” where if there is a cache available, the developer can specify that no connections to the server should be made, and that only the data stored in the cache would be available. Trying to decide if this should be a library feature, or if its something that should be left to developers to implement in their client code. Certainly including this in the library would save a lot of time for developers using it and increase the utility of the system.



No comments yet — be the first.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s

%d bloggers like this: