1.2. MHonArc 应用示例

1.2.1. 任务1: 将邮件存档转换为网页
1.2.2. 任务2: 新邮件直接转换为网页——别名
1.2.3. 任务3: 新邮件直接转换为网页——procmail
1.2.4. 任务4: 新闻转换为网页

1.2.1. 任务1: 将邮件存档转换为网页

mbox 格式是Unix上存储邮件的最常见的格式,一个 mobx 文件可能包含零个到多个邮件。MHonArc 支持将 mbox 格式的文件批量转换为网页。

prompt> mhonarc path/mbox 1
prompt> mhonarc -outdir /home/johnson/archive /home/johnson/mail/inbox 2
1

将 mbox 中的邮件批量转换为网页存储在当前目录下。将会生成如下文件:

  • maillist.html

    主要的索引文件,文件列表将按照时间排序。

  • threads.html

    索引文件,按照线索显示列表

  • msg*.html

    转换为网页的邮件。* 从 0 开始,顺次加一。

  • .mhonarc.db

    MHonArc 维护的数据库,便于今后的目录更新。

2

通过 -outdir 参数,指定转换后的网页的存储路径,确省是在当前路径。

可能大多数人和我一样使用 Outlook 处理邮件。SourceForge.net 上面有几个开放源码,可以将 Outlook 的文件夹格式转换为 mbox 格式,之后的过程就和前面一样了。

  • ol2mbox

    Outlook to unix mail converter. 可以将 Outlook 的 PST 格式转换为 mailbox 格式。

  • mbx2mbox

    Converts Outlook .mbx and .dbx files into standard RFC822 mail files.

1.2.2. 任务2: 新邮件直接转换为网页——别名

利用邮件别名,实现将新邮件直接用 MHonArc 转换为网页。这项功能对于将 Mail-List 内容转换为网页非常适合。

例如在别名文件 /etc/aliases 中加入如下条目:


maillist2html: "|/usr/local/bin/mhonarc -add -quiet -umask 022 -idxfname index.html -rcfile /home/mhonarc/.mhonarc.mrc -outdir '/home/mhonarc/public_html/maillist1' -title 'Maillist 1 Archive'"

  • 上面的示例中,参数: -idxfname index.html,的作用是将主索引的文件名设置为 index.html 而不是 maillist.html;

  • 参数: -rcfile /home/mhonarc/.mhonarc.mrc ,的作用是使用文件 /home/mhonarc/.mhonarc.mrc 作为确省的模板文件,用以定制转换的网页的界面;

  • 参数: -outdir '/home/mhonarc/public_html/maillist1',用来设置转换后的网页的储存路径;

  • 参数: -title 'Maillist 1 Archive'",用来设置索引页的标题。

1.2.3. 任务3: 新邮件直接转换为网页——procmail

在上面描述的任务中,通过使用邮件别名将邮件转换为网页固然可以完成任务,但是如果想对订阅的大量的邮件列表进行 html 存档,就需要建立大量的对应的 aliases 条目,显然笨拙了一些。

procmail 是一个用于过滤用户接收到的电子邮件,并能对其自动分类、处理的一个应用软件。可以用来分检来自不同邮件列表的邮件。

在用户 mhonarc 的主目录下创建一个文件: /home/mhonarc/.procmailrc ,来实现将多个邮件组的邮件分检。如下:

VERBOSE=no
MAILDIR=$HOME/mail
WWWROOT=$HOME/public_html
LOGFILE=$HOME/var/log.procmail

MHONARC='/usr/local/bin/mhonarc -add -quiet -umask 022 -idxfname index.html'

:0
* ^Subject: [\/[^\]]+ 1
{
        ##Directory needs to be created seperately, as Mhonarc is unable to
        ##create the required directory.

        :0c
        | /bin/mkdir -m 755 -p $WWWROOT/$MATCH 2

        :0 : $HOME/var/mhonarc.lock
        | $MHONARC -rcfile $HOME/.mhonarc.mrc -outdir $WWWROOT/$MATCH -title "Maillist [$MATCH] Archive" 3

}
1

匹配邮件标题,对于格式为:"[邮件列表名称] 邮件标题..." 的邮件标题的邮件进行处理,将“邮件标题列表”部分存储在变量 $MATCH 中。

例如邮件标题为: “[docbook] RE: how to ...” 的邮件,匹配条件继续处理,并且将变量 $MATCH 设置为 docbook。

2

创建目录 $WWWROOT/$MATCH,目录名利用了刚刚获取的变量 $MATCH,该目录作为 MHonArc 的输出目录,即完成了邮件的分检。

3

交由 MHonArc 处理。即将邮件转换为网页。

1.2.4. 任务4: 新闻转换为网页

新闻组固然会给沟通带来便利之处,但是不足之处:

  • 无法通过 URL 定位到具体的文章,只能笼统的说在某某版在几月几号有关于这个问题的一篇文章;

  • 当某一板块有过多文章时,客户端下载会给服务器带来过多的负荷;

  • 不能进行检索。没有检索就不能叫做成功的知识管理系统,建立新闻组到网页的存档为建立全文检索准备了条件。

如果能够将新闻转换为 WEB 页面,上述问题迎刃而解。首先配置 inn 的 newsfeed 文件,将新闻以邮件形式发送给用户(如上例的用户 mhonarc)。

newsfeed 文件中相应条目:


n2m!:!*:Tc,Ac,Wn*:/usr/lib/news/bin/news2mail
mail-archive@sample.com:worldhello.*,本站站务.*,!local.test:Tm:n2m!

对应的配置文件 news2mail.cf 的相关条目:

mail-archive@sample.com  mhonarc

重新启动 news,新来的新闻就可以出发 news2mail 将新闻以邮件形式发送给用户(mhonarc)。还要注意 news2mail (perl 脚本)是如何重组邮件标题的,后面使用 procmail 分检邮件需要依赖邮件标题的格式。

接下来就是设置用户(mhonarc)的 .procmailrc,以实现分检邮件。照搬前一个例子即可。