来自
http://www.tt-solutions.com/en/products/yahoo2mbox/这是什么?
yahoo2mbox 是一个小型的 Perl 脚本,它从 Yahoo! Groups 的邮件列表存档中检索所有消息,并将它们存储到一个本地文件中,该文件以 MBOX 格式存储,该格式被所有 Unix 邮件阅读器和许多其他邮件阅读器所识别。
如果您不知道什么是 Yahoo! Groups,您可能不需要这个程序。但如果你像我一样,想使用你喜欢的邮件用户代理程序(MUA)遍历现有的存档,而不是使用 Yahoo 界面,你可能喜欢这个。
最新版本是 0.17 和一些其他小的修复,增加了一个新的 --last 命令行选项。
其他有趣的功能包括支持本地化 Yahoo 组和受年龄限制的 Yahoo 组。遗憾的是,自动地址乱码解除不再正常工作(截至 2003 年 12 月,可能更早),因为 Yahoo 地址展示算法的更改。
... 回到顶部
许可协议
它是公有领域,你可以随意用它。另一方面,你不会对它有任何保证,不是吗?无论如何,没有保证。考虑到这种脚本的初始版本是 15 分钟内编写的,它肯定包含 bug — 自行承担风险!
... 回到顶部
需求
你需要 Perl 5.004(它可能与之前的版本兼容,但这是我测试过最早的一个版本)以及一系列模块,这些模块都可以从 CPAN 获取,包括但不限于 HTTP::Cookies、LWP::UserAgent 和 HTML::Parser。
该程序仅在 Linux 上使用 Perl 5.004、5.005、5.6 和 5.8 及 Windows 2000/XP/2003 上使用 ActivePerl 编译安装的 631 到 810 进行了测试,但它应该也可以在其他支持 Perl 的平台上工作。特别是,它既不特指 Unix,也不特指 Windows。
... 回到顶部
下载
您可以在此处获取脚本的 0.17 版本(大小仅供参考)
* 使用 gzip 压缩(Unix)(19Kb)
* 使用 zip 压缩(Windows)(19Kb)
... 回到顶部
用法说明
Windows 用户:如果你以前从未使用过 Perl,你需要从 ActiveState 等网站下载 Perl 并安装它。要运行此脚本,你应该在命令行("DOS")窗口中输入 perl yahoo2mbox.pl,然后输入所有其他参数。
只需运行脚本,并给出要从中下载消息的组的名称。如果组档案仅限于成员,您需要使用--user=member_name和可选的--pass=password选项,但实际上只需要第一个选项,如果没有指定密码,则会提示您输入密码。
默认情况下,输出到与组名称相同的本地文件,但可以使用-o output_file选项进行更改。您可以使用--start和--end选项控制要检索的消息范围(默认为所有)。如果输出文件已存在,则会在其中追加消息,除非指定了--noresume选项。默认情况下,恢复从文件中已有的消息数量等于索引号的消息开始,但此行为受--start选项影响,即如果您从第100条消息开始下载,然后下载了10条消息后进程中断,下一次运行将不会使用任何特殊选项而在第11条消息处恢复,而如果您下一次也指定了相同的--start=100选项,则只在第111条消息处恢复——这可能是所需的。
其他有用的选项包括--proxy=url(如果您的代理需要,您也可以包括用户名和密码,使用
http://user:[email protected]格式)如果您在防火墙后面,以及--cookies如果您之前使用Netscape或yahoo2mbox登录过Yahoo(它避免了每次都需要指定登录名和密码的需要)。
如果您想访问特定国家的组,应使用--country选项。请注意,目前仅支持少数国家,您的帮助将有助于让这个选项在更多国家中生效!
最后一个值得注意的功能是--x-yahoo选项,它告诉脚本将X-Yahoo-Message-Num头部插入所有下载的消息中,包含该消息在组中的序号。这可能有助于与本地邮箱和Yahoo档案进行同步,例如。
... 回到顶部
问题
似乎最常见的問題與Yahoo實施的某種下載限制有關。舊版本的腳本(在0.13之前)在下載一定數量的字節(據說它按字節計數,而不是按消息計數)後,會非常困惑地看到Yahoo提供的错误页面。新的版本应该会自动检测并停止尝试下載任何内容(任何头破血流都没意义),并在给出相应的错误信息后停止。
下载限制会随时间消失,但不幸的是,我不知道您需要等多长时间才消失。我能提供的唯一的提示是,存在两个,据称是独立的下载限制:一个是普通用户的限制,另一个是注册用户的限制。因此,您可以在达到限制后尝试匿名下载消息,然后切换到使用用户名和密码。当然,这仅适用于有公开档案的组。
此外,该限制是针对IP地址的,因此如果您可以更改IP地址(例如,您有拨号连接),您可以尝试这样做。另一方面,如果您有直接快速的网络连接,使用--delay选项可能会有帮助,因为它似乎至少绕过了一些下载限制。
已知有一个关于处理具有内部部分类型的message/rfc822(即嵌入的消息)的多部分消息的bug。Yahoo错误地包裹了内部头,特别是Content-XXX头,如在这个例子中可以看到。遗憾的是,没有真正的解决方案。如果您遇到这个问题,请手动在Content-XXX头后的行首插入一些空格。
... 回到顶部
感谢
* 感谢Malcolm-Rannirl实现了对使用Netscape cookies文件的支持。
* 感谢Dan Libby提出--resume选项的想法。
* 感谢Per Bolmstedt提供的旧半自动地址改写代码。
* 感谢Daniel Roethlisberger提供的国家支持代码。
* 资助JHB支持成人限制的Yahoo!群组
* 感谢Zainul M Charbiwala实现自动地址处理(遗憾的是这不再起作用了,但它在当时极其有用)
* 感谢Robin Lee Powell报告了错误
* 感谢Daniel Sutcliffe的各种贡献
如果你认为你的名字应该出现在这个列表中而目前没有,请与我联系。
... 回到顶部
变更日志
0.17
检测每个群体的下载限额,并提供更好的错误消息(Paul Telford)
添加了--last选项(Joshua Ellis)
0.16
添加对--country=tw的支持(Henry H. Tan-Tenn)
添加了--delay选项(Malcolm Heath)
修复了Yahoo更改后的下载限额检测(Bill)
0.15
修复了脚本在新(2003年8月)Yahoo页面布局下的工作问题
更新了地址处理表(Robert Zierer)
增加了对无限重定向循环的检测。
0.14
修复了最近Yahoo更改后跳过广告页面的问题
0.13
自动执行地址解码(Zainul M Charbiwala)
添加--x-yahoo选项(David Jaquay)
修复了处理--start选项的bug,并为常见错误情况提供更精确的错误消息
0.12
支持成人限制群组;支持--country选项的ar和mx值(JHB)
0.11
修复了访问分类群体的问题(Daniel Sutcliffe)和运行在Perl 5.8下的警告
0.10
修复了另一个与--country选项相关的令人尴尬的bug
0.09
修复了上一次发布中的致命bug(不使用--country开关将完全无法工作)
0.08
增加了对国家的支持
0.07
增加了地址处理
0.06
增加了代理支持,在即时修复生成的MBOX文件(处理头部包装和From填充,因为eGroups不再正确执行)
0.05
支持使用cookie文件,Windows修复
0.04
支持访问仅会员存档
0.03
针对eGroups站点布局更改进行更新
0.02
添加了--start和--end选项,以便检索部分消息(对于重启非常有用)
0.01
首次发布