On Tue, May 25, 2004 at 02:34:22AM -0700, Clint Sharp wrote:
Although you've described an architecture which would work well for
fetchmail emulation, you've also described an architecture which could
be generalized to support any sort of synchronization, given unique
identifiers to qualify the information and proper metadata to determine
changes. Not sure if generalizing it to that level interests you, maybe
if it does we should take it off-list :).
That would probably be more general than we need - in particular, we're only
interested in detecting when messages have been added or deleted, not that
they've been changed. (I think the only way we could detect whether messages
have been changed is to download them in their entirety every time and
I have to admit I'd think a scripting language, or at least something
that was object oriented, would lead itself to an easier development
model for a rewrite.
That's fair enough.
There are some instances when I care about the startup overhead of a
scripting language - for example, when migrating lots of mailboxes from
server A to server B, triggered when a user logs into server B for the
first time (courier-imap lets you do this: the feature's called 'loginexec')
Right now I've been using a little C program which makes a POP3 connection
to the old server and delivers directly into the Maildir on the new server
(I didn't want to use SMTP because of problems deciding the correct
envelope, so fetchmail was not an option)
I'd be very happy if I could replace this little kludge with something more
robust - e.g. something which would keep track of which messages had been
transferred so it could abort and restart - and something which would let me
use IMAP to transfer entire folder hierarchies.
The architecture I've proposed would be ideal for this. I'd like the program
to be as lightweight as possible, since a new copy is exec'd for every new
user login. I guess I can live with the overhead of python/ruby/perl etc
though, since CPUs are getting cheaper all the time.
Perhaps this would be a good candidate for Mono/C#?
I've not coded yet in C#, but I've been looking for a project to play
C# rings "Microsoft" in my ears... but I too would be interested in seeing
alternatives for compiled languages. ObjectiveC ?