首先,请确保您想要使用这种方式进行转换。特别是,第 2 节解释了如何在 Windows 下使用 Netscape Mail 进行转换。那种方法比这种方法更容易。
如果您决定使用这种方式,您需要确保您的 Outlook 可以与 IMAP 服务器通信。当我第一次编写这份 HOWTO 时,我以为 Outlook 就是 Outlook。并非如此。如果您在企业/工作组模式下使用 Outlook(与 Exchange 通信)而不是互联网模式(与 POP/IMAP 服务器通信),您将需要更改模式。
要测试您是否可以使用 IMAP,请查看 Outlook 的“工具”菜单,看看是否有“帐户”项。如果有,则您可以使用 IMAP,您可以继续阅读第 3.2 节。如果没有,请去找您的毛巾,并继续阅读。
更改模式并非易事,但一位热心的读者(Matt Huyck)发送了以下说明,这些说明看起来很危险,而且我没有测试过。
从“工具”菜单中选择“选项...”,然后在弹出的“选项”对话框中转到“邮件服务”选项卡。在该选项卡的底部有一个标记为“重新配置邮件支持...”的按钮。屏住呼吸然后单击它。一个新的窗口弹出,标题栏中显示“Outlook 2000 启动”,标题为“电子邮件服务选项”。有两个相关的单选按钮:“仅限 Internet”和“企业或工作组”。切换到“仅限 Internet”并单击“下一步 >”。然后,系统会提示您显示一个非常长的消息框,您应该仔细阅读该消息框,因为您即将对 Exchange 客户端配置进行重大(但可逆的)更改。如果您尚未晕倒,则现在可以停止屏住呼吸了。尽管它没有明确说明,但您需要确保在单击“是”之前拥有 Microsoft Office 安装光盘的副本。单击“是”,让 Outlook 运行几秒钟,直到它完全退出。再次打开 Outlook。此时可能会提示您插入安装光盘。重新配置完成后,您可以继续执行 HOWTO 的步骤 3.2。
要返回到您原来的 Outlook 配置,请按照相同的说明进行操作,但显然您将单击*另一个*单选按钮。
如果您一直在使用 Exchange,还有一件事是不同的。正如您在第 3.4 节末尾指出的那样,“原始的 ‘From ’ 行”未被保留。但是,对于 Exchange 用户来说,“幸运的是,您实际上并不需要该信息”的评论并不完全适用。缺少的“From”标头是唯一包含在内部 Exchange 服务器上发送的消息(即,未通过任何 Internet 网关的消息)中发件人身份的标头。我通过使用“文件”菜单中的“导入和导出...”命令将邮件文件夹另存为文本文件来保留了我的“From”标头。我计划编写一些扭曲的 Perl/Grep 代码,将这些“From”标头重新插入到我的 Linux mbox 文件中。如果我成功了,我会通知您。
安装方法因 Linux 发行版而异,因此我将以 RedHat 7.0 为例。首先,您需要安装正确的软件包,通常软件包名为“imap”或“uw-imap”之类的名称。
cd /home/redhat-7.0-cd/RedHat/RPMS
ls *imap*
rpm -i imap*
实际上,由于我安装了“工作站”安装,我还必须安装 xinetd 软件包;rpm 给出了一个错误,告诉我这样做。当然,它在 RedHat 7.0 的第二张 CD 上。使用“apt-get”的 Debian 用户不必担心此类问题。
接下来,我们需要启用 imap 服务器。在我的基于 Gnome 的桌面上,可以使用图形工具在“开始” -> “系统设置” -> “服务器设置” -> “服务” 中完成,或者您可以手动完成。这通常由文件 /etc/inetd.conf
中的一行控制。
#imap stream tcp nowait root /usr/sbin/tcpd /usr/sbin/imapd
上面这行被注释掉了;删除行首的 # 符号。或者,如果您的系统使用 xinetd,则编辑 /etc/xinetd.d/imap
并将“disable=yes”更改为“disable=no”。
然后通过执行以下操作重启 inetd 或 xinetd
/etc/rc.d/init.d/inetd restart
或者
/etc/rc.d/init.d/xinetd restart
如果所有其他方法都失败,请重启。
您实际上并不想长时间启用 IMAP 服务器。此服务器以 root 身份运行,并且过去曾出现过安全漏洞。因此,除非您希望永久使用它,否则不应保持启用状态。我们将在第 3.5 节中禁用此服务器。
为了将 Outlook 连接到此 IMAP 服务器,您需要知道 Linux 机器的名称或 IP 地址。
为了将您的所有电子邮件复制到服务器,我们需要告知您的 Outlook 客户端有关此新服务器的信息。从“工具”菜单中选择“帐户...”,然后“添加”一个新帐户“邮件...”。重要的项目是服务器使用 IMAP 下载电子邮件,传入邮件服务器是您在第 3.2 节中获得的 Linux 机器的名称或 IP 地址,用户名和密码应该是您在 Linux 机器上的用户名和密码。(像往常一样,在这种情况下使用 Linux 上的 root 帐户是一个坏主意。)
单击“完成”后,通过突出显示新帐户并单击“设置为默认值”将此新帐户设置为默认帐户。Outlook 应该连接到您的 IMAP 服务器,并且您的 IMAP 服务器的名称应该出现在您的文件夹列表的底部。单击它;您应该看到一个 Inbox 文件夹。(请注意,如果您的 Linux 机器上不存在 /var/mail/yourusername,您将无法将任何邮件拖放到您的 INBOX 中... 并且错误消息会令人困惑。但是,那不是我们要做的。)
此时,您可以将整个电子邮件文件夹从 Outlook 拖放到 IMAP 服务器名称上。这将把电子邮件(包括所有附件)复制到 Linux 机器。不幸的是,它也会立即从 Outlook 中删除它。为了在不删除项目的情况下复制项目,请右键单击文件夹名称并选择“复制”选项。对于目标位置,请选择列表底部的 Linux 服务器。
但是,生活并非如此简单。Outlook 支持包含文件夹的文件夹,这些文件夹也包含邮件。Linux IMAP 服务器不支持这种结构(至少那些使用 Mailbox 格式的服务器不支持);文件夹要么是包含邮件的常规文件,要么是包含子目录和文件的目录。因此,如果您的 Outlook 中的文件夹既包含邮件又包含子文件夹,则您无法将整个树复制到 Linux IMAP 服务器。Linux IMAP 服务器的另一个不兼容之处是,您必须提前告知它新文件夹将包含子文件夹还是邮件。您可以通过在创建文件夹时在文件夹名称后附加斜杠 (/
) 来完成此操作。创建文件夹后,此斜杠将消失。
因此,为了将文件夹树复制到 Linux IMAP 服务器,首先您需要在 Linux IMAP 服务器上创建现有文件夹结构的副本。在执行此操作时,请注意哪些现有文件夹既包含子文件夹又包含邮件。您将需要将这些邮件移动到其他位置。创建整个树结构后,您可以将文件夹组复制或移动到 Linux IMAP 服务器。
最后需要注意的一个不兼容之处是,Linux IMAP 服务器不允许在文件夹名称中使用斜杠 (/)。您需要在复制或移动此类文件夹之前重命名它们。
在 Linux 机器上,文件夹以文件和目录的形式出现在您的主目录中。这些文件的格式是通常的 Unix 邮件格式,大多数 Unix/Linux 邮件工具可以直接使用或可以转换为/从这种格式转换。带有附件的文件将具有 MIME 附件;每个文件夹还有一个额外的消息,这是一个(无用的)标头。
(一个未保留的数据是原始的 “From ” 行,其中包含电子邮件的信封地址。幸运的是,您实际上并不需要该信息。)
关于附件,还有一个额外的细节需要注意。Microsoft 有时会将多个附件捆绑到一个 ms-tnef 附件中;TNEF 代表传输中性封装格式。此附件包含多个 MIME 编码的附件。我很幸运我的邮件文件夹中没有任何这些附件 - 它们似乎是在人们向您发送“富文本格式”电子邮件时创建的 - 它包含两种备选方案,一种是纯文本格式,另一种是 TNEF 封装的消息的富文本版本以及任何附件。
幸运的是,有一些方法可以解压缩 TNEF 附件。一种是 sourceforge 上托管的 tnef 项目,另一种是 ktnef,它是 KDE 的一部分。
一旦您传输了所有电子邮件,您将需要从您的 Linux 机器上卸载 IMAP 服务器,原因如前所述的安全原因。这涉及到您安装服务器时采取的相同 2 个步骤
rpm -e imap
/etc/inetd.conf
或 /etc/xinetd.d/imap
中的行
瞧!您已经朝着无 Microsoft 生活方式迈出了又一步。