Since I seem to have nailed it down in my environment I though I'd see if
anyone else wants to lose some e-mail... Er, try them out and provide
feedback.
First, I've hacked send-mail into a proper sync conduit. I think that
actually nails down a TODO item. The only functional difference is that
items are no longer in the Outbox after a sync. The code, however, bears
little resemblance to the original.
Second, I whipped up a fetch conduit (okay, gutted imap-inbox) that sucks in
the contents of a mbox(5) format mailbox into the Inbox. That basically
encompasses everything from /var/spool/mail/<mbox> to procmail output
files. It's not smart. There's no flidding around trying to see if the
message is already on that Palm (which I don't think is really feasible
without storing a new header in the mbox messages).
I also had a go at a Mail::Box (uber perl e-mail module) fetch conduit,
which would allow for synching from mbox, maildir, pop3, imap, and even
(eventually) Exchange. The conduit looks like it should mostly work, but
Mail::Box just doesn't want to work properly on my Red Hat 8.0 box and the
bits that do work are excruitiatingly slow. If anyone has a sane Mail::Box
install and wants to play with it further, let me know.
c.
Still.
mbox-inbox had some minor locking problems.
send-mail was stupid in how it downloads the contents of the entire
database. dlp_ReadNextModifiedRecInCategory is the most efficient way to
sync a database, isn't it? Unfortunately, it wasn't implemented. Patch
against CVS attached.
Also attached are fixed/latest versions of mail conduits, although you'll
need the dlp_ReadNextModified patch for send-mail to work.
On a completely unrelated note... am I correct in my understanding that
coldsync doesn't do any kind of locking on the database files while
synching is going on? I ask this because I'm working on a conduit which
would benefit from just being able to go in and update the database in
.palm/backup. It would, at the least, eliminate the need for any
intermediate storage and the entire fetch conduit stage. However, it's only
feasible if coldsync and I aren't messing with the same file.
c.