Mutt email 程序简介

从Windows到Linux,Email收发程序用了不少,如Foxmail,Thunbird,Kmail等,但都是大同小义,也没有什么特色,可以它们有很多功能,但没有机会去用,或者说没有提起让我去努力发掘它们丰富功能的兴趣。前几天在Linux下试用各种Email客户端程序时发现了mutt这个软件,刚开始一用发现是命令行模式的,还要自己写配置文件。一开始觉得很复杂,但就是喜欢自己制定性强的软件,于是上网找了找资料,总算把它给配出来的。

你也许听说过这句话?这不是危言耸听,我还没有遇到一个令我满意的 email 程序,直到我遇到 mutt。它不是图形界面的,但是它非常强大和方便。我曾经把它忽略,但是后来我发现其它 email 程序都有某种我不喜欢的怪毛病。最后我选择了 Mutt。

有人说 Gnus 才是最好的 email 客户端,可是 Gnus 要达到 Mutt 这种效果和方便程度,你需要付出太多代价。所以我宁愿使用 Mutt 调用 Emacs 来编辑 email 而不愿把 Gnus 配置来处理 email.

Mutt 的特点

mutt 具有以下特点:

  • 超强的信件分类功能你可以设置几乎任意的条件来从一堆信件里找到你所需要的那封。比如,你可以说:“只显示一个月之类,不是清华大学发来的,内容包含‘光盘’两个字的信件”,“把从 fvwm 邮件列表一个星期以前发来的,而且还没有看过的信件全部移到叫 old-fvwm 的信箱”……
  • 信件打分排序功能你可以给你的信件打分,比如我说:
    • 主题包含 "Circulation Notices" 的 +3 分。否则小心被图书馆罚款 :P
    • 从我爸爸发来的信件 +2 分。听爸爸话……
    • 主题包含"通知"两个字 +2 分。随时听取党中央号召 :)
    • 主题包含"believe me", "believe.*dream", "win.*free" 字样的, -1 分。这些一般都是广告。
    • 新的信件 +4 分。新的应该最先看。
    • 新的而上次忘了读的信件(old), +1 分。可能太忙了上次忘了看的信,这次应该先看。

    信件最后的得分就是它的这些分数相加的结果。这样处理之后,你最想看的信件肯定就在最上面了。

  • 几乎任意条件的彩色设置你看我的 Mutt 可以变成这个样子。当然这太花了,我不会设置这么多颜色的 :) mutt-color
  • 可以随意绑定热键这 个功能类似 Emacs。你可以把几乎任意的功能绑定到键盘。你可以让 Mutt 的行为变成你喜欢的编辑器。比如我习惯了 VIM 的控制方式,我就把 "gg" 绑定到 "first-entry", 把 "G" 绑定到 "last-entry", 把 "Ctrl-F" 绑定到 next-page, 把 "Ctrl-B" 绑定到 previous-page.
  • 设置条件挂钩你 可以对满足不同条件的信件,信箱采取不同的设置。比如,对于用来收邮件的那些信箱,显示邮件时只显示 from, date, subject, x-mailer 这几个邮件头,而对 sent-mail 信箱还显示 to 这个邮件头;发给我家人,朋友的信件都存到一个特别的信箱中保存。
  • 批量邮件处理你可以把一些邮件作上标记(tag),然后对它们进行同意操作,比如删除,存到其它文件,删除附件,……
  • 任选编辑器用 一个强大的编辑器来编辑你的 email 你才能高效的完成编辑。一般 email 客户端都是用的自己内嵌的编辑器,这些编辑器一般功能很弱。mutt 并没有试图自己写一个编辑器,因为它明显不可能超过 VIM 和 Emacs, 所以 mutt 可以让你自己选择你喜欢的编辑器,它会去调用它,并且设置很多方便编辑 email 的参数。编辑器编辑完毕后 mutt 会从编辑器得到编辑好的文本,然后你可以加附件什么的。我现在在 mutt 里使用 Emacs 编辑器。
  • 高级的 MIME 支持Mutt 不像一般的 email 程序那样直接支持打开某些种类的附件。因为附件的种类实在太多,一个 email 客户端没有可能自己实现所有的功能。所以 Mutt 提供了 .mailcap 的设置。你可以启用你最喜欢的程序来打开某种特定类型的附件。比如,我可以让 lynx 帮我把含有 HTML 附件的信件都转成文本在 Mutt 里显示,我让 ImageMagick 的 display 程序帮我显示图片……
  • 支持PGP加密Mutt 可以利用 GnuPG 这样的程序来对信件进行 PGP 加密和数字签名。别人可以用你的公用密钥给你发一封只有你才能看到的信件。你也可以用你的私有密钥给信件“签名”,收到信的人可以用你公布的公钥验证这封信确实是你发出来的。
  • Mutt是免费的

找了不少资料,发现这篇文章介绍得不错,想看全文的可以去这里找。

最后再发一下我的.muttrc配置文件,供大家参考:

set editor="vim" #设置默认编辑器
#建立信箱
set mbox="~/Mail/inbox"
set mbox_type=maildir
set spoolfile="~/Mail/inbox"
set postponed="~/Mail/postponed"
set record="~/Mail/sent"

#关于msmtp的设置
#set sendmail="/usr/bin/msmtp"
#set use_from=yes
#set from=usr@gmail.com
#set envelope_from=yes

#set alternates=" user@gmail.com"
# 这是一个格式字符串,用来控制你的index的列表显示。它的缺省定义是
# set index_format="%4C %Z %{%b %d} %-15.15L (%4l) %s"
#指定你有哪 些信箱文件。当你按 "c" 切换信箱时,再按 Tab 键,这些信箱就可供你选择
mailboxes Mailbox sent-mail
# 这是一个 bool 型变量。它表明你在回信时引用原文是否加入原文的邮件头。
set header=no
# 可以设置为 yes, no, ask-yes, 或者 ask-no.
# 这是说,当你按q退出时,是否提示你(ask-yes,ask-no),
# 还是直接就退出了(yes),还是根本不理你(no)。
set quit=ask-yes
# 那些类型的附件是允许直接通过 .mailcap 浏览的?
auto_view text/html
# 这也是一个提示性变量。它是确定当你退出时,是否提示你把信件
#从spool 移动到的mbox 文件。
set move=no
# 当 Mutt 用 thread 方式显示时,是否用纯 ascii 表示树状列表。
set ascii_chars=yes
# 回信时是否包含原文。
set include
# 回信的引文之前插入那个符号?
set indent_str="> "
# 设置你自己的邮件头。
my_hdr From: user@gmail.com
# 打分
# 新信件+4分,主题包含"通知"的+2,主题包含 "Circulation" +3, 已经标记
# 删除的 -5,上次没有读的 +1,包含 "believe"的 -10(垃圾广告!)。
score "~N" +4
score "~s 通知" +2
score "~s Circulation" +3
score "~D" -5
score "~O" +1
score "~s believe" -10
# 排序方式。
set sort=score
# 当用 thread 排序方式时,我们对各个 thread 的相对排序顺序。
set sort_aux=date
# 如果翻到最后,再按往下翻也不会翻到下一封信件
set pager_stop
# 如果设置,当你按 "r"
# 回信时,就不会再提示你输入回信地址和主题,直接进入编辑
#模式。
set fast_reply
# 当你按 "t" 或者 "D" 之类的标记操作时,是否自动把光标移动到下一封信件。
set resolve=yes
# 地址簿
source ~/.mutt.alias
# 当你在 index 里按 "a"
# 为来信者取别名时,使用哪一个别名文件保存这个别名。
set alias_file=~/.mutt.alias
# 你发出的邮件保存到那个信箱文件?比如可以像我这样每个月发出的信件放在不同的文件
#里。
set record="~/Mail/sent/=sent-mail-`date +%Y-%m`"
# 你的终端支持哪一种编码的显示?这个必须和你的终端编码一样。
#注意这个如果设置不正确的话会导致在写邮件时出现一个"bad IDN"的错误信息
set charset="utf-8"
# send_charset
set send_charset="gb2312:utf-8:us-ascii:iso-8859-1"
# 外部程序退出时,是否要求用户按一个键才返回。这在察看某些shell命令输出时是比要>的,
# 否则它们一下就消失了。
set wait_key=yes
# 当你要把信件存到另一个信箱,而这个信箱已经存在时,是否提示附加?
set noconfirmappend
# 是否把邮件头也放在编辑器里可以修改?
set edit_headers=no
# 当你在用 pager 看信件时,在 index 留出多少行显示邮件列表?
set pager_index_lines=4
# 告诉 Mutt 你已经订阅了那些邮件列表(mailing-list).
# subscribe fvwm@fvwm.org

# mutt显示日期为中文
set locale="zh_CN"
# 有些没有设置字符编码时
#charset-hook .* gb2312
# Chinaren 等服务器发出来的信件使用了 quoted-printable 的 subject,
# 而且设置编码为 "iso8859-1",这显然是错误的。
# 对付这个错误的办法是把 iso-8859-1 变成 gb2312 的别名
charset-hook ^iso-8859-1$ gb2312
# evolution 发过来的 subject 为 utf-8 编码的邮件标题乱码!
# 那就把不是 utf-8 的编码都映射到 gb2312
charset-hook !utf-8 gb2312
# mutt进行pop3收信,当然之前要查看$ mutt -v 编辑情况的确编辑了pop3了。
# 以后进入mutt按G就可以收信了。
set pop_user=user@gmail.com
set pop_pass="****"
set pop_host=pops://pop.gmail.com
set pop_last=yes

#颜色设置
color normal brightblue default
color attachment blue default
color error red white
color status white blue
color hdrdefault magenta default
color indicator black cyan

Rand Posts:


当前日志信息