Importers

From MozillaWiki
Jump to: navigation, search

This page is for rough and evolving notes on importers (for now both Mac and Windows). Initial notes will probably focus on email importing, but eventually address book and filter importing notes will probably also be here.

All Platforms

Most of the Eudora importing code is cross-platform. As much as possible we will maintain that, but we may need to add additional platform specific classes to better handling reading TOC information (as well as handling any other differences between how Mac and Windows Eudora).

Issues to Tackle

Email Importing

  • Finding mail on each platform (see specific platform notes in the future for more details if necessary)
  • Offering choice to override mail location rather than just assuming that correct location was found
  • Maintain attributes of imported email
  • Correctly handle language encoding - IIRC Steve suspected this was not being handled correctly
  • Reassemble split messages
  • Finding attachments that have been dragged out of Attachments Folder
  • Finding attachments still in attachment folder but no longer with correct fileid (moved attachments folder, backup/restore)
  • Finding attachments with non-ascii filenames
  • Finding embedded images in incoming mail
  • Finding embedded images in outgoing mail
  • Various buffer overflow attacks and attachment converted spoofs
  • Edited subject lines (not just importer issue)
  • Error reporting and handling
    • Messages/mailboxes that must be skipped
    • Messages imported poorly

Mac Importers

I believe Steve convinced Mac importers to find the location of email. More details to come from Steve (who of course can feel free to delete this placeholder).

Windows Importers

At an initial level Windows importers seem to work better than Mac importers in that Windows importers find the location of email successfully.

Known Windows Importer Bugs

This is just a partial listing. I'm not actually interested in putting an exhaustive listing here, but rather general categories of deficiencies (largely because I suspect that we'll end up re-writing a significant chunk of the importer code and hence the previous bugs will hopefully be irrelevant).

  • Windows importing can fail due to a virus scanner interfering as messages are being spooled (ok so this one sort of breaks the no exhaustive list pledge above)

Current Tasks

Steve

Steve is working on Mac specific issues. More details to come.

Geoff

Adding an X-Mozilla-Status:0001 line during the importing process sucessfully marked all messages as read, which provided a proof of concept for one method to pass status information into Penelope.

During importing, the original TB code first compacts the mailbox by interepreting the TOC and then imports the messages by searching through the compacted mailbox. I'm currently working on reworking this so that the importer imports messages from a mailbox as it interprets the TOC. I should be able to make importing more robust in the process as well as pave the way to maintain status attributes.

Current planned tasks:

  • Modify importing to read TOC and maintain read and other status attributes for messages


Relevant Mozilla Knowledge

Description of X-Mozilla-Status and X-Mozilla-Status2 headers: http://www.eyrich-net.org/mozilla/X-Mozilla-Status.html?en Priorities don't seem to work from these headers; David has suggested using X-Priority might be better.

Tags can be loaded from an X-Mozilla-Keys header, BUT they must be predefined. David says:

 There's a mapping between keys and tags that you'd need to set up.
 These are stored in preferences, along the lines of
 
 "mailnews.tags.<key>.tag", "tag"
 "mailnews.tags.<key>.color", #990000

David also adds:

Now, the pre-existing labels from 1.5 use the $label<1..5> keyword so $label3 is the keyword for the Personal tag. This is for compatibility with IMAP messages were we've already stored the $label keywords on the imap server.


MIME-formatted mboxes can simply be dropped into the appropriate mail folder and Penelope will parse them. Use newline (MacOS X) for line endings.