mutt 应用
mutt 官方网站: http://www.mutt.org/
===========================================================================
from: http://www.kreny.com/docs/mutt.htm
Mutt email 程序使用入门 作者:王垠
"All mail clients suck. This one just sucks less." -me, circa 1995
你也许听说过这句话?这不是危言耸听,我还没有遇到一个令我满意的 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 可以变成这个样子。当然这太花了,我不会设置这么多颜色的 :)
- 可以随意绑定热键
这 个功能类似 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是免费的
听了上面那么多好处之后,还有比这更好的消息吗?
Mutt 到哪里去找?
Mutt 的主页在 http://www.mutt.org/。上面有所有源程序和说明文档。
Mutt 跟其它 email 程序有什么重大区别吗?
Mutt 显然是一个 Unix 的邮件程序,它跟一般的 Windows 邮件程序不同,它不是一个包罗万象的大杂烩。你甚至会发现它根本不直接发出邮件,它从来不自己编辑邮件,它从来不自己对邮件进行加密和数字签名……
Mutt 更像一个文件管理器,只不过它管理的是email。它的功能是借助各个最强大的程序来实现的。这符合 UNIX 的设计思想。
- 当 Mutt 需要编辑邮件时,它有可能调用 Emacs, vi, VIM, pico, ……等编辑器。
- 当 Mutt 需要发信时,它把需要发出的信件放到 sendmail 的队列里,就什么都不管了。
- 当需要数字签名时,Mutt 会把信件交给 GnuPG 之类的程序处理一下,然后再发出去。
- 怎么收邮件呢?Mutt 不会自己到 POP 服务器去取邮件,你需要一个 fetchmail 程序,帮你把 email 从 POP 服务器取回来,转发到自己的 sendmail 的邮箱里。这样看起来就是你的主机成为了一个完整的 UNIX 网络工作站。
是不是觉得挺麻烦?其实有些 patch 可以使 Mutt 不依赖于这些程序,而自己处理收发工作。但是,强烈建议你使用这些外部程序!到时候你就知道这些东西的好处了。首先,VIM, sendmail, fetchmail 这些程序都是经过千锤百炼的质量信得过的程序,用它们编辑,发送,收取邮件你绝对放心。其次,你得到了一个 UNIX 网络工作站的功能:
- sendmail 不但可以帮 Mutt 发出邮件,也可以帮其它 Unix 程序比如 tin 发送邮件。如果你需要一个邮件服务器帮你中转,那么你只需要设置一次就可以使所有的用户的所有这样的程序都自动可以发送邮件,不用每个程序都去设置帐号了。
- fetchmail 收到邮件之后会转发给本地的 sendmail. sendmail 如果允许 .forward, 你就可以在自己的目录里编辑一个 .forward 文件,信件可以自动被转发到其它地方或者经过一个过滤器过滤。你可以自己用perl等语言来写一个过滤器,它可以根据信件内容实现很多功能,比如自动回复 等等。比如我就写了一个简单的过滤器,它可以记录所有发件人的地址,如果我把 helloooo 机器人连接到过滤器,恐怕你们就会收到可爱的 helloooo 的回信了 :)
Mutt 使用指南
Mutt 的用法类似 VIM。你的每一个键都是一个命令,你可以在配置文件~/.muttrc设置很多选项来改变 Mutt 的行为。我没有太多时间写一个入门的介绍。你可以自己看看 Mutt Manual。我下面只解决一些中国人用 Mutt 常常遇到的问题。
基本配置
你一开始看到 Mutt 说明书上说的配置方法可能不知所措。现在我把你开始用的时候需要的一些必要的配置说一下。
- alternates
这个变量应该设置为一个正则表达式,它是你有可能收到信件的地址。比如我的很简单,只有一个地址:
set alternates="wang-y01@mails.tsinghua.edu.cn"
这个变量有助于 Mutt 显示邮件的地址特征。一般 Mutt 会在index中显示几种不同的邮件地址特征,它们是由 $to_chars 变量指定的。
- to_chars
一般 $to_chars 的定义为 " +TCFL".
- " "(空): 表示这封邮件不是给你的,也就是说 To: 和 Cc: Bcc: 都没有你的地址,很多转发的邮件,未确认的邮件列表邮件,垃圾邮件都有这个特征。
- +: 表示你是收件人(To: 是你的地址之一),而且是唯一的收件人。
- T: 表示你是收件人(To: 包括了你的地址之一),但是你不是唯一的收件人。这是一封群体信件。
- C: 表示你的地址出现在 CC:,但是你不是唯一的被抄送的人。
- F: 表示这封邮件是你发出去的。
- L: 表示这是一封你已经加入的邮件列表寄来的。
你看看下面这幅图,就是mutt 有可能出现的一种列表,你看到地址特征没有?实际上地址特征出现在列表中的位置是可以改变的。待会儿在 $index_format 里你会看到的。
- index_format
这是一个格式字符串,用来控制你的index的列表显示。它的缺省定义是:
set index_format="%4C %Z %{%b %d} %-15.15L (%4l) %s"显示出来就是这个样子:
这 里有一个简单的对应关系,%4C表示4位数的序号,%Z是邮件状态,你看到那个 "r" 了吗?也就是说我已经回了这封信。%Z 还包含那个 "T", 也就是说这封信不只是寄给我一个人的,我爸爸每次寄信都会CC他自己一份 :) %{%b %d} 是日期格式,它是由 strftime() 函数的格式定义的。这里 %b 就是根据当前的 locale 设置的月份简称,“12月”。%d 就是十进制表示的每月的日号,“31”。后面的……你自己看看manual吧,我不罗嗦了。
- mailboxes
指定你有那些信箱文件。当你按 "c" 切换信箱时,再按 Tab 键,这些信箱就可供你选择。
mailboxes Mailbox sent-mail
- header
这是一个 bool 型变量。它表明你在回信时引用原文是否加入原文的邮件头。
set header=no
- quit
可以设置为 yes, no, ask-yes, 或者 ask-no. 这是说,当你按q退出时,是否提示你(ask-yes,ask-no),还是直接就退出了(yes),还是根本不理你(no)。
set quit=ask-yes
- auto_view
那些类型的附件是允许直接通过 .mailcap 浏览的?
auto_view text/html
- move
这也是一个提示性变量。它是确定当你退出时,是否提示你把信件从 spool 移动到的 mbox 文件。
set move=no
- ascii_chars
当 Mutt 用 thread 方式显示时,是否用纯 ascii 表示树状列表。
set ascii_chars=yes
如果设置了就是这个样子:
- include
回信时是否包含原文。
set include
- indent_str
回信的引文之前插入那个符号?
set indent_str="> "
- my_hdr
设置你自己的邮件头。比如我想让信件看上去是从 wang-y01@mails.tsinghua.edu.cn 发出的,而不是从 wy@wangyin.com 发出的。因为 wangyin.com 是我自己设置的主机名,不是注册的合法域名。我想让别人看到我的信是从我的清华信箱发出的,让他们直接回信到我的清华信箱,就这么干:
my_hdr From: wang-y01@mails.tsinghua.edu.cn
- 打分
新信件+4分,爸爸(w2r007)发来的 +2,主题包含“通知”的+2,主题包含 “Circulation” +3, 已经标记删除的 -5,上次没有读的 +1,包含 “believe”的 -10(垃圾广告!)。
score "~N" +4
score "~f w2r007" +2
score "~s 通知" +2
score "~s Circulation" +3
score "~D" -5
score "~O" +1
score "~s believe" -10 - sort
排序方式。可以是
date
几种方式,每种方式可以在前面加一个 "reverse-" 前缀表示反方向排序。我一般按分数排序:
date-sent
date-received
from
mailbox-order (unsorted)
score
size
subject
threads
toset sort=score
- sort_aux
当用 thread 排序方式时,我们对各个 thread 的相对排序顺序。
set sort_aux=date
- pager_stop
如果设置,那么你在pager(就是你看信的内容的窗口里)翻页时,如果翻到最后,再按往下翻也不会翻到下一封信件。如果不设置就会自动翻到下一封信。
set pager_stop
- fast_reply
如果设置,当你按 "r" 回信时,就不会再提示你输入回信地址和主题,直接进入编辑模式。
set fast_reply
- resolve
当你按 "t" 或者 "D" 之类的标记操作时,是否自动把光标移动到下一封信件。
set resolve=yes
- alias_file
当你在 index 里按 "a" 为来信者取别名时,使用哪一个别名文件保存这个别名。
set alias_file=/home/wy/.mutt.alias
- record
你发出的邮件保存到那个信箱文件?比如可以像我这样每个月发出的信件放在不同的文件里。
set record="~/Mail/=sent-mail-`date +%Y-%m`"
- charset
你的终端支持哪一种编码的显示?这个必须和你的终端编码一样。
set charset="gb2312"
- send_charset
发信时可以使用的字符集。只有当前面的字符集不能正确表示信件内容时才 会使用后面的。比如,如果你像下面这样设置,你的信件如果全是英文,那么信件就会被设置为 us-ascii 编码,如果出现了法语字符,那么就会用 iso-8859-1,如果出现了汉字就会用 gb2312,如果以上都不是,那么就用 utf-8。
set send_charset="us-ascii:iso-8859-1:gb2312:utf-8"
- wait_key
当外部程序退出时,是否要求用户按一个键才返回。这在察看某些shell命令输出时是比要的,否则它们一下就消失了。
set wait_key=yes
- confirmappend
当你要把信件存到另一个信箱,而这个信箱已经存在时,是否提示附加?
set noconfirmappend
- edit_headers
是否把邮件头也放在编辑器里可以修改?
set edit_headers=no
- pager_index_lines
当你在用 pager 看信件时,在 index 留出多少行显示邮件列表?
set pager_index_lines=4
比如我留下4行显示列表,其它的用来显示正文:
- subscribe
告诉 Mutt 你已经订阅了那些邮件列表(mailing-list). 这有助于 Mutt 判断那些信件是邮件列表转过来的,避免你错误的回复到别人的私人信箱。也避免别人回复到你的私人信箱。
subscribe fvwm@fvwm.org
之后,收到的 To: 是 fvwm@fvwm.org 的信件看起来是这样:
地址前面那个 "L" 表示这是一个邮件列表转过来的。你看到以后就不要按 "r" 回信,这样会回到别人的私人信箱去。按 "L",就可以回复到邮件列表地址,这里就是 fvwm@fvwm.org。
Mutt中文FAQ
以下是一些常见问题和解决方法。很多是我遇到的一些不能直接连接国外网络,没有自己的域名和邮件服务器的人遇到的问题。
- 怎样才能让我发出的信件使用我的POP邮箱的地址,而不是 root@myhost.com 这样的地址?
用 my_hdr 把你的 From: 设置为你想要的地址就行了。比如我是这样设置的:
my_hdr From: wang-y01@mails.tsinghua.edu.cn
注意 From: 的冒号之后有空格!
- 怎样让 Mutt 显示日期等为中文?
set locale="zh_CN"
- 发出的信件为什么设置了错误的 charset?别人的程序不能正确显示我的中文信件!
把 gb2312 编码加到你的 send_charset. 就像这样最好:
set send_charset="us-ascii:iso-8859-1:gb2312:utf-8"
- 收到一些中文信件全部显示为 "???"
这是因为某些 email 客户端,比如清华大学 mails.tsinghua.edu.cn 的WWW界面客户端 没有设置字符编码,你看看邮件头(按h),是不是有个
Content-Type: text/plain
但是后面没有说 charset="GB2312"? Mutt 遇到这种没有设置 charset 的邮件就会使用 "us-ascii",所以如果你想让这种信件可以正确显示,就把 "us-ascii" 设置为 "gb2312" 的别名:
charset-hook ^us-ascii$ gb2312
注意 "us-ascii" 中间的连字号!
- 可是仍然有邮件标题乱码呢!
看看你的 $spool 里那个乱码的信件是不是有类似如下内容:
Subject: =?iso8859-1?B?U29oddCj09HCvDq587Dg09DQwrPJ1LG808jro6E=?=
Chinaren 等服务器发出来的信件使用了 quoted-printable 的 subject,而且设置编码为 "iso8859-1",这显然是错误的。
对付这个错误的办法是把 iso-8859-1 变成 gb2312 的别名:
charset-hook ^iso-8859-1$ gb2312
注意 "iso-8859-1" 中间的连字号!
如果仍然有信件乱码。干脆用
charset-hook .* gb2312
把所有信件都用 gb2312 显示。
- 可是这样设置之后 evolution 发过来的 subject 为 utf-8 编码的邮件标题乱码!
那就把不是 utf-8 的编码都映射到 gb2312:
charset-hook !utf-8 gb2312
- 怎样配置 fetchmail?
fetchmail 的配置非常简单。如果只是一个人用的话,可以这样设置:比如,我在我的 $HOME 目录编辑了一个 .fetchmailrc:
set daemon 60
poll mails.tsinghua.edu.cn
protocol POP3
user "wang-y01"
password "wang-y01的密码"
poll smth.org
....
....然后把 fetchmail 写到我的shell启动脚本里:
! ps aux | grep -q fetchmail && fetchmail &
fetchmail 启动后成为一个 daemon, 每分种帮我检查所有邮箱里的邮件,收回来,并且转发到本地信箱。修改上面那个 "60" 就可以改变检查时间间隔。
如果不想让 fetchmail 删除服务器上的文件,而且每次只取新的信。就在配置文件里加上:
keep
uidl - 我不想用 fetchmail,能不能直接收回 POP 信件啊?
如果你的 Mutt 编译时加入了 POP 功能,那么你可以直接从 POP 服务器收邮件而不用借助于 fetchmail. 把类似这些行加入 ~/.muttrc
set pop_user=wang-y01
set pop_pass="wang-y01的密码"
set pop_host="pop://mails.tsinghua.edu.cn"也可以一次性输入所有内容:
set pop_host="pop://wang-y01:wang-y01的密码@smth.org"
在 Mutt 里按一下 "G" 就可以取邮件了。
- 怎样处理多个 POP3 信箱?
如果你有多个POP信箱,你可以设置一些方便的宏把POP信件收到你信箱里。举个例子,就像我这样:
macro index ,shredder ":set pop_host=\
\"pop://shredder:shredder的密码@smth.org\"\r\
<fetch-mail>"
macro index ,sk8er ":set pop_host=\
\"pop://sk8er:sk8er的密码@smth.org\"\r\
<fetch-mail>"
macro index ,ts ":set pop_host=\
\"pop://wang-y01:wang-y01的密码@mails.tsinghua.edu.cn\"\r\
<fetch-mail>"
macro index ,g ",shredder,sk8er,ts"这样,我只要按 ,shredder 就可以收我在 smth 上 shredder 的信件,只要按 ,sk8er 就可以收我在 smth 上 sk8er 的信件,只要按 ,ts 就可以收 mails.tsinghua.edu.cn 的信件,只要按 ,g 就可以收取我所有 POP 信箱的信件了。
- 怎样直接访问 POP3 信箱?
除了上面的方法,你还可以直接访问 POP3 信箱。比如,我可以直接按 "c" 切换到信箱 pop://sk8er:sk8er的密码@smth.org
就可以浏览 pop 的信件了。切换到其它信箱就浏览不同的 pop。如果你嫌按键太多可以自己定义一个宏。这是同步操作,你如果在这个信箱里删除一封信件,mutt 就会删除你 pop3 服务器上的信件。你不删它也不删。
邮件太多时这样效率很低,每次都要取所有邮件头,就像 Foxmail 的“远程邮件管理”。所以最好在那种不想取回信件,而想直接删除垃圾邮件的时候用这个办法。
- 怎样处理邮件列表?
参看subscribe命令。
- 我按 "d" 的时候邮件被直接标记删除了,怎样才能把删掉的信件都移到一个“垃圾箱”呢?
你 只要把信件用 save-message 函数保存到你的垃圾箱,比如 ~/Mail/Trash,信件会被自动做上 "D"(删除) 标志。为了让 "d" 可以保存到垃圾箱,你可以把 "d" 键绑定到一个 宏。但是如果你要删除垃圾箱里的邮件,这个宏会再次把垃圾箱的邮件存储到垃圾箱,产生循环。所以你应该使用 folder-hook 在垃圾箱里把 "d" 恢复到原来的 delete-message 函数,而在其它信箱使用那个宏。
现在你可以用以下设置得到一个“垃圾箱”的功能。第一次按 "d" 时有可能会被讯问是否建立这个信箱(Trash).
folder-hook . 'macro index d "~/Mail/Trash\r"'
folder-hook ~/Mail/Trash 'bind index d delete-message' - 当收到的邮件的 header 有很多项目时,我的 pager 里全都是邮件头。怎样才能只看到某些我想看的邮件头呢?
你可以用 ignore 忽略你不想看到的邮件头,如果 ignore *,你就可以忽略所有邮件头。用 unignore 可以恢复显示被忽略的邮件头。所以一个简单的办法就是先把所有邮件头忽略,然后放出你想看的那几个。
看下面的设置。我的 sent.*(发件箱) 里只显示 To: Subject: Date: 三项。而在其它信箱就显示 From: Subject: X-Mailer: Date: 这几项。
folder-hook . "ignore *; unignore from subject X-mailer date"
folder-hook sent.* "ignore *; unignore to subject date"你还可以指定邮件头显示的顺序:
hdr_order from to subject date
- Mutt 怎么使用地址簿呢?
你可以用 alias 来实现一个地址簿。alias 命令的形式是这样的,举个例子:
alias wy Wang Yin <wang-y01@mails.tsinghua.edu.cn>
alias 是命令,wy 是别名,Wang Yin <wang-y01@mails.tsinghua.edu.cn> 是一个标准的 email 地址。这样,如果你在 index 里按 "m",在 To: 的提示下输入 "wy",就可以发信给 Wang Yin <wang-y01@mails.tsinghua.edu.cn> 。
在 To: 的提示下按 Tab 就可以显示联系人列表,然后你可以移动光标选择联系人。
如果你有很多 alias 要写,最好把它们写到另外一个文件,比如叫 .mutt.alias. 然后在 .muttrc 里加上:
source ~/.mutt.alias
你还可以设置一个变量:
set alias_file=~/.mutt.alias
这样你在 index 里按 "a",就可以把来信人加入到这个 alias 文件了。
- Mutt 如何处理 HTML 附件?
Mutt 可以处理任何类型的附件。因为它可以调用合适的程序来处理它们。为了直接在 mutt 的窗口里显示 HTML,你只需要在 ~/.mailcap 文件加入:
text/html; lynx --dump %s; nametemplate=%s.html; copiousoutput
在 ~/.muttrc 加入:auto_view text/html
- Mutt 如何处理 Word doc 附件。
清华大学总是喜欢发送含有 doc 附件的通知。真是让人ft。现在有一个完美的解决方案了:使用 wvware 把 doc 转成 HTML 嵌入mutt里。
wvware 可以在 http://www.wvware.com/免费得到。
wvHtml --charset=gb2312 your.doc your.html
就可以把doc转成 HTML。经测试,能够正确处理汉字和图片。你可以让mutt调用 wvHtml 在自己的窗口里直接显示转换的 doc 文档。只需要在 ~/.mailcap 文件加入:
application/msword; wvHtml --charset=gb2312 %s - | lynx --dump -stdin;
在 ~/.muttrc 加入:
nametemplate=%s.html; copiousoutput
text/html; lynx --dump %s; nametemplate=%s.html; copiousoutputauto_view text/html application/msword
这样你的 mutt 看一个 doc 的时候就像这个样子:
- 我想在 Mutt 里使用 Emacs 怎么办?
Emacs 是一个非常强大的编辑器,所以你肯定会希望能在 Mutt 里使用 Emacs。你可以选择两种方式:
- 一种方式是直接在 Mutt 的终端里使用非图形界面的 Emacs (emacs -nw)。
你只需要在 .muttrc 设置:
set editor="emacs -nw"
这样会启动一个新的 Emacs。如果你的 Emacs 配置加入了大量扩展,这个启动时间是相当长的,你不希望每回一封email就等上10秒等Emacs启动吧?有 一个办法可以跳过冗长的 Emacs 扩展。只需要把你的 .emacs 里耗时的部分放在一个条件语句里。比如,我就把 desktop 和 session 放在了一个条件语句里启动。如果知道编辑的文件名叫做 "/tmp/mutt-..." 那我们就知道是 mutt 在调用 Emacs,所以我就不加载 desktop 和 session 这种费时间又没用的东西。
(unless
(catch 'found
(dolist (arg command-line-args)
(if (string-match "^/tmp/mutt-" arg)
(throw 'found t))))
;; load desktop
(load "desktop")
(desktop-load-default)
(desktop-read)
;; load session
(require 'session)
(add-hook 'after-init-hook 'session-initialize)
(setq desktop-globals-to-save '(desktop-missing-file-warning))
;; start server
(server-start)
) - 一种方式是使用 emacsclient 发送到 GUI 的 Emacs 服务器编辑。
这种方式可以使用一个已经启动的 Emacs,启动非常快速。但是我不是很喜欢这种方式,因为我不想离开 Mutt 的终端到 Emacs 的窗口,编辑完了还要切换窗口。看这幅图。
先来看看 Emacs 的设置,启动 Emacs 后,你可以使用 server-start 启动 Emacs 服务器。你也可以把
(server-start)
加入到你的 .emacs 文件,这样 Emacs 启动时自动就启动了服务器。在 .muttrc 里加入
set editor=emacsclient
这样 Mutt 在要发送邮件时,就把需要编辑的东西送到已经启动的 Emacs 里。编辑完了之后你按 C-x #,控制会转回到 Mutt.
- 一种方式是直接在 Mutt 的终端里使用非图形界面的 Emacs (emacs -nw)。
- 我不能直接连国外,sendmail必需通过 mails.tsinghua.edu.cn 转发,但是 sendmail 不能通过 ESMTP 验证怎么办?
由 于清华大学网络中心的限制,一般同学不能直接连接国外的服务器。这样 sendmail 就不能直接将邮件发送到目的地。我们需要依赖国内的 邮件服务器来转发到目的地。但是现在国内的smtp邮件服务器通常需要 SMTP 验证才能帮你转发邮件。比如 mails.tsinghua.edu.cn, 这是一种防止别人利用自己主机发送垃圾邮件的办法。
sendmail 怎样才能通过 SMTP 身份验证呢?sendmail 的网页上说有办法。可是我搞了一天还是没有搞定。而且 sendmail 是以安全漏洞著称的。所以我决定换用 Postfix。qmail 也很好,但是我不知道怎么让 qmail 通过 AUTH SMTP 转发, 如果有人知道请告诉我。
postfix 是一个可以取代 sendmail 的邮件服务器。它在普通机器上可以达到 sendmail 3 倍的吞吐率。而且相当安全。它可以在 www.postfix.org 下载安装过程如下:
- 编译的时候你需要让 postfix 支持 SASL 验证,使用以下选项编译:
% make makefiles CCARGS="-DUSE_SASL_AUTH -I/usr/local/include" \
然后安装
AUXLIBS="-L/usr/local/lib -lsasl"% make; make install
- 为了 postfix 能够正确发送本地邮件,请在 /etc/postfix/main.cf 加上:
myhostname = tu140066.tsinghua.edu.cn
mydestination = wangyin.com, $myhostname, localhost.$mydomain$myhostname 指明了你的主机域名,清华大学的网络给了每个人一个域名,其实就是 tuxxxxxx.tsinghua.edu.cn, xxxxxx 就是你的 IP 后面的数字,比如我的IP是166.111.140.66, 所以我的域名是 tu140066.tsinghua.edu.cn.
$mydestination 指出哪些地址是认为是你自己的地址。你应该把你的机器名(我的是 wangyin.com),$myhostname, $localhost.$mydomain 加进去。
- 为了能够使用 SASL 验证登录,把这些行加到 /etc/postfix/main.cf
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options =
relayhost = mails.tsinghua.edu.cn - 编辑口令文件 /etc/postfix/sasl_passwd。加入一行:
Your.Relay.Server your_auth_login_name:Your_PassWord
比如我的口令文件是这样的:
mails.tsinghua.edu.cn wang-y01:aDF2m@3d$q=+
当然密码不是那个 :P
- 把口令文件转成 Berkeley DB 格式:
#postmap hash:sasl_passwd
- 启动你的 postfix 服务器
postfix start
- 编译的时候你需要让 postfix 支持 SASL 验证,使用以下选项编译:
===========================================================================
from: http://www.5dmail.net/html/2006-10-30/2006103084554.htm
Mutt 电子邮件快速入门指南
简单三步解决企业垃圾邮件难题
1. 电子邮件简介
如果您不是具有精致图形界面的电子邮件客户端的爱好者,或者您想体验一下其它的邮件客户端以便决定哪个最适合您,那么以下便是开始使用这些强大命令行工具的一条捷径:
fetchmail->procmail->mutt->smtp
这些程序不仅仅功能强大并且高度可定制,而且体积小并且有效率。一旦您准备好并开始使用这套电子邮件系统时,您将会为您能利用它所做的事情而感到吃惊。
因为这是一个入门指南,我们略去了邮件传输代理(MTA),例如 sendmail、postfix 或 exim。这意味着没有复杂的 MTA 配置。本文同样略去了使用端口 25 的邮件服务。
我们可以这么做是因为 fetchmail 可以强制邮件直接由邮件投递代理(MDA)取回而不转发到 25 端口。并且我们不需要使用一个复杂的 MTA 来完成普通的外出邮件投递。
为使您的电子邮件工作,以下是您将会用到的程序。
|
代码 1.1 |
# emerge fetchmail procmail mutt nbsmtp |
然后只需快捷的四步来配置一下文件,您就将准备妥当并开始运行一个全新的电子邮件系统了。
|
重要:每步完成后您可以测试一下以确认设置正确。这样当您完成时将会得到一个完全可用的电子邮件系统。 |
2. Fetchmail
Fetchmail 从远程服务器获取邮件并转送到您的本地投递系统。使用时您需要在您的主目录下创建 .fecthmailrc 文件,示例如下:
|
代码 2.1: 示例 .fetchmailrc |
poll mail.myisp.net protocol pop3 user "myname" password "mypasswd" |
当您创建 .fetchmailrc 文件后,您必须使用 chmod 命令改变该文件的访问权限。该文件必须只对文件所有者是可读的。可使用如下命令设置该权限:
|
代码 2.2 |
# chmod 710 .fetchmailrc |
监视其行动可使用详细模式(-v)。获取全部邮件可使用 -a 参数。您必须使用 -m 参数才能让 fetchmail 将邮件传送到 procmail。
|
警告:测试时,建议使用保留(-k)远程服务器上的邮件,万一出错时您还需要重新收取。 |
现在就来运行 fetchmai 并观看它的表演吧!
|
代码 2.3: Fetchmail 测试 #1 |
# fetchmail -akv -m "/usr/bin/procmail -d %T" |
当您已经拥有一个可用的邮件系统时,您可以将它设置成 cron 的任务或者将其放到类似 gkrellm 的监视器中。Fetchmail 也可以以后台模式运行,按照您指定的时间间隔(以秒为单位)收取邮件。
3. Procmail
Procmail 用于过滤由 fetchmail 转送来的邮件。它也作为 MDA 将邮件投递到您的邮箱中以便 mutt(您的邮件客户端)读取。
使用 procmail 时,您需要在您的主目录中创建 .procmailrc 文件。基于快速入门的目的,我们使用一个十分简单的 .procmailrc 文件,它将过滤来自三个 gentoo 邮件列表的邮件到以下邮箱:gentoo-dev、gentoo-user 和 gentoo-announce
|
注释:Procmail 过滤邮件的规则称为处方(recipe),我也加入了一些处方用于过滤掉一些垃圾邮件(spam)。 |
|
代码 3.1: 示例 .procmailrc |
MAILDIR=$HOME/MuttMail ##您最好确认该目录存在 |
|
注释:只需要创建目录 MAILDIR $HOME/MuttMail。Procmail 会在此目录中根据执行行中所描述的名称创建需要的邮箱文件。若需要一些有用的链接,请访问 http://www.procmail.org/ |
现在您可以重新运行我们在第一步中已经测试过的 fecthmail 命令来测试 .procmailrc 。记住使用 -k 选项来保留远程服务器上的邮件以便我们再次运行时邮件仍在。
|
代码 3.2: Procmail 测试 #1 |
# fetchmail -akv -m "/usr/bin/procmail -d %T" |
现在 fetchmail 和 procmail 都已经执行,可以到 $HOME/MuttMail 使用 less 或者您的文件管理器来读取您的消息。
4. Mutt 电子邮件客户端
Mutt 用于读取及撰写电子邮件。它不仅仅功能强大并且高度可定制,而且体积小并且有效率。
Mutt 支持读取及写入四种邮箱类型:mbox、MMDF、MH 和 Maildir。邮箱类型是自动检测的。这里我们使用 mbox 类型,将一个邮箱中所有的消息都储存到一个文件中。
Mutt 也可以工作于远程 IMAP 服务器上的文件夹。见 Mutt 使用手册 4.11 节和 Mutt 网站 http://www.mutt.org/ 中关于 IMAP 的支持。
当您在第一步中安装完 Mutt 时,它将创建配置文件 /etc/mutt/Muttrc。您还需要在您的主目录下创建文件 .muttrc。
|
代码 4.1: 示例 .muttrc |
// 一定要读在 /usr/share/doc/mutt* 下的精致的 Mutt 使用手册// 这里的任何设置将覆盖 /etc/mutt/Muttrc 中的系统设置 |
对于本例,这只是一个示例的 .muttrc。您还可以设置更多的选项,例如 gpg 设置。到 http://mutt.netliberte.org/ 看一看更多的示例及帮助吧。
现在您可以测试您的 .muttrc 了。
|
代码 4.2: 测试 .muttrc |
# mutt -y |
这将开启 Mutt 并显示您在测试 2 中运行 fetchmail 命令时创建的 Mutt 邮箱菜单。
按 ? 键取得关于浏览 Mutt 邮箱的帮助。
5. SMTP
最后的一步是设置 nbsmtp,“No-Brainer SMTP” 用于将邮件发送到您的 SMTP 服务器。这步是所有设置中最简单的,它只需要在您的 .muttrc 文件中添加一条。
domain:您想让 nbsmtp 告知其所属的域名。它一般就是您电子邮件地址中的域名。
from@addr:您想让 nbsmtp 使用的发件人地址。注意这可以与您 MUA 中“From:”行的设置不同。
host:您使用的 smtp 服务器。
|
代码 5.1: 添加 smtp 支持 |
# nano -w .muttrc |
现在您可以发送一封邮件了。在 Mutt 的页或索引中使用 m 键撰写一封测试邮件并发送到您的电子邮件地址。如果您在 .muttrc 中设置了 editor= Mutt 会使用指定的 EDITOR 或 VISUAL 做为邮件编辑器。当您写完时,使用 y 键发出您的邮件。如果没有错误,您将会先看到“sending mail”然后是“New mail in =sent”。
记住在 .muttrc 中我们曾使用 set record="$HOME/MuttMail/sent" 设置发出邮件的储存地址。
现在即将完成测试,再次运行 fecthmail 收取您所有的邮件并验证您已经收到您往自己电子邮件地址所发的邮件。当您找到您的测试邮件时,使用 h 键切换邮件头显示并查看完整的邮件传送路径。
|
注释:您可能还需要一个叫 urlview 的软件。它将邮件文本中的网址提取出并传递到您的浏览器中。 |
|
代码 5.2 |
# emerge urlview |
然后创建文件 ~/.urlview ,您可以拷贝 /usr/share/doc/urlview*/ 中的配置文件再设置您的浏览器命令。
现在您已经拥有一个功能强大并且高度可定制的邮件系统。接下来要读一下所有的使用手册和文档,并在网上利用 “google” procmailrc 和 muttrc 查找更多的用户设置文件。
===========================================================================
from: http://www.eygle.com/archives/2005/03/oulinuxieaeoamu.html
Mutt是个功能强大的email 程序,引用一段别人的话:
"你也许听说过这句话?这不是危言耸听,我还没有遇到一个令我满意的 email 程序,直到我遇到 mutt。它不是图形界面的,但是它非常强大和方便。我曾经把它忽略,但是后来我发现其它 email 程序都有某种我不喜欢的怪毛病。最后我选择了 Mutt。"
我在这里只想介绍一下怎样使用Mutt在Linux/Unix下发送邮件:
以下是命令示范:
[root@jumper root]# mutt -s "this is a test mail" eygle@itpub.net -a a.c < /etc/hosts
其中:
s---主题
a---附件
最后追加的是邮件内容
这样就可以发送了。
如果想要了解更多关于Mutt的内容,可以访问http://www.mutt.org
或者这里有中文的介绍:
http://learn.tsinghua.edu.cn/homepage/2001315450/mutt_frame.html
===========================================================================
from: http://www.techupdate.com.cn/techupdate/2006/0217/228798.shtml
|
本文中将带领你去了解Mutt那些不太为人所知的功能。
如果你是一名Mutt用户,你已经知道你所使用的是最快、最酷也最个性化的电子邮件客户端软件了。然而你可能不知道的是在Mutt中,有很多强大的功能 ,这些功能能够帮助你更有效地使用你的电子邮件。更棒的是,它们甚至一点也不难使用。
本文中将带领你去了解Mutt那些不太为人所知的功能。下面讨论的功能针对的是Mutt v1.2.4,你可以从Mutt.org免费获得它。
1、使用线程查看功能
如果你订阅了邮件列表,你一定会喜欢Mutt的线程(threading)功能。Mutt能够自动地根据标题对信息进行分类,能够把同样标题的邮件按照顺序组织在
一起。你就可以用鼠标在其中进行选择了,这一功能能够帮助你快速地浏览对于某一特定邮件的所有回复。如果要使用该功能,你可以按照下面的方式
,对邮件进行分类:
set sort=threads
提示:在线程模式下,还有很多附加功能可以使用:你可以删除该线程下所有的电子邮件,拆散或者扩展一个线程,把一个线程内的邮件标记为未读或 者已读,在线程内跳转到开始或者结束。参看Mutt手册以了解这些功能及快捷键。
2、使用绰号和组别名
Mutt允许你使用别名命令为常用地址创建地址薄。使用这一命令,你可以定义短的“绰号”,Mutt会自动地、在邮件发送之前,把该绰号扩展成一个或多个电
子邮件地址。下面是一个示例:
aliasjoe joe.gobby@example.com
你还可以创建组别名,只要把多个电子邮件地址用逗号连接起来。下面是一个示例:
aliasfridayclubjoe.gobby@example.com,layla@domain.net,
ex@ample.info
3、新邮件到达通知
Mutt允许你定义某些邮箱是“active”(活跃的)——也就是说,这些邮箱很有可能会收到新邮件。当这些“活跃的”邮箱收到一封新邮件之后,Mutt会弹出一个
提示框,通知你新邮件的到达。如果要使用该功能,你可以按照下面的方式,指定需要监视的邮箱:
mailboxes "=inbox"
mailboxes "=lists/php"
4、为电子邮件做标签
Mutt中提供了“标签”功能,为邮件做好标签之后,就可以仅用一条命令将有该标签的所有邮件复制或者删除。为了使用这一功能,你可以对每封电子邮件
使用t命令。Mutt会在作好标签的电子邮件旁边显示出一个星号,这个符号表示该邮件已经有标签了。作好标签之后,使用;c或者;d快捷键就可以对所有带
有标签的电子邮件同时进行复制或者删除。
5、自定义信息标题
Mutt允许你为电子邮件增加自己的个性化标题。这很有用,尤其是如果你想在发出的电子邮件中宣传你的公司名称或者你的PGP加密的时候。使用my_hdr
命令,并在后面增加个性化标题,下面是示例:
my_hdr Company: CNET TechRepublic
my_hdr X-URL: http://www.techrepublic.com/
6、在远程POP3服务器上阅读邮件
如果你使用的Mutt版本支持POP3协议,你就可以直接通过Mutt访问远程POP3服务器。你可以输入c,打开一个新的邮箱,然后填写该邮箱名
pop://user@mailhost/。Mutt将尝试去连接远程POP3服务器,并询问POP3密码,连接成功之后,将会显示该邮箱中的内容。你可以按照平时操作本地邮件
的方式读取或删除邮件。
7、搜索和过滤信息
在Mutt中你可以通过常规公式或模板对邮件内容进行搜索。你既可以搜索邮件标题也可以搜索邮件内容或者指定的查询请求,Mutt甚至可以自动地为满足
搜索条件的邮件做好标签。如果需要使用这一功能,你可以使用T命令,并在后面加上相关的搜索。例如,T ~B tech命令会搜索所有包含“tech”的电子邮件
,并为它们做上标签。
你可以还可以根据邮件大小或者日期进行搜索。例如,T ~r 25/3/2005命令就是搜索所有在2005年3月25日收到的邮件,并为它们做上标签。
在邮件或邮件索引中,你可以使用/命令来寻找下一封符合模板的邮件。例如,/ mon命令搜索下一封邮件标题(正文)中包含mon(单词片段)的邮件。
8、为你的邮件增加色彩
Mutt提供了为邮件着色的功能,这一功能让你能够更容易地通过视觉直观地区分邮件,例如,回复或者是对早期某一邮件的文本引用。也可以很容易发现
或者用高亮显示邮件正文或者标题中的常用表达,并用不同颜色显示——例如,电子邮件地址用黄色表示,URL地址用绿色。如果要使用这一功能,可以
用color命令设置适当的参数,下面是示例:
color hdrdefault white black # headers white on black
color header brightgreen black ^From: # sender's name in green
color quoted cyan black # quoted text in blue
color signature red black # signature in red
9、浏览内置的URLs
我们可以让Mutt在遇到电子邮件中的超级链接的时候,自动激活Lynx(或者其他任何网络浏览器)。如果需要使用这一功能,你可以从Mutt网站上下载并
安装一个名为urlview的附加程序,然后创建一个宏,就可以在邮件浏览窗口中使用它了,下面是一个示例:
macro pager cu |urlview
现在,当你阅读一封包含URL地址的邮件时,你可以按
10、获得帮助
在使用Mutt过程中,你在任何时候都可以使用?命令获得详细的命令列表,以及相应的快捷键。这很方便,尤其在你忘记每个键代表什么命令的时候。
===========================================================================
from: http://www.wuwx.cn/archives/131
Linux下使用Mutt发送带附件的邮件
因为我并不在Mutt下阅读邮件,仅仅是想借助Mutt来发送带附件的邮件而已,所以Mutt使用起来是相当简单方便的,不需要做额外的配置,基本上就是一条命令:
mutt -a 附件名 -s 主题名 收件人
例如:mutt -a hello.mp3 -s "这是一首好听的歌曲" root@wuwx.cn,之后mutt就会调用你的系统中的文本编辑器来编辑邮件正文,之后按照提示就可以发送了。
可能你想用crontab定期执行的方式将一个文件以备份的形式发送到你的邮箱,由于没有人工干涉,所以再弹出文本编辑器来编辑正文再发送就不可行了,就需要把邮件正文也构造好交给mutt,让他全自动发送:
echo "邮件正文" | mutt -a 附件名 -s 主题名 收件人
例如:echo "歌词内容" | mutt -a hello.mp3 -s "这是一首好听的歌曲" root@wuwx.cn,这样,系统就不会再让你输入邮件正文,而直接将邮件发送出去了。
那假如发送不带附件的邮件怎么办呢?直接不使用-a参数就好了:),不过那跟mail命令似乎就没啥区别了,直接使用mutt命令,打开这个邮件客户端工具,然后使用他来阅读、管理邮件功能也是相当强大的,大家有机会可以实验下。
===========================================================================
from: http://docs.huihoo.com/redhat/rhl-gsg-zh_CN-9/s1-eclients-textmail.html
7.3. 简单文本电子邮件客户
多数现代的电子邮件客户允许用户选择他们是想用纯文本(plain text)还是用 HTML 来发送邮件。HTML 格式化的电子邮件的优越性在于,它们可以包含图形和到网站的互动链接;你可以指定字体,控制布局,或添加图片和背景;这些功能使消息更具有视觉魅力。
另一方面,纯文本邮件只是 — 纯粹的文本。它们不花哨,在邮件中没有嵌入图画,也没有特殊字体。纯文本文件非常简单。
纯文本这个术语是指 ASCII 格式的文本数据。纯文本(又称明文,clear text)是最可移植的格式,因为各类机器上几乎每个电子邮件应用程序都支持它。
本章将会讨论 mutt 纯文本电子邮件客户。
7.3.1. 使用 mutt
mutt 是一个用于 Unix 操作系统的小巧玲珑却又功能强大的基于文本的邮件客户。
~/.muttrc 是 mutt 的配置文件。它既为 mutt 提供了灵活性和可配置性,又为新用户带来了无限烦恼。mutt 中可用的选项多得惊人,它还允许用户控制几乎所有它用来收发和阅读邮件的功能。正如所有功能强大的软件一样,你需要花一段时间来理解它的功能和它对你的用途。
多数选项是通过 set 或 unset 命令,使用逻辑或字串值来启用的,如:set folder = ~/Mail。
所有的配置选项随时都能被改变,方法是:键入“
如果你想不起来要使用的命令,你可以随时使用 tab 命令自动补全这个功能来帮助你。
你不必在每次运行 mutt 时都键入你偏爱的配置命令,你可以把它们保存到一个文件中。该文件在每次程序启动时都会被载入,它必须存在于你的主目录中,必须叫做 ~/.muttrc 或 ~/.mutt/muttrc。
当你启动 mutt 后,你首先看到的是一个带有电子邮件消息的列表。这个初始菜单叫做索引。
这些消息在默认的邮件文件夹中,通常称为邮件池(mailspool),你可以把它看做是你的收件箱。使用键盘上的
在索引或分页器视图里,使用
邮件编辑完毕后,mutt 会显示编辑菜单,你在这里可以定制你的消息头、改变编码、添加文件附件,或者只按
要学习更多有关 mutt 的知识,请参考 muttrc 和 mutt 的说明书页(在 shell 提示下键入 man muttrc 或 man mutt)。你会发现 mutt 的说明书也很有用。mutt 的说明书安装在 /usr/share/doc/mutt-1.2.x中,这里的 x 是在你的系统上安装的 mutt 的版本号码。
===========================================================================
from: http://www.adamjiang.com/blog/archives/33
通过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从这里和这里下载这两个文件,保存到上面touch的位置。
$ cd $HOME/mail/certs
$ touch Thawte_Premium_Server_CA.pem
$ touch Equifax_Secure_CA.pem
$ 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提醒一下,把datou替换成你自己的Linux用户名。
export MAIL=/var/spool/mail/datou
按照下面的例子,为procmail写一个配置文件。
PATH=/bin:/usr/bin:/usr/local/bin注意,你不是datou!
VERBOSE=off
DEFAULT=/var/spool/mail/datou
MAILDIR=$HOME/mail
LOGFILE=$HOME/.procmaillog
# Recipes below this comment:
:0:
* ^TOmutt-user
mutt
发送邮件:
$ touch $HOME/.msmtprc仿照下面的例子,配置msmtp。
account default注意datou捣乱。
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
为这个文件配置正确的读写权限:
$ 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 MotorolaMutt的色彩配置事实上是下面的模式,所以,你可以根据自己的需要hightlight你的邮件。
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
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的文档可以得到更多的帮助。下面是一些简单的命令:
===========================================================================
from: http://blog.csdn.net/moxiaolong/archive/2005/01/16/255415.aspx
Mutt email 程序使用入门
"All mail clients suck. This one just sucks less." -me, circa 1995
你也许听说过这句话?这不是危言耸听,我还没有遇到一个令我满意的 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 可以变成这个样子。当然这太花了,我不会设置这么多颜色的
可以随意绑定热键
这 个功能类似 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是免费的
听了上面那么多好处之后,还有比这更好的消息吗?
Mutt 到哪里去找?
Mutt 的主页在 http://www.mutt.org/。上面有所有源程序和说明文档。
Mutt 跟其它 email 程序有什么重大区别吗?
Mutt 显然是一个 Unix 的邮件程序,它跟一般的 Windows 邮件程序不同,它不是一个包罗万象的大杂烩。你甚至会发现它根本不直接发出邮件,它从来不自己编辑邮件,它从来不自己对邮件进行加密和数字签名……
Mutt 更像一个文件管理器,只不过它管理的是email。它的功能是借助各个最强大的程序来实现的。这符合 UNIX 的设计思想。
当 Mutt 需要编辑邮件时,它有可能调用 Emacs, vi, VIM, pico, ……等编辑器。
当 Mutt 需要发信时,它把需要发出的信件放到 sendmail 的队列里,就什么都不管了。
当需要数字签名时,Mutt 会把信件交给 GnuPG 之类的程序处理一下,然后再发出去。
怎 么收邮件呢?Mutt 不会自己到 POP 服务器去取邮件,你需要一个 fetchmail 程序,帮你把 email 从 POP 服务器取回来,转发到自己的 sendmail 的邮箱里。这样看起来就是你的主机成为了一个完整的 UNIX 网络工作站。是不是觉得挺麻烦?其实有些 patch 可以使 Mutt 不依赖于这些程序,而自己处理收发工作。但是,强烈建议你使用这些外部程序!到时候你就知道这些东西的好处了。首先,VIM, sendmail, fetchmail 这些程序都是经过千锤百炼的质量信得过的程序,用它们编辑,发送,收取邮件你绝对放心。其次,你得到了一个 UNIX 网络工作站的功能:
sendmail 不但可以帮 Mutt 发出邮件,也可以帮其它 Unix 程序比如 tin 发送邮件。如果你需要一个邮件服务器帮你中转,那么你只需要设置一次就可以使所有的用户的所有这样的程序都自动可以发送邮件,不用每个程序都去设置帐号了。
fetchmail 收到邮件之后会转发给本地的 sendmail. sendmail 如果允许 .forward, 你就可以在自己的目录里编辑一个 .forward 文件,信件可以自动被转发到其它地方或者经过一个过滤器过滤。你可以自己用perl等语言来写一个过滤器,它可以根据信件内容实现很多功能,比如自动回复 等等。比如我就写了一个简单的过滤器,它可以记录所有发件人的地址,如果我把 helloooo 机器人连接到过滤器,恐怕你们就会收到可爱的 helloooo 的回信了
Mutt 使用指南
Mutt 的用法类似 VIM。你的每一个键都是一个命令,你可以在配置文件~/.muttrc设置很多选项来改变 Mutt 的行为。我没有太多时间写一个入门的介绍。你可以自己看看 Mutt Manual。我下面只解决一些中国人用 Mutt 常常遇到的问题。
基本配置
你一开始看到 Mutt 说明书上说的配置方法可能不知所措。现在我把你开始用的时候需要的一些必要的配置说一下。
alternates
这个变量应该设置为一个正则表达式,它是你有可能收到信件的地址。比如我的很简单,只有一个地址:
set alternates="wang-y01@mails.tsinghua.edu.cn"
这个变量有助于 Mutt 显示邮件的地址特征。一般 Mutt 会在index中显示几种不同的邮件地址特征,它们是由 $to_chars 变量指定的。
to_chars
一般 $to_chars 的定义为 " +TCFL".
" "(空): 表示这封邮件不是给你的,也就是说 To: 和 Cc: Bcc: 都没有你的地址,很多转发的邮件,未确认的邮件列表邮件,垃圾邮件都有这个特征。
+: 表示你是收件人(To: 是你的地址之一),而且是唯一的收件人。
T: 表示你是收件人(To: 包括了你的地址之一),但是你不是唯一的收件人。这是一封群体信件。
C: 表示你的地址出现在 CC:,但是你不是唯一的被抄送的人。
F: 表示这封邮件是你发出去的。
L: 表示这是一封你已经加入的邮件列表寄来的。
你看看下面这幅图,就是mutt 有可能出现的一种列表,你看到地址特征没有?实际上地址特征出现在列表中的位置是可以改变的。待会儿在 $index_format 里你会看到的。
index_format
这是一个格式字符串,用来控制你的index的列表显示。它的缺省定义是:
set index_format="%4C %Z %{%b %d} %-15.15L (%4l) %s"
显示出来就是这个样子:
这里有一个简单的对应关系,%4C表示4位数的序号,%Z是邮件状态,你看到那个 "r" 了吗?也就是说我已经回了这封信。%Z 还包含那个 "T", 也就是说这封信不只是寄给我一个人的,我爸爸每次寄信都会CC他自己一份
%{%b %d} 是日期格式,它是由 strftime() 函数的格式定义的。这里 %b 就是根据当前的 locale 设置的月份简称,“12月”。%d 就是十进制表示的每月的日号,“31”。后面的……你自己看看manual吧,我不罗嗦了。 mailboxes
指定你有那些信箱文件。当你按 "c" 切换信箱时,再按 Tab 键,这些信箱就可供你选择。
mailboxes Mailbox sent-mail
header
这是一个 bool 型变量。它表明你在回信时引用原文是否加入原文的邮件头。
set header=no
quit
可以设置为 yes, no, ask-yes, 或者 ask-no. 这是说,当你按q退出时,是否提示你(ask-yes,ask-no),还是直接就退出了(yes),还是根本不理你(no)。
set quit=ask-yes
auto_view
那些类型的附件是允许直接通过 .mailcap 浏览的?
auto_view text/html
move
这也是一个提示性变量。它是确定当你退出时,是否提示你把信件从 spool 移动到的 mbox 文件。
set move=no
ascii_chars
当 Mutt 用 thread 方式显示时,是否用纯 ascii 表示树状列表。
set ascii_chars=yes
如果设置了就是这个样子:
include
回信时是否包含原文。
set include
indent_str
回信的引文之前插入那个符号?
set indent_str="> "
my_hdr
设置你自己的邮件头。比如我想让信件看上去是从 wang-y01@mails.tsinghua.edu.cn 发出的,而不是从 wy@wangyin.com 发出的。因为 wangyin.com 是我自己设置的主机名,不是注册的合法域名。我想让别人看到我的信是从我的清华信箱发出的,让他们直接回信到我的清华信箱,就这么干:
my_hdr From: wang-y01@mails.tsinghua.edu.cn
打分
新信件+4分,爸爸(w2r007)发来的 +2,主题包含“通知”的+2,主题包含 “Circulation” +3, 已经标记删除的 -5,上次没有读的 +1,包含 “believe”的 -10(垃圾广告!)。
score "~N" +4
score "~f w2r007" +2
score "~s 通知" +2
score "~s Circulation" +3
score "~D" -5
score "~O" +1
score "~s believe" -10
sort
排序方式。可以是
date
date-sent
date-received
from
mailbox-order (unsorted)
score
size
subject
threads
to
几种方式,每种方式可以在前面加一个 "reverse-" 前缀表示反方向排序。我一般按分数排序:
set sort=score
sort_aux
当用 thread 排序方式时,我们对各个 thread 的相对排序顺序。
set sort_aux=date
pager_stop
如果设置,那么你在pager(就是你看信的内容的窗口里)翻页时,如果翻到最后,再按往下翻也不会翻到下一封信件。如果不设置就会自动翻到下一封信。
set pager_stop
fast_reply
如果设置,当你按 "r" 回信时,就不会再提示你输入回信地址和主题,直接进入编辑模式。
set fast_reply
resolve
当你按 "t" 或者 "D" 之类的标记操作时,是否自动把光标移动到下一封信件。
set resolve=yes
alias_file
当你在 index 里按 "a" 为来信者取别名时,使用哪一个别名文件保存这个别名。
set alias_file=/home/wy/.mutt.alias
record
你发出的邮件保存到那个信箱文件?比如可以像我这样每个月发出的信件放在不同的文件里。
set record="~/Mail/=sent-mail-`date +%Y-%m`"
charset
你的终端支持哪一种编码的显示?这个必须和你的终端编码一样。
set charset="gb2312"
send_charset
发 信时可以使用的字符集。只有当前面的字符集不能正确表示信件内容时才会使用后面的。比如,如果你像下面这样设置,你的信件如果全是英文,那么信件就会被设 置为 us-ascii 编码,如果出现了法语字符,那么就会用 iso-8859-1,如果出现了汉字就会用 gb2312,如果以上都不是,那么就用 utf-8。
set send_charset="us-ascii:iso-8859-1:gb2312:utf-8"
wait_key
当外部程序退出时,是否要求用户按一个键才返回。这在察看某些shell命令输出时是比要的,否则它们一下就消失了。
set wait_key=yes
confirmappend
当你要把信件存到另一个信箱,而这个信箱已经存在时,是否提示附加?
set noconfirmappend
edit_headers
是否把邮件头也放在编辑器里可以修改?
set edit_headers=no
pager_index_lines
当你在用 pager 看信件时,在 index 留出多少行显示邮件列表?
set pager_index_lines=4
比如我留下4行显示列表,其它的用来显示正文:
subscribe
告诉 Mutt 你已经订阅了那些邮件列表(mailing-list). 这有助于 Mutt 判断那些信件是邮件列表转过来的,避免你错误的回复到别人的私人信箱。也避免别人回复到你的私人信箱。
subscribe fvwm@fvwm.org
之后,收到的 To: 是 fvwm@fvwm.org 的信件看起来是这样:
地址前面那个 "L" 表示这是一个邮件列表转过来的。你看到以后就不要按 "r" 回信,这样会回到别人的私人信箱去。按 "L",就可以回复到邮件列表地址,这里就是 fvwm@fvwm.org。
Mutt中文FAQ
以下是一些常见问题和解决方法。很多是我遇到的一些不能直接连接国外网络,没有自己的域名和邮件服务器的人遇到的问题。
怎样才能让我发出的信件使用我的POP邮箱的地址,而不是 root@myhost.com 这样的地址?
用 my_hdr 把你的 From: 设置为你想要的地址就行了。比如我是这样设置的:
my_hdr From: wang-y01@mails.tsinghua.edu.cn
注意 From: 的冒号之后有空格!
怎样让 Mutt 显示日期等为中文?
set locale="zh_CN"
发出的信件为什么设置了错误的 charset?别人的程序不能正确显示我的中文信件!
把 gb2312 编码加到你的 send_charset. 就像这样最好:
set send_charset="us-ascii:iso-8859-1:gb2312:utf-8"
收到一些中文信件全部显示为 "???"
这是因为某些 email 客户端,比如清华大学 mails.tsinghua.edu.cn 的WWW界面客户端 没有设置字符编码,你看看邮件头(按h),是不是有个
Content-Type: text/plain
但是后面没有说 charset="GB2312"? Mutt 遇到这种没有设置 charset 的邮件就会使用 "us-ascii",所以如果你想让这种信件可以正确显示,就把 "us-ascii" 设置为 "gb2312" 的别名:
charset-hook ^us-ascii$ gb2312
注意 "us-ascii" 中间的连字号!
可是仍然有邮件标题乱码呢!
看看你的 $spool 里那个乱码的信件是不是有类似如下内容:
Subject: =?iso8859-1?B?U29oddCj09HCvDq587Dg09DQwrPJ1LG808jro6E=?=
Chinaren 等服务器发出来的信件使用了 quoted-printable 的 subject,而且设置编码为 "iso8859-1",这显然是错误的。
对付这个错误的办法是把 iso-8859-1 变成 gb2312 的别名:
charset-hook ^iso-8859-1$ gb2312
注意 "iso-8859-1" 中间的连字号!
如果仍然有信件乱码。干脆用
charset-hook .* gb2312
把所有信件都用 gb2312 显示。
可是这样设置之后 evolution 发过来的 subject 为 utf-8 编码的邮件标题乱码!
那就把不是 utf-8 的编码都映射到 gb2312:
charset-hook !utf-8 gb2312
怎样配置 fetchmail?
fetchmail 的配置非常简单。如果只是一个人用的话,可以这样设置:比如,我在我的 $HOME 目录编辑了一个 .fetchmailrc:
set daemon 60
poll mails.tsinghua.edu.cn
protocol POP3
user "wang-y01"
password "wang-y01的密码"
poll smth.org
....
....
然后把 fetchmail 写到我的shell启动脚本里:
! ps aux | grep -q fetchmail && fetchmail &
fetchmail 启动后成为一个 daemon, 每分种帮我检查所有邮箱里的邮件,收回来,并且转发到本地信箱。修改上面那个 "60" 就可以改变检查时间间隔。
如果不想让 fetchmail 删除服务器上的文件,而且每次只取新的信。就在配置文件里加上:
keep
uidl
我不想用 fetchmail,能不能直接收回 POP 信件啊?
如果你的 Mutt 编译时加入了 POP 功能,那么你可以直接从 POP 服务器收邮件而不用借助于 fetchmail. 把类似这些行加入 ~/.muttrc
set pop_user=wang-y01
set pop_pass="wang-y01的密码"
set pop_host="pop://mails.tsinghua.edu.cn"
也可以一次性输入所有内容:
set pop_host="pop://wang-y01:wang-y01的密码@smth.org"
在 Mutt 里按一下 "G" 就可以取邮件了。
怎样处理多个 POP3 信箱?
如果你有多个POP信箱,你可以设置一些方便的宏把POP信件收到你信箱里。举个例子,就像我这样:
macro index ,shredder ":set pop_host=\
\"pop://shredder:shredder的密码@smth.org\"\r\
<fetch-mail>"
macro index ,sk8er ":set pop_host=\
\"pop://sk8er:sk8er的密码@smth.org\"\r\
<fetch-mail>"
macro index ,ts ":set pop_host=\
\"pop://wang-y01:wang-y01的密码@mails.tsinghua.edu.cn\"\r\
<fetch-mail>"
macro index ,g ",shredder,sk8er,ts"
这 样,我只要按 ,shredder 就可以收我在 smth 上 shredder 的信件,只要按 ,sk8er 就可以收我在 smth 上 sk8er 的信件,只要按 ,ts 就可以收 mails.tsinghua.edu.cn 的信件,只要按 ,g 就可以收取我所有 POP 信箱的信件了。
怎样直接访问 POP3 信箱?
除了上面的方法,你还可以直接访问 POP3 信箱。比如,我可以直接按 "c" 切换到信箱 pop://sk8er:sk8er的密码@smth.org
就可以浏览 pop 的信件了。切换到其它信箱就浏览不同的 pop。如果你嫌按键太多可以自己定义一个宏。这是同步操作,你如果在这个信箱里删除一封信件,mutt 就会删除你 pop3 服务器上的信件。你不删它也不删。
邮件太多时这样效率很低,每次都要取所有邮件头,就像 Foxmail 的“远程邮件管理”。所以最好在那种不想取回信件,而想直接删除垃圾邮件的时候用这个办法。
怎样处理邮件列表?
参看subscribe命令。
我按 "d" 的时候邮件被直接标记删除了,怎样才能把删掉的信件都移到一个“垃圾箱”呢?
你 只要把信件用 save-message 函数保存到你的垃圾箱,比如 ~/Mail/Trash,信件会被自动做上 "D"(删除) 标志。为了让 "d" 可以保存到垃圾箱,你可以把 "d" 键绑定到一个宏。但是如果你要删除垃圾箱里的邮件,这个宏会再次把垃圾箱的邮件存储到垃圾箱,产生循环。所以你应该使用 folder-hook 在垃圾箱里把 "d" 恢复到原来的 delete-message 函数,而在其它信箱使用那个宏。
现在你可以用以下设置得到一个“垃圾箱”的功能。第一次按 "d" 时有可能会被讯问是否建立这个信箱(Trash).
folder-hook . 'macro index d "~/Mail/Trash\r"'
folder-hook ~/Mail/Trash 'bind index d delete-message'
当收到的邮件的 header 有很多项目时,我的 pager 里全都是邮件头。怎样才能只看到某些我想看的邮件头呢?
你可以用 ignore 忽略你不想看到的邮件头,如果 ignore *,你就可以忽略所有邮件头。用 unignore 可以恢复显示被忽略的邮件头。所以一个简单的办法就是先把所有邮件头忽略,然后放出你想看的那几个。
看下面的设置。我的 sent.*(发件箱) 里只显示 To: Subject: Date: 三项。而在其它信箱就显示 From: Subject: X-Mailer: Date: 这几项。
folder-hook . "ignore *; unignore from subject X-mailer date"
folder-hook sent.* "ignore *; unignore to subject date"
你还可以指定邮件头显示的顺序:
hdr_order from to subject date
Mutt 怎么使用地址簿呢?
你可以用 alias 来实现一个地址簿。alias 命令的形式是这样的,举个例子:
alias wy Wang Yin <wang-y01@mails.tsinghua.edu.cn>
alias 是命令,wy 是别名,Wang Yin <wang-y01@mails.tsinghua.edu.cn> 是一个标准的 email 地址。这样,如果你在 index 里按 "m",在 To: 的提示下输入 "wy",就可以发信给 Wang Yin <wang-y01@mails.tsinghua.edu.cn> 。
在 To: 的提示下按 Tab 就可以显示联系人列表,然后你可以移动光标选择联系人。
如果你有很多 alias 要写,最好把它们写到另外一个文件,比如叫 .mutt.alias. 然后在 .muttrc 里加上:
source ~/.mutt.alias
你还可以设置一个变量:
set alias_file=~/.mutt.alias
这样你在 index 里按 "a",就可以把来信人加入到这个 alias 文件了。
Mutt 如何处理 HTML 附件?
Mutt 可以处理任何类型的附件。因为它可以调用合适的程序来处理它们。为了直接在 mutt 的窗口里显示 HTML,你只需要在 ~/.mailcap 文件加入:
text/html; lynx --dump %s; nametemplate=%s.html; copiousoutput
在 ~/.muttrc 加入:
auto_view text/html
Mutt 如何处理 Word doc 附件。
清华大学总是喜欢发送含有 doc 附件的通知。真是让人ft。现在有一个完美的解决方案了:使用 wvware 把 doc 转成 HTML 嵌入mutt里。
wvware 可以在 http://www.wvware.com/免费得到。
wvHtml --charset=gb2312 your.doc your.html
就可以把doc转成 HTML。经测试,能够正确处理汉字和图片。
你可以让mutt调用 wvHtml 在自己的窗口里直接显示转换的 doc 文档。只需要在 ~/.mailcap 文件加入:
application/msword; wvHtml --charset=gb2312 %s - | lynx --dump -stdin;
nametemplate=%s.html; copiousoutput
text/html; lynx --dump %s; nametemplate=%s.html; copiousoutput
在 ~/.muttrc 加入:
auto_view text/html application/msword
这样你的 mutt 看一个 doc 的时候就像这个样子:
我想在 Mutt 里使用 Emacs 怎么办?
Emacs 是一个非常强大的编辑器,所以你肯定会希望能在 Mutt 里使用 Emacs。你可以选择两种方式:
一种方式是直接在 Mutt 的终端里使用非图形界面的 Emacs (emacs -nw)。
你只需要在 .muttrc 设置:
set editor="emacs -nw"
这样会启动一个新的 Emacs。如果你的 Emacs 配置加入了大量扩展,这个启动时间是相当长的,你不希望每回一封email就等上10秒等Emacs启动吧?
有 一个办法可以跳过冗长的 Emacs 扩展。只需要把你的 .emacs 里耗时的部分放在一个条件语句里。比如,我就把 desktop 和 session 放在了一个条件语句里启动。如果知道编辑的文件名叫做 "/tmp/mutt-..." 那我们就知道是 mutt 在调用 Emacs,所以我就不加载 desktop 和 session 这种费时间又没用的东西。
(unless
(catch 'found
(dolist (arg command-line-args)
(if (string-match "^/tmp/mutt-" arg)
(throw 'found t))))
;; load desktop
(load "desktop")
(desktop-load-default)
(desktop-read)
;; load session
(require 'session)
(add-hook 'after-init-hook 'session-initialize)
(setq desktop-globals-to-save '(desktop-missing-file-warning))
;; start server
(server-start)
)
一种方式是使用 emacsclient 发送到 GUI 的 Emacs 服务器编辑。
这种方式可以使用一个已经启动的 Emacs,启动非常快速。但是我不是很喜欢这种方式,因为我不想离开 Mutt 的终端到 Emacs 的窗口,编辑完了还要切换窗口。看这幅图。
先来看看 Emacs 的设置,启动 Emacs 后,你可以使用 server-start 启动 Emacs 服务器。你也可以把
(server-start)
加入到你的 .emacs 文件,这样 Emacs 启动时自动就启动了服务器。
在 .muttrc 里加入
set editor=emacsclient
这样 Mutt 在要发送邮件时,就把需要编辑的东西送到已经启动的 Emacs 里。编辑完了之后你按 C-x #,控制会转回到 Mutt.
我不能直接连国外,sendmail必需通过 mails.tsinghua.edu.cn 转发,但是 sendmail 不能通过 ESMTP 验证怎么办?
由 于清华大学网络中心的限制,一般同学不能直接连接国外的服务器。这样 sendmail 就不能直接将邮件发送到目的地。我们需要依赖国内的邮件服务器来转发到目的地。但是现在国内的smtp邮件服务器通常需要 SMTP 验证才能帮你转发邮件。比如 mails.tsinghua.edu.cn, 这是一种防止别人利用自己主机发送垃圾邮件的办法。
sendmail 怎样才能通过 SMTP 身份验证呢?sendmail 的网页上说有办法。可是我搞了一天还是没有搞定。而且 sendmail 是以安全漏洞著称的。所以我决定换用 Postfix。qmail 也很好,但是我不知道怎么让 qmail 通过 AUTH SMTP 转发, 如果有人知道请告诉我。
postfix 是一个可以取代 sendmail 的邮件服务器。它在普通机器上可以达到 sendmail 3 倍的吞吐率。而且相当安全。它可以在 www.postfix.org 下载安装过程如下:
编译的时候你需要让 postfix 支持 SASL 验证,使用以下选项编译:
% make makefiles CCARGS="-DUSE_SASL_AUTH -I/usr/local/include" \
AUXLIBS="-L/usr/local/lib -lsasl"
然后安装
% make; make install
为了 postfix 能够正确发送本地邮件,请在 /etc/postfix/main.cf 加上:
myhostname = tu140066.tsinghua.edu.cn
mydestination = wangyin.com, $myhostname, localhost.$mydomain
$myhostname 指明了你的主机域名,清华大学的网络给了每个人一个域名,其实就是 tuxxxxxx.tsinghua.edu.cn, xxxxxx 就是你的 IP 后面的数字,比如我的IP是166.111.140.66, 所以我的域名是 tu140066.tsinghua.edu.cn.
$mydestination 指出哪些地址是认为是你自己的地址。你应该把你的机器名(我的是 wangyin.com),$myhostname, $localhost.$mydomain 加进去。
为了能够使用 SASL 验证登录,把这些行加到 /etc/postfix/main.cf
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = #left empty to allow LOGIN mechanism
relayhost = mails.tsinghua.edu.cn #change this to your relay host
编辑口令文件 /etc/postfix/sasl_passwd。加入一行:
Your.Relay.Server your_auth_login_name:Your_PassWord
比如我的口令文件是这样的:
mails.tsinghua.edu.cn wang-y01:aDF2m@3d$q=+
当然密码不是那个 :P
把口令文件转成 Berkeley DB 格式:
#postmap hash:sasl_passwd
启动你的 postfix 服务器
postfix start
===========================================================================
===========================================================================
===========================================================================
===========================================================================
===========================================================================
===========================================================================
===========================================================================
===========================================================================
===========================================================================
===========================================================================
===========================================================================
===========================================================================
===========================================================================
===========================================================================
===========================================================================
===========================================================================
===========================================================================
===========================================================================
===========================================================================
===========================================================================
===========================================================================
===========================================================================
===========================================================================
===========================================================================
===========================================================================
===========================================================================
===========================================================================
===========================================================================
===========================================================================
===========================================================================
===========================================================================
===========================================================================
===========================================================================
===========================================================================
===========================================================================
===========================================================================



