通过mutt使用gmail

Mutt是一个非常成熟的邮件客户端(mail agent),而Gmail是我最喜欢的Web应用。Gmail被认为几乎是无限的容量如果加上mutt便捷快速的处理能力就更加完美了。事实上使用Gmail处理邮件已经够快了,你可以使用tag,可以使用它提供的非常强大的搜索能力来加快邮件处理的速度。但是,对我来说还不够快。一个主要原因是mailing list,像[css-d],[ubunt-jp],[ubuntu-devel]等等,每天大概有几百封邮件在飘来飘去,如果使用click-and-read的话,几乎是根本读不完的。于是,在半年前,我决定使用mutt。

“Mutt并不适合所有人,这包括那些并不能理解电子邮件基本概念的人,或者那些并不希望作更多配置的人。Mutt甚至不是为大多数’普通’用户设计的,虽然,它当然也可以为他们很好的服务。对于那些仅仅需要一个’可以用’的邮件客户端并不追求更高性能的用户,也许其他邮件客户端程序能适合他们。”

以上是mutt的作者说的,所以,也许您并不需要读完这篇文章。本文也只是说明gmail+mutt,对于mutt+MS Exchange(IMAP)并不适用,而后者是很多公司使用的电子邮件服务器,如果您需要这个组合,可以再google一下互联网,那里有很多相关的文章。
这个解决办法是mutt+fetchmail+procmail+msmtp的一个综合工具,所以配置起来稍微有些复杂。下面细细道来。

角色:

  • mutt————–mail client(MUA: Mail User Agent)
  • fetchmail———receiving(MRA: Mail Retrieval Agent)
  • procmail———-receiving(MDA: Mail Delivery Agent)
  • msmtp————-sending(MSA: Mail Sending Agent)

这里没有使用传统的sendmail,想象一下在一台笔电上装个服务器也挺奇怪的。轻量级的procmail+msmtp就可以解决问题。

准备:
首先,打开gmail的pop功能。下面是Google的官方手顺。
http://mail.google.com/support/bin/answer.py?answer=13273

示例用户:

姓名:大头阿当
邮件地址:datou.example@gmail.com
邮件秘密:datoupasswd
Linux的用户名:datou

下载邮件:
是的,是下载。fetchmail可以把gmail邮箱中的邮件下载到本地机器的一个目录中,mutt读取这个目录的内容并为用户展示邮件内容。所以,使用mutt阅读gmail邮件的第一步就是使用fetchmail下载邮件。而在此之前,必须想办法连接到gmail的邮件服务器。因为Goolge使用ssl做认证以增加安全性,所以,为了完成用户认证,必须配置一个ssl的认证文件。

配置SSL认证文件:

$ mkdir -pv $HOME/mail/certs
$ cd $HOME/mail/certs
$ touch Thawte_Premium_Server_CA.pem
$ touch Equifax_Secure_CA.pem

这里这里下载这两个文件,保存到上面touch的位置。

$ wget http://www.adamjiang.com/Thawte_Premium_Server_CA.pem
$ wget http://www.adamjiang.com/Equifax_Secure_CA.pem

刷新你的ssl认证,告诉openssl你已经加入了新的认证文件。

$ c_rehash $HOME/mail/certs

注意,这个认证文件的有效期直至google通知/警告你需要新的认证文件为止。但是这个有效期还是比较长的,所以暂时不用担心。

配置fetchmail:

$ touch $HOME/.fetchmailrc

将下面的内容写如这个文件,注意把示例用户的信息替换成你的信息。

poll pop.gmail.com
with proto POP3
user 'datou.example@gmail.com'
there with password 'datoupasswd'
is 'datou' here
mda "/usr/bin/procmail -d %T"
options
no keep
ssl
sslcertck
sslcertpath /home/datou/mail/certs/

改变这个文件的属性。

$ chmod 600 ~/.fetchmailrc

配置procmail:
将下面的这句话加入你的$HOME/.bashrc,用来为所有的应用程序指明邮件的投递点。

# Set the MAIL
export MAIL=/var/spool/mail/datou

提醒一下,把datou替换成你自己的Linux用户名。
按照下面的例子,为procmail写一个配置文件。

PATH=/bin:/usr/bin:/usr/local/bin
VERBOSE=off
DEFAULT=/var/spool/mail/datou
MAILDIR=$HOME/mail
LOGFILE=$HOME/.procmaillog
# Recipes below this comment:
:0:
* ^TOmutt-user
mutt

注意,你不是datou!

发送邮件:

$ touch $HOME/.msmtprc

仿照下面的例子,配置msmtp。

account default
host smtp.gmail.com
port 587
from datou.example@gmail.com
tls on
tls_starttls on
tls_trust_file /home/datou/mail/certs/Thawte_Premium_Server_CA.pem
auth on
user datou.example
password datoupasswd
logfile ~/.msmtp.log

注意datou捣乱。
为这个文件配置正确的读写权限:

$ chmod 600 ~/.msmtprc

阅读邮件:

$ touch ~/.muttrc

这里下载.mutt文件,并将它保存到上面touch的位置。

$wget http://www.adamjiang.com/_muttrc
$mv _muttrc $HOME/.muttrc

改变必要的部分,将下面的例子保存成你自己的mutt配置文件。如果你是mutt初体验,上面的例子应该足够了。如果你需要更进一步的配置,阅读一下mutt的manpage,或者访问mutt的官方网站。

配置mutt的颜色:
还是一个例子;适用于深色背景的终端。将下面的内容保存到你指定的color文件,在上例中,这个文件是’~/mutt/mutt_colors’。

color    index         blue             black          Motorola
color    index         brightyellow     black          Seasar
color    index         brightwhite      brightgreen    uclibc
color    header        brightyellow     black          subject
color    hdrdefault    brightwhite      black
color    quoted        brightgreen      black
color    status        white            cyan
color    indicator     default          green
color    normal        brightwhite      black

Mutt的色彩配置事实上是下面的模式,所以,你可以根据自己的需要hightlight你的邮件。

color    object    foreground    background    regax
色彩    UI对象    前景色        背景色        正则表达式

比如上面例子中的第一行

color    index    blue    black    Motorola

就是在index中找到含有Motorola的邮件用蓝色在黑色背景上高亮显示。你可以改变自己关心的关键字和喜欢的颜色。

测试:
配置基本完成了,现在测试一下,看看datou 是不是影响你了。如果出错了,请首先检查一下大头是不是真的影响到你了。
$ mutt
使用mutt命令进入mutt,这时候mutt会提醒你是否建立你自己的mail文件夹,回答yes或者no。进入mutt之后,输入:
!fetchmail -v
如果大头没有捣乱,你因该可以看到fetchmail在收邮件了。如果你的邮箱中有超过500封邮件,fetchmail可能不能一次将他们全部下载完,请注意这一点。但是这样手动的方法是在太笨了,一点也看不出效率的提高。恩,是的,所以我们还需要安排一个cron任务——每5分钟下载一次邮件,这样基本保证你可以得到新的消息。
$ crontab -e
这个命令将打开一个新的编辑器,将下面这个行输入,保存退出。
*/5 * * * * /usr/bin/fetchmail
OK,mutt+gmail就配置完成了。当然,你需要一些时间适应一下mutt的操作,另外,查看mutt的文档可以得到更多的帮助。下面是一些简单的命令:

? 查看帮助 Enter 查看邮件 j 下一封 K 上一封 r 回复 d 删除 u 删除解除 v 查看附件

mutt在查看html邮件时需要调用elinks或者w3m,所以,这些程序在linux一般都已经准备好了。如果没有,just install them.

5 thoughts on “通过mutt使用gmail

  1. 大头呀大头,谢谢你这么辛苦把它整理出来。我按照你说的,一步一步来。
    fetchmail搞定了;但 send mail 折腾了半天,依旧没有效果。
    这里是它给出的错误信息:
    msmtp: TLS certificate verification failed: the certificate hasn’t got a known issuer
    msmtp: could not send mail (account default from /home/kos/.msmtprc)

    怎么搞都没搞定,能否指点一下呀。。。

  2. Pingback: 阿当正传 » Blog Archive » Gmail证书变更导致的msmtp错误

  3. Pingback: Blogs » mutt牛人

发表评论