前段时间向内核提交了几份文档翻译补丁,由于使用了gmail的web GUI,出现了一些问题:
- 1、在复制到gmail时,出现了自动换行。(感谢Greg Kroah-Hartman大神的提醒和修复,对于他手动修复这个问题补丁表示感谢和愧疚)
- 2、在发送补丁后,有的订阅者由于邮件客户端的不同可能会出现乱码,这是因为gmail的web GUI会将邮件的中文编码转换为base64。
在出现了这些问题之后,我不得不反省自己一直迟迟没有使用mutt作为邮件客户端的偷懒行为。其实很早我就知道作为Linux开发者大部分都是使用Mutt作为邮件客户端,但是感觉需要好多配置就没有使用,到了这次提交补丁,问题暴露出来。
一不做二不休,一次性搞定这个问题。我请教了同事刘洋,让他告诉我具体mutt与其他软件之间的关系,以及一些软件配置文件的关系。周末回去花了1~2小时就可以收发邮件了,其实就是按照构架挨个配置就好了,配置文件网上有现成的,改改就好。其中最麻烦的就是procmail的中文过滤,这个至今没有完美解决。
对于Mutt邮件处理系统的配置,关键就是了解这个系统中各个组件的关系。配置一个软件不是什么问题,其实Mutt配置的麻烦在于不只配置一个软件,而是几个各自分工的软件。而这种结构也正是体现了类UNIX系统的精髓:每个功能都由专门的工具解决,最后由这些工具组合成一个完成复杂工作的软件集合。而这样做的原因是(引用《简明 Python 教程》中的一句格言):
- 有两种方式构建软件设计:一种是把软件做得很简单以至于明显找不到缺陷;另一种是把它做得很复杂以至于找不到明显的缺陷。
- ——C.A.R. Hoare
在此,我做了一个系统框图,通过框图,大家应该可以很清楚看出各部分软件间的关系。
在理解构架之后,只需要按照以下的步骤逐个配置就好了。
1、配置用于收件的getmail,以及用于过滤(看作归类或分类)邮件的procmail,这两个邮件的配置都比较简单。
2、收件功能测试。在上面的getmail和procmail配置之后,可以通过类似:
- getmail -v -n -r ~/.getmail/getmailrc.gmail(getmail的配置文件)
的命令测试,看看配置指定的目录中有没有收到相关的邮件。其实执行指令的终端信息中也可以看出成功了没有。
一开始建议procmail的过滤条件尽量简单,或者直接都放到inbox中,到正常收件的时候再好好回头调试过滤用的正则表达式。
3、配置mutt,实现在mutt下查看收到的邮件。
4、配置msmtp,然后在mutt中测试发件功能。
5、mutt的功能补全,定义热键等后期工作
经过简单的前4个步骤,一般1~2小时就可搞定,实现基本的收发功能。功能补全就可以慢慢来了。对于这些软件的具体配置,我不想罗嗦,网上一搜一大把,我再写就是画蛇添足。这里我介绍几个不错的文章,大家按照以下的文章配置即可:
实战型文档:
:最老牌,且被广泛使用的Mutt教程,的作品
手册型文档: