lindahl@pbm.com
虽然已经存在一些程序可以将某些格式(例如 Microsoft Outlook Express)转换为 Unix 格式,但 Outlook 用户面临更大的挑战。一种转换方法是使用 Windows 下的 Mozilla Mail;另一种方法涉及更复杂的方法。本迷你 HOWTO 中解释了这两种方法。
Outlook 用于 .PST 文件的数据库格式称为 Jet,文档位于
http://msdn.microsoft.com/library/techart/olexcoutlk.htm
版权 (c) 2001-2004 Greg Lindahl
根据 GNU 自由文档许可证 1.1 版或自由软件基金会发布的任何后续版本的条款,允许复制、分发和/或修改本文档;没有不变章节,没有封面文本,也没有封底文本。许可证副本可以在以下网址找到
https://gnu.ac.cn/copyleft/fdl.html
我请求将更正和/或意见转发给文档维护者。如果您正在考虑进行翻译以外的衍生作品,我请求您与当前的维护者讨论您的计划。
您需要自行承担使用本文档中信息的风险。我对本文档的内容不承担任何潜在责任。您需要完全自行承担使用本文档的概念、示例和/或其他内容的风险。
所有版权归其所有者所有,除非另有明确说明。本文档中使用术语不应被视为影响任何商标或服务标记的有效性。
特定产品或品牌的命名不应被视为认可。
强烈建议您在进行重大安装之前备份您的系统,并定期备份您的系统。
请勿将您的猫放入正在运行的微波炉中。
1.01:修复了 inetd/xinetd 启动说明中的小错误。
1.1:添加了关于 Kmailcvt、Mozilla 以及如何在 Outlook 处于 Exchange 模式时使其与 IMAP 服务器通信的信息。
1.2:添加了关于使用 Mozilla 完成相同任务的详细信息
1.2.1:修复了格式错误。
1.2.2:根据 GFDL 重新许可,更多小错误修复。
1.3:更多小修复。
1.4:来自 Scott Phelps 的关于 TNEF 内容的信息(谢谢!)
转换实用程序的列表(许多是商业的)可以在以下网址找到
http://www.emailman.com/conversion/index.html
我听说程序 Kmailcvt 现在可以转换 Outlook 邮箱。但是,我不能 100% 确定这个说法是否属实,因为 Kmailcvt 肯定可以转换 Outlook Express 邮箱,这与 Outlook 邮箱完全不同。所以,如果您弄清楚了这一点,请告诉我。
我也听说 Windows 下的 Mozilla Mail 可以转换 Outlook 邮箱——但我得到的唯一可靠报告是附件没有被转换,所以如果附件对您很重要,请不要使用此方法。
Ximian Evolution 网站上有一些文档。我没有尝试过这个方法,因为我已经没有 Windows 机器了。但是,以下是他们说的做法
运行 Mozilla Mail
转到“文件 > 导入”,然后选择您希望从 Outlook 导入邮件。完成后,您就快完成了。
我相信 Mozilla 将其所有邮箱都存储为 Unix mbox 格式文件,即使在 Windows 下也是如此。因此,您要做的就是将这些文件传输到您的 Linux 机器。您可以在以下位置找到它们
C:/windows/Application Data/Mozilla/Profiles/default/XXX/Mail/imported.mail/,其中 XXX 将是一些数字的集合。如果您的 Windows 机器上有多个用户,“default”将改为您的用户名。
正如我之前提到的,我从未尝试过这种方法,所以我不知道它效果如何。特别是,第 3.4 节中提出的问题可能也适用于这种转换方法。
顺便说一句,Mozilla 只能在 Windows 下读取 Outlook 邮箱的原因是它调用了 Microsoft DLL 来完成这项工作。
首先,请确保您想以这种方式进行操作。特别是,第 2 节解释了如何在 Windows 下使用 Netscape Mail 进行转换。这比用这种方式更容易。
如果您决定以这种方式进行操作,您需要确保您的 Outlook 副本可以与 IMAP 服务器通信。当我第一次编写本 HOWTO 时,我假设 Outlook 就是 Outlook。不是的。如果您在企业/工作组模式(与 Exchange 通信)而不是 Internet 模式(与 POP/IMAP 服务器通信)下使用 Outlook,您将必须更改模式。
要测试您是否没问题,请查看 Outlook 的“工具”菜单,看看是否有“帐户”项。如果有,您就没问题,可以继续执行第 3.2 节。如果没有,请找到您的毛巾,并继续阅读。
更改模式并非易事,但一位热心的读者 (Matt Huyck) 发送了以下说明,这些说明看起来很危险,而且我没有测试过
从“工具”菜单中选择“选项...”,然后转到结果“选项”对话框中的“邮件服务”选项卡。在该选项卡的底部有一个标记为“重新配置邮件支持...”的按钮。屏住呼吸,然后单击它。一个新的窗口弹出,标题栏中显示“Outlook 2000 启动”,标题为“电子邮件服务选项”。有两个相关的单选按钮:“仅 Internet”和“企业或工作组”。切换到“仅 Internet”,然后单击“下一步 >”。然后会提示您一个很长的消息框,您应该仔细阅读,因为您即将对 Exchange 客户端配置进行重大(但可逆的)更改。如果您还没有晕过去,现在可以停止屏住呼吸了。虽然它没有明确说明,但您需要确保在单击“是”之前拥有 Microsoft Office 安装 CD 的副本。单击“是”,让 Outlook 执行几秒钟的操作,直到它完全退出。再次打开 Outlook。在这里,系统可能会提示您提供安装 CD。重新配置完成后,您就可以继续执行 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 服务器的名称应该出现在您的文件夹列表的底部。单击它;您应该看到一个收件箱文件夹。(请注意,如果您的 Linux 机器上不存在 /var/mail/yourusername,您将无法将任何邮件拖放到您的收件箱中... 并且错误消息会令人困惑。但是,这不是我们要做的。)
此时,您可以将整个电子邮件文件夹从 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 生活方式迈出了又一步。