今天突发奇想,决定不再使用evolution来处理email了,换用一下命令行下的mutt。以前虽然早已闻其大名,但到今天才有勇气去试一下。
先在网上仔细搜了一下mutt的教程,发现要么是过时的东西,要么就是讲得不清楚,决定自己重新整理一下。(不敢期望比其它教程都好;-p)
下面仅以我使用的FC5和gmail为例。;-)
首先你应该清楚mutt所扮演的角色,mutt的设计遵循了Unix的设计哲学──“做一件事,把它做好”。mutt不会编辑邮件,也不会收发邮件,它只是把做这些事的进程有效的结合起来。具体说就是,mutt会把由fetchmail接收来的邮件以可定制的方式呈现给用户,用户编辑时它会调用用户指定好的编辑器(比如:vi或emacs),然后把编辑好的邮件交给sendmail或者其它发送邮件的进程(比如我用的msmtp)来发送。整个过程就完成了。
为了更好的配合mutt,有必要先讲一下ESR编写的fetchmail的使用。首先,按照常规,你需要通过编写配置文档来定制fetchmail的行为。在用户目录下新建一个名为.fetchmailrc的文档,内容大体如下:
defaults
poll pop.gmail.com proto POP3 and options no dns
user ‘YOUR[email protected] there with password ‘YOUR_PASSWORD’ is ‘YOUR_USER_NAME’ here options ssl
keep
mda “/usr/bin/procmail -d YOUR_USER_ID”
把上面的YOUR_USER_NAME替换成你gmail的用户名(非gmail用户也要替换后面的服务器名和上面的pop服务器),YOUR_PASSWORD替换成你的邮箱密码,把YOUR_USER_ID替换成你在你//所用主机//上面的用户名。
编写完.fetchmailrc文档之后还要用chmod把它权限设为600。
试试用下面的命令测试一下你上面的配置:
fetchmail -c
如果配置OK的话,你以后就可以使用_fetchmail -d0 -v来接收邮件了。
如果你上面收到邮件的话(没收到的话就自己发一封;-p),现在启动mutt试试。(如果没有mutt的话,到mutt官方主页上下载一个最新的。注意:如果你要让mutt本身也有收邮件功能的话,编译时请指明。)进去后是不是就看到收到的email了?mutt的按键风格和vi类似,追求用最少的按键完成最多的功能。Enter键是阅读,i键退出阅读接口,如果有多于一封邮件的话,j上选中下面的一封,而k是选中下面的,如果还有更多的话,按PageUp和PageDown来进行翻页。和其它多数进程一样,按q键是退出mutt。
在进行进一步介绍mutt之前,我们先要看一下怎么发送邮件以及怎么定制mutt。
如前所述,发送邮件可以使用sendmail或者msmtp,我用的是后者(msmtp的官方主页是:http://msmtp.sourceforge.net/)。它的配置文档你应该能猜到了,也是在用户目录下,名为.msmtprc。设置如下:
account gmail
host smtp.gmail.com
from YOURMAILBOX
tls on
auth on
port 587
user YOUR_MAILBOX
password YOUR_PASSWORD
把里面的YOUR_MAILBOX替换成你的gmail邮箱,把YOUR_PASSWORD替换为你的密码即可。
mutt的配置文档有两个,一个是系统的,一个是用户的。系统配置文档是/etc/Muttrc,里面是设置mutt的一些配色等,而用户配置文档是为用户所用的,指定自己想要的一些特性,它是在用户目录下,名为.muttrc,内容大体如下:
set alternates=”YOUR_MAILBOX”
set to_chars=”+TCFL”
set index_format=”%4C %Z %{%b %d} %-15.15L (%41) %s”
mailboxes Mailbox sent-mail
set header=yes
set quit=ask-yes
auto_view text/html
set move=yes
set include
set indent_str=”
my_hdr From: YOUR_MAILBOX
set sort=date
set charset="utf-8"
set send_charset="us-ascii:utf-8"
set editor="vi"
set sendmail="/usr/local/bin/msmtp -a gmail"
set pop_last=yes
set pop_user=YOUR_MAILBOX
set pop_pass="YOUR_PASSWORD"
set pop_host="pops://pop.gmail.com"
同样,对大写的内容做相应的替换即可。
我们逐行来看:
set alternates=”YOUR_MAILBOX”
你有可能收到信件的地址。
set to_chars=”+TCFL”
设置$to_chars变量,一般就为”+TCFL”。
set index_format=”%4C %Z %{%b %d} %-15.15L (%41) %s”
格式字符串,用来控制index的列表显示。
mailboxes Mailbox sent-mail
指定你有哪些信箱文档。
set header=yes
显示邮件头。
set quit=ask-yes
退出时询问,默认是yes。
auto_view text/html
自动浏览text/html格式的邮件。
set move=yes
提示你把信件从 /var/spool移动到的邮箱文档。
set include
回复时引用原文。
set indent_str=”
回信时以”
my_hdr From: YOUR_MAILBOX
设置你自己的邮件头。
set sort=date
按日期对邮件进行排序。
set charset=”utf-8”
终端支持的那一种编码的显示。
set send_charset=”us-ascii:utf-8”
设置发送邮件的编码,先是ASCII,如果不行的话会选择UTF-8。
set editor=”vi”
指定编辑器是vi,当然了,也可以是其它你喜欢的。
set sendmail=”/usr/local/bin/msmtp -a gmail”
设置发送邮件的进程是msmtp,-a选项指定账户,就是.msmtprc中account后面指定的内容,默认的是default。
如果你的mutt编译时带了pop功能,你可以加上下面几行:
set pop_last=yes
set pop_user=YOUR_MAILBOX
set pop_pass=”YOUR_PASSWORD”
set pop_host=”pops://pop.gmail.com”
OK!mutt的配置搞定了,现在你可以用mutt发一封邮件试试。进入mutt以后按_m键,或者干脆直接在mutt选项中指定:
mutt -s “This is subject.” [email protected] > contents.txt
好了,mutt的介绍就到此为止了。更多的mutt介绍请参考[2]。试试mutt,是不是很酷呢?
参考资料:
[1] http://corsairdoom.blogspot.com/2006/10/mutt.html
[2] http://www.ucolick.org/~lharden/learnmutt.html
[3] http://learn.tsinghua.edu.cn:8080/2001315450/mutt_frame.html