Eudora Rescue
Main Menu
Home What's New Readme License Download Contact
Home
What's New
Readme
License
Download
Contact

EUDORA RESCUE 0.7 README.TXT

Eudora Rescue and all included files are Copyright 2003-2005 by Qwerky. All rights reserved worldwide.

Eudora Rescue is free for personal, private use only. For full details and for other uses, see the included LICENSE.TXT file.

This file contains the following sections:

Introduction

Eudora Rescue is a MS Windows command-line utility designed to convert Eudora mailbox files to standard mbox format, suitable for import into many other e-mail clients, such as the free Mozilla Thunderbird.

Eudora Rescue can make use of Eudora Table-of-Content (*.toc) files in order to transfer messages' status along with the messages, and make use of Eudora descmap.pce files to obtain actual mailbox/folder names. And, Eudora Rescue is a stand-alone program, requiring no additional libraries or other software.

Features

  • Uses Eudora's Table-of-Content (.toc) files.
  • Uses Eudora's descmap.pce files.
  • Recovers messages lost by Eudora.
  • Recovers message fragments.
  • Inserts a blank line between messages in a mailbox, when there isn't one. May be disabled.
  • May optionally replace the From_ (message delimiter) line's address argument (Eudora format: ???@???) with either a Mozilla format (-) or Unix format () argument.
  • Inserts X-Mozilla-Status: and X-Mozilla-Status2: headers containing the message's status. May be disabled.
  • May optionally remove the Eudora-specific X-Persona: header, which contains information that could be seen as a security concern by some.
  • May optionally insert an X-Imported: header, making imported messages easily identifiable for filtering.
  • May optionally insert a Received: header if there isn't at least one, for the sake of some clients which may require one in every message.
  • Inserts a Date: header if there isn't one. Eudora's outgoing messages in the mailbox do not have a Date: header. May be disabled.
  • Corrects Eudora's peculiar Content-type: header, or inserts a proper Content-type: header if there is not one. May be disabled.
  • Removes the Eudora-specific , , , and tags within the message body. May be disabled.
  • Removes NULL (0x00) characters which, per RFCs, should never appear.
  • Quotes From_ lines within the message body, as Eudora does not do From_ quoting. May be disabled.

Files Included

Eudora Rescue 0.7 is distributed as a .ZIP archive named EUDRES07.ZIP of [55,929] bytes. The files included in this archive are:
   EUDRESCU.EXE [79,872] the Eudora Rescue 0.7 executable.
   README.TXT   [40,869] the Eudora Rescue 0.7 documentation (this file).
   LICENSE.TXT  [ 1,319] the Eudora Rescue 0.7 license and disclaimer.

Installation

Eudora Rescue requires no installation or additional files; simply unzip the archive and run the program eudrescu.exe. Eudora Rescue creates no additional files, other than the data files it outputs. To uninstall, simply delete the files extracted from the archive.

Using Eudora Rescue

Overview

Eudora Rescue will read all .mbx files in the input directory tree, applying to each message all of the conversions specified by the given options, and write the output to new files in the output directory tree. Output files will have the same name as the corresponding input files, but with a user-specified extension. Directories within the input tree will be created in the output tree, if they do not exist. If no output directory is specified, no output files will be created; Eudora Rescue will simply report the results, exactly as if conversion were occurring.

To convert your Eudora mail tree to standard mbox format for import into another e-mail client, you might use a command line such as:
  eudrescu D:\EudoraMail -o=E:\UnixMail -x=.mbx
where D:\EudoraMail is your Eudora mail tree, E:\UnixMail is where the converted mail tree will be created, and .mbx is the extension to give each output file. The default is no extension, so if -x is not given, In.mbx will be converted to In, Out.mbx will be converted to Out, etc.

If no output is specified with -o, then Eudora Rescue will simply report the results, without creating any output files or directories. So,
  eudrescu D:\EudoraMail
could be used to see what will transpire, before actually doing the conversion. Eudora Rescue will report each mailbox name as it is being converted, and upon completing each mailbox, will report four numbers: the first is the number of message fragments recovered, the second is the number of lost messages recovered, the third is the number of fixed messages, and the fourth is the total number of messages in the mailbox.

Message fragments, lost messages recovered, and fixed messages are all independent, though a message or a fragment may be both recovered and fixed, depending on the options specified.

If all repair-type options are turned off, then the number of messages fixed will be zero for every mailbox. If any option is enabled which applies to all messages, such as -m to add the X-Mozilla-Status(2): headers to every message, then the number of fixed messages will be the same as the total number of messages.

The sub-totals for each directory will be reported as each is completed, and the totals for all mailboxes will be reported at the end of the run. The sub-totals and totals report the number of mailboxes, followed by the other four numbers mentioned above.

At the end of the run, the time of the run will be reported.

Using the -vq (quiet) option will cause Eudora Rescue to report only errors and warnings, rather than the full output. So,
  eudrescu -vq C:\Eudora\Mail
might be used to check your mail tree for errors in the mailboxes.

Command Line

The Eudora Rescue command line is:
  eudrescu [<options>] <dir>...
The <dir> argument is required, and specifies a directory containing Eudora mailbox (*.mbx) files to be converted. More than one <dir> argument may be given.

Options

Options are, of course, optional. They may be given in upper or lower case, may appear anywhere on the command line, and may be specified in multiple arguments or combined, though certain options must be the last option in an argument, as noted. All options are evaluated before any <dir> arguments. Options are evaluated from left to right, so if an option appears more than once on the command line, the last occurrence will take effect. Each <option> argument may be prefaced by either a dash (-) or slash (/) character. Many options take an additional optional plus (+) or minus (-) character following the option character itself, specifying that the option be turned on or off, respectively. If such an option is given without either a plus or minus, the option is turned on. Some options allow an optional equals (=) character. Available options (with default values) are:
  -b[+|-]  (-b+)  Blank Lines
Inserts a blank line between messages if there is not one, as per the mbox(5) specification.
  -c[+|-]  (-c+)  Content-type: Header
Inserts a Content-type: header if there is not one, or corrects it of Eudora's peculiarities if there is. Gone are multipart/related; multipart/alternative; multipart/mixed; boundary= etc., replaced by "text/plain; charset=ISO-8859-1" or "text/html; charset=ISO-8859-1".
  -d[+|-]  (-d+)  Date: Header
Inserts a Date: header if there is not one. Eudora's outgoing messages in the mailbox do not have a Date: header. The date used is taken from the From_ (message delimiter) line, which doesn't have a timezone; therefore the timezone specified by -z is added.
  -e[+|-]  (-e-)  Received: Header
Inserts a Received: header if there is not already at least one, for the sake of some clients which may require one in every message, even outgoing ones. Eudora's outgoing messages in the mailbox do not have a Received: header. The date used is taken from the Date: header if one exists; otherwise it is taken from the From_ (message delimiter) line, which doesn't have a timezone; therefore the timezone specified by -z is added.
  -f<->|<[=]0|n|3|u|4|t|5|e>  (-ft)  From_ Address
Eudora's message delimiter usually (but not always) has the form: From ???@??? <date>. -f replaces the address argument (???@???) with a Unix format From <proper@address> <date> (-f3 or -fu), with a Thunderbird format From - <date> (-f4 or -ft), with a Eudora format From ???@??? <date> (-f5 or -fe), or does no replacement (-f0, -fn or -f-).
  -g[+|-]  (-g+)  Tag Removal
Removes the Eudora-specific <x-html>, </x-html>, <x-flowed>, and </x-flowed> tags within the message body.
  -h, -?  Help
Shows the program's usage and exits.
  -m[+|-]  (-m+)  X-Mozilla-Status(2): Headers
Inserts an X-Mozilla-Status: and an X-Mozilla-Status2: header, which indicate the message's status as obtained from the Eudora .toc file. Mozilla status bits which may be set (all others are cleared) are:
Read -message has been read,
Replied -message has been replied to,
Forwarded -message has been forwarded,
Queued -message is queued to be sent,
Attachment-message has attachment(s),
Priority -message priority, from 1 to 5, with 1 being highest, 5 being lowest, and 3 being normal priority, and
Label -message label, from 1 to 7.
Text/html status is not indicated by the status headers, but by the Content-type: header (see -c).

When the .toc file is not used or doesn't exist (see -t), the only status that can be determined besides text/html, is Attachment. In this case, every message is marked as read.

Note that Eudora allows one (or none) of seven labels, a value encoded in three bits, and that Thunderbird also allots three bits for the label in its status header. However, Thunderbird elsewhere in its code limits the number of labels to five. Therefore, Eudora messages having a label six or seven will appear as unlabeled in Thunderbird.
  -n[+|-]  (-n-)  X-Imported: Header
Inserts an 'X-Imported: from Eudora by Eudora Rescue 0.7' header, making imported messages easily identifiable for filtering.
  -o[-|+][[=]path]  (-o-)  Output Directory
Specifies where to create output files. If combined in an argument with other options, it must be the last option in the argument. The directory specified must exist. If recursion is on (see -r), sub-directories in the input tree will be created in the output tree. Each input file is copied to a file in the output tree having the same name, but with the extension given by -x; if a file already exists, it will be overwritten if a '+' is specified. If a '-' is specified, or if neither '+' nor '-' is specified, an existing file will not be overwritten, it will be skipped with a warning message.

If no path is specified, or -o is not given, then input files are not converted, only reported (see -v).
  -p[+|-]  (-p-)  X-Persona: Header
Removes the Eudora-specific X-Persona: header, which contains information that could be seen as a security concern by some.
  -q[+|-]  (-q+)  From_ Quoting
When any line beginning with the form "From ", ">From ", ">>From ", etc., in any case (upper, lower, mixed) is found within the body of a message, that line will have a '>' character prepended. This ensures that the line will not be mistaken for a message delimiter line, which also begins with "From ". It is the job of the program accessing the message database to remove (unquote) one '>' character from each of these lines. If an already quoted From_ line were not additionally quoted, it would be impossible to tell whether or not that line had been quoted in the original message.
  -r[+|-]  (-r+)  Recurse Through Sub-directories
Recurse through mail subdirectories (*.fol) of the specified input directory, creating matching directories in the output directory, if they don't exist. -r++ will recurse through all subdirectories, rather than just mail subdirectories.
  -s[+|-]  (-s+)  Spinner
Turn the spinner on or off. The spinner is a progress indicator, useful for on-screen monitoring of the program's progress, but it makes the report appear messy when sent to a file.
  -t<->|<[=]0|n|1|p|2|a>  (-tp)  Toc File
Use the Eudora Table-of-Contents (.toc) file to obtain message status always (-t2 or -ta), when possible (-t1 or -tp), or never (-t0, -tn or -t-). -tp will convert each mailbox, using its .toc file if one exists, or warning if one does not exist. -t2 will terminate if a mailbox is found for which no .toc file exists.
  -v<->|<[=]0|s|1|q|2|n>  (-vn)  Vocal Mode
Specifies how vocal Eudora Rescue should be:
Silent (-v0, -vs or -v-)-completely silent, no output at all,
Quiet (-v1 or -vq) -reports only errors and warnings, or
Normal (-v2 or -vn) -normal reporting.
  -x<->|<[=][.][ext]>  (-x-)  Extension
Specifies the three-character extension to give each output file. If combined in an argument with other options, it must be the last option in the argument only if it specifies an extension, not if it takes the -x- form. -x- specifies that the extension is not to be replaced; output files will have the same extension as input files. '-x[=].' specifies that the output files' extension be replaced with a null extension, i.e. output files will have no extension. The default is no replacement extension (-x-).
  -z[=]<+|-><tzos>  (-z-0500)  Timezone Offset
Specifies a four-digit offset from GMT, either plus or minus, in twenty-four hour format. If combined in an argument with other options, it must be the last option in the argument.

While -z is optional, it must include a properly formatted argument. The format of the timezone offset argument, following the optional equal sign (=), is a plus (+) OR a minus (-) character, followed by exactly four digits (0 - 9). The default offset is obtained from the system, so -z is necessary only if you wish to override that timezone.

The Eudora message delimiter (the From_ header line) contains a date and time, but not a timezone offset. Since this date and time is used by Eudora Rescue to insert any missing Date: headers, which require a timezone offset, -z should be used to set the timezone offset to your local timezone offset (or whichever timezone your Eudora is configured for). While the format of the option is checked, the content is not; therefore it is possible to specify meaningless offsets such as +8479, which will be silently appended to all inserted Date: headers.
Return Codes

The value returned by Eudora Rescue on exit may be one of the following exit codes:
0   Success
Eudora Rescue completed successfully.
1   Usage
Usage was requested with -h (-?). This is not an error.
2   Format Error
An error was detected in the format of the command line.
3   System Error
A file or system error occurred.
Warning Messages
  • Warning:  no descmap.pce file; converting without:  <path/filename>.
  • Warning:  no toc file; converting without:  <path/filename>.
  • Warning:  skipping mailbox; output file exists:  <path/filename>.
Error Messages
  • Error:  closing descmap.pce file <path/filename>; <system error>.
  • Error:  closing input file <path/filename>; <system error>.
  • Error:  closing output file <path/filename>; <system error>.
  • Error:  closing toc file <path/filename>; <system error>.
  • Error:  creating dir; file exists: <path/filename>; <system error>.
  • Error:  creating output directory <path/filename>; <system error>.
  • Error:  no .toc file: <path/filename>; <system error>.
  • Error:  opening descmap.pce file <path/filename>; <system error>.
  • Error:  opening input file <path/filename>; <system error>.
  • Error:  opening output file <path/filename>; <system error>.
  • Error:  opening toc file <path/filename>; <system error>.
  • Error:  reading descmap.pce file <path/filename>; <system error>.
  • Error:  reading input file <path/filename>; <system error>.
  • Error:  reading toc file <path/filename>; <system error>.
  • Error:  seeking descmap.pce file <path/filename>; <system error>.
  • Error:  seeking input file <path/filename>; <system error>.
  • Error:  telling input file <path/filename>; <system error>.
  • Error:  writing output file <path/filename>; <system error>.
  • Input directory not found:  <path/filename>.
  • Invalid input path:  <path/filename>.
  • Output directory not found:  <path/filename>.
Examples
  eudrescu . -o=D:\EMAIL\CONVERTD\
Convert all .mbx files in the current directory tree, to D:\EMAIL\CONVERTD\, creating directories as needed.
  eudrescu -z=+0100 C:\EUDORA -po..\CONVERTD
Convert all .mbx files in the C:\EUDORA tree, to ..\CONVERTD\, creating directories as needed, removing X-Persona: headers, using a timezone offset of +0100.
  eudrescu -vqz-1000 -o. D:\EMAIL\ -b-e+x=.mbx
Convert all .mbx files in the D:\EMIAL\ tree to the current directory, creating directories as needed, quietly, using a timezone offset of -1000, inserting Received: headers but not blank lines, and giving each output file a .mbx extension.
  eudrescu \MAIL -r-o=\NEWMAIL
convert all .mbx files in \MAIL to \NEWMAIL, without recursion.
  eudrescu D:\EUDORA >MAILRPT.TXT
Report the conversion of all .mbx files in the D:\EUDORA tree, and send the report to MAILRPT.TXT in the current directory. No conversion takes place, since no output is specified.
  eudrescu D:\EUDORA\MAIL -vq
Report all errors and warnings in converting the D:\EUDORA\MAIL tree without doing any conversion.
Mailbox Names and Filenames

Eudora's descmap.pce files were originally intended to provide a mapping from long mailbox names, to 8.3 filenames. With Win32's long filenames, such a mapping is no longer required, though many Eudora installations may still have long mailbox names, created before long filenames were available, mapped to 8.3 filenames. But, the descmap.pce files serve an additional purpose: to map to legal long filenames, long mailbox names containing characters which are not legal in a filename. For example, "OS/2 Users' Group" is a valid Eudora mailbox name, but not a legal Win32 filename, since Win32 filenames cannot contain slashes '/'.

Win32 long filenames may not contain the characters '?', '"', '/', '\', '<', '>', '*', '|', or ':'. Additionally, Win32 long filenames may not end with a period '.' or space ' ' character.

Eudora Rescue uses Eudora's descmap.pce files, when found, to generate output long filenames matching the mailbox names, replacing each illegal filename character by an underscore '_' character. So the above example would become "OS_2 User' Group", "John Q. Public." would become "John Q. Public_", and so on.

Deleted Messages

When a message in a Eudora mailbox is deleted, it is not immediately removed from the mailbox, it is simply removed from the .toc file. Only when the mailbox is compacted does the actual message get removed. If, before the mailbox is compacted, the .toc file is rebuilt in Eudora, messages which had been deleted after the mailbox was last compacted, will be restored.

When converting with Eudora Rescue using .toc files, deleted messages will not be converted even if the Eudora mailbox has not been compacted, unless the .toc file has been rebuilt in Eudora since the messages were deleted, or unless a mailbox file has no matching .toc file.

When converting with Eudora Rescue without the use of .toc files, all messages in the mailbox will be converted, including those marked for deletion since the mailbox was last compacted, since apart from the .toc file there is no way to know which had been marked for deletion.

Unless recovery of deleted messages is intended, Eudora mailboxes should be compacted using Eudora's 'Compact Mailboxes' command before using Eudora Rescue.

Lost Messages

Eudora has a habit of placing many messages in its mailboxes without proper demarcation. As long as the message has a proper .toc record, Eudora will make use of it. But, when a .toc file is rebuilt, Eudora seems itself unable to find such messages, so they will not receive a proper .toc record. Eudora has, in effect, lost them, though they remain in the mailbox, in most cases even after compacting.

Reading comp.mail.eudora.ms-windows, one will frequently see given the common advice, "delete the .toc file and let Eudora rebuild it." This is very bad advice, except where strictly necessary, as rebuilding the .toc will not only lose all message status for that mailbox, it will also lose those messages themselves which are not properly demarcated.

Eudora Rescue is able to recover such lost messages, and gives each such message an X-Recovered: header to aid in filtering them. To observe this, one could run Eudora Rescue on a Eudora mail tree without creating any output files, first with use of .toc files, then again without, optionally sending each report to a file, and compare the resulting totals:
  eudrescu D:\EudoraMail -tp [>withtoc.txt]

  eudrescu D:\EudoraMail -tn [>notoc.txt]
The number of recovered messages when run without .toc files, will be the total number of messages which are not properly demarcated. They are all considered recovered, since without .toc files they are lost to Eudora.

The number of recovered messages when run with .toc files, will be the number of improperly demarcated messages for which Eudora has no .toc record, perhaps due to .toc files being rebuilt; messages which Eudora has already lost.

When run against my archives of 62,121 messages without .toc files, the number of recovered messages reported was 3,687. When run with .toc files, the number was 5. Since I avoid rebuilding .toc files unless it is unavoidable, that is a reasonable number. For other users, the percentage may be much higher.

It should be noted that, as it is impossible to be one-hundred percent certain about Eudora's non-standard message delimiters, that some false positives are likely. In my case, of those 3,687 reported recovered messages, 3 were false positives; a fairly low percentage. The alternative, if one wanted no false positives, would be to not recover lost messages at all.

Message Fragments

Occasionally a message within a Eudora mailbox may be damaged, such that the message delimiter (From_) line is lost, along with some unspecified additional number of lines of the message. What remains is a message fragment. Through what agency this occurs, I do not know. Perhaps it is a result of an interruption while Eudora is writing to a mailbox, as in a power failure.

As long as the .toc file still has a record for that message, the remaining fragment may be recovered by Eudora Rescue, which will create a new From_ line, using the current date and time. Eudora Rescue also gives each such message an X-Fragment: header to aid in filtering them.

My archives had only two such message fragments.

Migrating to Thunderbird

Thunderbird, as of version 1.0, does a pretty good job of importing Eudora settings, addresses, and messages, including attachments, all by itself. It doesn't fix as many Eudora problems as does Eudora Rescue, and most importantly, it doesn't maintain message status. Eudora Rescue does those things well, but does not handle attachments, at least at this time. The best Eudora to Thunderbird migration path is to use a combination of the two, as outlined in the procedure below.

Before beginning, it is helpful to understand some of the reasons for the steps in the procedure. Firstly, the locations of the Eudora mail directory, attachments directory, and embedded directory, where Eudora keeps its mailbox and .toc files, its attachments, and its embedded images, is found in the Windows registry. Secondly, it is in those locations specified by the registry, that Thunderbird will look for those Eudora files. Thunderbird does not give any choice in the matter.

So the idea behind the procedure is to make Thunderbird see the Eudora Rescue converted directory as being the Eudora mail directory, which may also require making a copy of the attachments and/or embedded directories. To do so, you must yourself know where those directories are located. Also note that doing this will require as much or more free disk space as is presently taken up by your Eudora mail, attachments, and embedded directories combined, and it must be available on the drive on which the Eudora mail directory resides. This can be a very large amount, so make sure you have enough space before beginning.

In the steps below, Mail\ is the mail directory, Attach\ is the attachments directory, and Embedded\ is the embedded directory; substitute for each, your directory's name. Remember that if a file or directory name contains spaces, that the entire argument containing such a name must be placed within quotes on the command line. Also, note in the examples below, that the entire command line is one single line, not two or more lines as may be shown to fit the width of this document. Your directory tree may have one of two forms: the attachments and/or embedded directories may or may not be underneath (inside) the mail directory, as shown:
  Example A:  Attach\, Embedded\ not below Mail\
    C:\Program Files\Eudora\
    C:\Program Files\Eudora\Mail\
    C:\Program Files\Eudora\Attach\
    C:\Program Files\Eudora\Embedded\

  Example B:  Attach\, Embedded\ below Mail\
    D:\EudoraMail\Mail\
    D:\EudoraMail\Mail\Attach\
    D:\EudoraMail\Mail\Embedded\

Part A:  Compact Mailboxes
  1. Run Eudora, execute 'Compact Mailboxes', exit Eudora.

Part B:  Convert Mailboxes with .mbx extensions
  2. Create a Converted\ directory beside the Mail\ directory:
       C:\Program Files\Eudora\Converted
         or
       D:\EudoraMail\Converted

  3. Create Attach\, Embedded\ directories under Converted\ directory,
     if your Attach\, Embedded\ directories are below Mail\:
       D:\EudoraMail\Converted\Attach\
       D:\EudoraMail\Converted\Embedded\

  4. If your Attach\, Embedded\ directories are below Mail\, copy the
     entire Mail\Attach\ tree to Converted\Attach\, and copy the
     entire Mail\Embedded\ tree to Converted\Embedded\.
       D:\EudoraMail\Mail\Attach   to D:\EudoraMail\Converted\Attach
       D:\EudoraMail\Mail\Embedded to D:\EudoraMail\Converted\Embedded

  5. Run Eudora Rescue with your choice of options, sending the output
     to the Converted\ directory:
       eudrescu [options] "C:\Program Files\Eudora\Mail"
                "-o=C:\Program Files\Eudora\Converted" -x=.mbx
         or
       eudrescu [options] D:\EudoraMail\Mail -o=D:\EudoraMail\Converted
                -x=.mbx

Part C:  Import Converted Mail (make sure Eudora is NOT running)
  6. Rename the Mail\ directory to Mail_Save\:
       C:\Program Files\Eudora\Mail to C:\Program Files\Eudora\Mail_Save
         or
       D:\EudoraMail\Mail to D:\EudoraMail\Mail_Save

  7. Rename the Converted\ directory to Mail\:
       C:\Program Files\Eudora\Converted to C:\Program Files\Eudora\Mail
         or
       D:\EudoraMail\Converted to D:\EudoraMail\Mail

  8. Run Thunderbird, import Eudora MAIL ONLY, exit Thunderbird.

  9. Rename the converted Mail\ directory back to Converted\:
       C:\Program Files\Eudora\Mail to C:\Program Files\Eudora\Converted
         or
       D:\EudoraMail\Mail to D:\EudoraMail\Converted

 10. Rename the saved Mail\ directory back to Mail\:
       C:\Program Files\Eudora\Mail_Save to C:\Program Files\Eudora\Mail
         or
       D:\EudoraMail\Mail_Save to D:\EudoraMail\Mail

Part D:  Import Eudora Settings and Addresses (if desired)
 11. Run Thunderbird, import Eudora settings/addresses ONLY, do
     NOT import mail; exit Thunderbird.

Part E:  Clean-up
 12. If the converted mail is no longer required, delete Converted\:
       C:\Program Files\Eudora\Converted
         or
       D:\EudoraMail\Converted
     MAKE SURE YOU DO NOT DELETE YOUR EUDORA MAIL!
Note that steps 3 and 4 are required only if your Attach\, Embedded\ directories are under your Mail\ directory, and are necessary so that when Mail\ and Converted\ are renamed, Attach\ and Embedded\ will still be visible. They are necessary only if you wish to import attachments and embedded objects.

Note that Part D is optional.

Why Eudora Rescue?

In January of 1996 (more than nine years ago now), I began using Eudora for my e-mail, beginning with version 1.5.2. The light version was free and quite capable, and not restricted in any way. I began to frequent the newsgroup comp.mail.eudora.ms-windows. As time passed I upgraded to newer versions, buying Eudora Pro and ending up at version 4.1. During that time, a disturbing trend began to emerge: Qualcomm had its own agenda, and users were oft-times ignored. Witness that fact that one of the most frequently requested features, threading is still not available to Eudora users to this day, and perhaps it never will be, despite being available in many, many other e-mail clients.

But worst of all, after version 4.1 Eudora became ad-sponsored software, which is only one tiny (and often blurred) step away from spyware and every other form of malware. That is completely unacceptable! But by this time, I had more archived e-mails than I could possibly consider leaving behind, and to switch to another client was made exceedingly difficult by Qualcomm's use of a not-quite-standard mbox format, coupled with keeping messages and their status in separate files. Many clients were able to import Eudora's message text (and sometimes not even that properly), but none I found were able to maintain the messages' status.

So for years I remained trapped with 4.1, longing for missing features. And judging by postings in various forums, there were many others in the same boat. Some fine scripts have appeared to assist in migrating from Eudora, written in Perl or in Python, but they require the user to have additional software installed. Finally, I decided to tackle the job of writing a stand-alone utility designed for one purpose: to rescue users, including myself, from the chains of Eudora!

Some Timings

At the time of this test, my Eudora e-mail archives consisted of 61,727 messages in 400 mailboxes. The conversion was done on a 1.5 GHz Athlon system with 512 MB of RAM, which was re-booted between timings to ensure that no e-mail remained in memory.

Mozilla Thunderbird 1.0 imported the archives in 59 minutes, 11 seconds. Eudora Rescue 0.5 converted the same archives in 1 minute, 43 seconds.

But that's not the whole story. Thunderbird's import time includes not only the time to convert the mailboxes, but also the time required to create its summary (.msf) files. When using Eudora Rescue, only the converted mailbox files are present. So Thunderbird will still create its summary files as each mailbox is opened within Thunderbird, which will take additional time.

And that's still not the whole story. While Thunderbird did a good job of importing the Eudora e-mail, it did not fix as many problems as did Eudora Rescue. But the biggest factor is that Thunderbird could not maintain the messages' status, which Eudora Rescue does very well.

So the best migration is achieved by using Eudora Rescue to convert the Eudora mailboxes, using Thunderbird to import those converted mailboxes, then using Thunderbird to import Eudora's settings and addresses.

Some Technical Details

Eudora Rescue converts Eudora mailbox (.mbx) files [together with Eudora Table-of-Content (.toc) files] mailbox-by-mailbox, message-by-message, and line-by-line, performing all specified conversions along the way. For example, if a message does not contain a Date: header, one is added, using the date in the From_ (message delimiter) header, converted to standard format. Similarly, if a message does not contain any Received: headers, one is optionally added, using the date from the Date: header, or from the From_ header if there is no Date: header.

In Eudora, sent messages contain neither a Date: header nor a Received: header, which creates problems for other e-mail clients when importing from Eudora mailboxes. However, all messages in a Eudora mailbox file do contain a date in the From_ header, which is used by Eudora Rescue when adding a Date: header, or when adding a Received: header where there is no Date: header. [Note that the From_ header (with no colon) referred to here is the message delimiter, and is not the same as the From: header.]

A properly formed mbox message delimiter (From_ header) is defined as a line of the form:
  From <address> <date specifier>
where <address> is any non-whitespace string (in Eudora usually ???@???) and <date specifier> is exactly 24 characters long and of the form:
  Day Mth dd hh:mm:ss yyyy
where:
  Day  is a three-letter weekday abbreviation,
  Mth  is a three-letter month abbreviation,
  dd   is a two-digit date, first digit may be space,
  hh   is a two-digit hour in 24-hour format,
  mm   is a two-digit minute,
  ss   is a two-digit second, and
  yyyy is a four-digit year.
Eudora Rescue is flexible in interpreting message delimiters which are not mbox compliant.

When a message does not contain a Date: header or a Received: header, which is true of all sent messages in a Eudora mailbox, Eudora Rescue converts the date in the From_ header (message delimiter) line to a standard Date: header or a Received: header of the form:
   Date: Day, dd Mth yyyy hh:mm:ss +/-zzzz
or
   Received: Eudora Rescue [0.7]; Day, dd Mth yyyy hh:mm:ss +/-zzzz
where Day, dd, Mth, yyyy, hh, mm, and ss are as defined above, and +/-zzzz is a four-digit timezone offset plus or minus from GMT. The default offset is the timezone obtained from the system. The -z option may be used to override the obtained timezone.

Additionally, messages in Eudora mailboxes are From_ quoted only if they take on the form of the Eudora-specific message delimiter: From ???@??? <date/time>. Even then they are quoted only one time, but are quoted even before being sent, and the original message is afterwards displayed quoted, as though entered that way by the user; i.e. it is impossible to send such a line unquoted. Eudora Rescue performs proper From_ quoting.

Worse, Eudora handles html e-mail in a non-standard way, adds tags such as <x-html> and <x-flowed>, and badly mangles the Content-type: header, so that such messages will not be properly displayed when imported by another client. Worse still, messages' status are not available at all within the mailbox, and are very difficult for another client to import. Eudora Rescue fixes these and a host of other Eudora issues.

To Do

  1. Add option to insert Unix-format Status: and X-Status: headers.

Revision History

Version 0.7 2005/04/05
  • Now uses Eudora's descmap.pce files to obtain actual mailbox names.
  • Now recurses only into mail (*.fol) folders; -r++ may be used to force recursion through all directories.
  • Now allows use of no replacement extension with -x-. Output files will have the same extension as input files. Default is now -x-.
  • Now obtains the timezone automatically from the system. The obtained timezone is reported after the introduction at the beginning of the run. -z may still be used to override the timezone obtained.
Version 0.6 2005/03/18
  • Thanks to Ron Kasl for writing up Eudora Rescue on mozillaZine.
  • Now recognizes any address argument in From_ line, to better conform with mbox(5). Eudora only ever creates ???@???, but thanks to Craig Fox for showing that Eudora may have in its mailboxes, and use messages from other clients which use different address formats.
  • Now recovers messages lost by Eudora.
  • Now recovers message fragments.
  • Updated reporting to account for fragments and lost messages.
  • Now removes NULL (0x00) characters which should never, per RFCs, appear in a message, but manage to turn up in Eudora mailboxes.
  • Slightly rearranged option characters:
    • Received: (was -r) is now -e,
    • Recurse (was -s) is now -r, to better match recurse option of many other utilities.
  • Added -s option to turn off spinner, for sending report to a file.
  • Now reports run time at end of run.
Version 0.5  2005/02/02  First public release of Eudora Rescue.
  • Added ability to use .toc file to migrate status along with message.
  • Added -c option to correct/insert Content-type: headers.
  • Added -f option to modify From_ line's address argument.
  • Added -g option to remove Eudora-specific tags in body of message.
  • Added -m option to insert X-Mozilla-Status(2): headers.
  • Added -n option to insert X-Imported: header.
  • Added -p option to remove Eudora-specific X-Persona: header.
  • Added -x option to specifiy output files' extension.
Version 0.4
  • Recurse option was attempting to create output directories when it shouldn't. Fixed.
  • Made output overwrite existing files only if specified by the user.
Version 0.3
  • Added -s option for recursion through sub-directories. When active, each input specification will recurse through all sub-directories of the specification's root directory, and same-named directories will be created in the output path.
Version 0.2
  • Added -r option to insert Received: header in message with none. When active, any message with no Received: header will have added to it a dummy Received: header.
  • Added -q option to quote from_ lines in body of message. When active, body lines of the form from_, >from_, >>from_, etc. (in any case) will have a '>' prepended, per mbox(5) (qmail).
  • Now recognizes message delimiter address other than ???@???. Any line beginning 'From ', with the next argument containing a '@' character, is considered an mbox message delimiter.
  • Better conformance to RFC 2076, RFC 2822, RFC 822:
    • Header lines may be of upper, lower, or mixed case.
    • Account for multiple whitespace (spaces/tabs) in header lines.
    • Account for folded header lines.
    • Account for apparent header lines in body.
Version 0.1
  • Initial version.

License and Disclaimer

Eudora Rescue is free for personal, private use only. For full details and for other uses, see the included LICENSE.TXT file.

Eudora Rescue is provided as is, without warranty of any kind. There are no exclusions or limitations, period. The author will not be held liable for anything! The user assumes full responsibility. If you don't like it, then DON'T USE IT!

Contact

For contact information, please see the
contact page.

Copyright © 2003-2011 by Qwerky.  All rights reserved worldwide.
 This page is:  http://qwerky.50webs.com/eudorarescue/readme.htm.  Last Modified 2008 April 4.