Add New Notes

This commit is contained in:
geekard
2012-08-08 14:26:04 +08:00
commit 5ef7c20052
2374 changed files with 276187 additions and 0 deletions

View File

@@ -0,0 +1,75 @@
Content-Type: text/x-zim-wiki
Wiki-Format: zim 0.4
Creation-Date: 2011-12-29T13:12:18+08:00
====== Gmail的IMAP和Mutt ======
Created Thursday 29 December 2011
http://www.adamjiang.com/archives/891
Posted by jcadam - 27/08/10 at 12:08 下午
今天我想说的还是Mutt的问题。一年以前我写了通过mutt使用gmail。现在再回头看这篇文章的内容已经有些老旧了只好在感慨时光如梭的同时附上更新。电子邮件对我来说越来越重相应的Mutt这个邮件客户端也是如此。就像Mutt的作者说的所有的邮件客户端都很烂只是Mutt烂的不那么厉害罢了。我希望这几篇文章有用。
之前的解决方法相当复杂需要mutt, procmail, fetchmail和msmtp等等工具的配合配置起来非常繁琐。使用了很久这个方法之后我发现还是**使用IMAP直接远程接入**Gmail比较简便。但是也有相应的缺点那就是使用IMAP的话你就不能在离线状态中使用mutt了。
配置Gmail的IMAP和Mutt一起工作相比用fetchmail去pop3服务器上的邮件这个方法主要更改以下几点
* 配置Gmail的IMAP
* 设置远程服务器上的文件夹
* 设置本地计算机上的缓冲
* 设置远程服务器上的smtp服务
至于,邮件别名,色彩,和快捷键绑定等等,跟之前介绍的方法并无二致。
===== 配置Gmail的IMAP =====
创建或者修改~/.muttrc
vi ~/.muttrc
添加如下几行来告诉mutt你是谁这里设置的姓名和邮件地址将出现在你的邮件的头部
set from = "yourusername@gmail.com"
set realname = "yourname"
接着告诉mutt你Gmail邮箱和密码
set imap_user = "yourusername@gmail.com"
set imap_pass = "yourpassword"
在初次启动mutt的时候mutt会询问你是否接受**认证文件**你只需要回答”Yes”就可以了。
===== 设置远程服务器上的文件夹 =====
Mutt可以**自动的识别IMAP服务器上的邮件文件夹**,所以这里其实不需要更多的动作。但是如果你想做一些自己的配置,可以采用下面的方法;
set folder = "imaps://imap.gmail.com:993"
set spoolfile = "+INBOX"
set postponed ="+[Gmail]/Drafts"
set trash = "imaps://imap.gmail.com/[Gmail]/Trash"
===== 设置本地计算机上的缓冲 =====
在本地计算机上你需要一个缓冲来__保存文件头信息__以及TLS证书等
set header_cache =~/.mutt/cache/headers
set message_cachedir =~/.mutt/cache/bodies
set certificate_file =~/.mutt/certificates
别忘了创建相应的本地文件夹
mkdir -p ~/.mutt/cache
===== 设置远程服务器上的smtp服务 =====
设置smtp服务器用来发送邮件
set smtp_url = "smtp://yourusername@smtp.gmail.com:587/"
set smtp_pass = "yourpassword"
===== 其他设置 =====
告诉Mutt不要将邮件移动的mbox里同时为了增强安全性设置连续上线时间不超过900分钟
set move = no
set imap_keepalive = 900
让mutt的配置文件成为“只读”属性。
chmod 700 .muttrc
配置结束。关于诸如色彩快捷键邮件编辑器等其他部分的配置请参考我的mutt配置文件。

6433
Zim/Utils/Mutt/Manual.txt Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,201 @@
Content-Type: text/x-zim-wiki
Wiki-Format: zim 0.4
Creation-Date: 2011-12-30T16:45:09+08:00
====== mutt的简单使用 ======
Created Friday 30 December 2011
http://hi.baidu.com/realasking/blog/item/10c1c3d346be6cd2a9ec9adc.html
本文为原创内容首发与百度linux吧和个人空间如有转载敬请注明出处与作者。
——realasking
本系列前一篇帖子简介了如何使用fdm接收邮件但是只能接收邮件是远远不够的
在本地处理邮件还需要邮件管理和发送的工具。在Linux/Unix系统下mutt是最常
用的邮件管理工具之一,功能非常强大,可以调用各种编辑器,以及邮件收、发工具,
从而构成半自动/自动的邮件客户端本文即初略介绍mutt的简单使用方法。
mutt的配置文件为.muttrc在使用mutt之前需要先建立该文件但是该文件与fdm
的配置文件不同,**没有很清晰的结构层次**,所有的变量和命令,都是只要存在,就会
生效的,不过它的配置文件也因而具有更大的灵活性,在书写的时候,需要自己考虑
需要实现的功能以及__规划文件的结构__。
mutt的配置和写脚本文件有一些不太一样的地方比如变量设定在muttrc中使用的
一部分变量如邮件头my_hdrmailboxes等__新的设置并不会替换原有设置__甚至
会累加进去而另有一些变量如以set命令开头指定的往往只**允许设置一次**,再如
mutt有一些预先定义的action即使在配置文件中没有进行指定这些action在mutt
启动之后也是有效的还有就是可以用__宏__来自定义一些操作此外mutt可以定义地
址列表和组,也支持直接保存发件人地址,而且提供了一系列的自动化的处理流程,
即hook。所以只要对需要使用mutt完成的操作有了解那么就能通过采用mutt提供
的这些功能来自由的组合和搭配,完成邮件的管理操作。
对于我自己来说,首先,我需要接收和处理多个邮箱的邮件,而且要能用这些邮箱分
别发送和回复邮件,然后,考虑到我收发的邮件主要是中文邮件,因此中英文邮件不
能有乱码,第三,我需要定义地址簿,第四,**要接收邮件列表**,第五,**要能接收rss**
第六我习惯使用vi编辑器邮件要按照主题和最后发送时间来排列。就这六条
我来说应该基本够用因此加上界面设置我一共将配置文件分为__六个部分__
a.通用设置
b.宏定义
c.邮件地址
d.邮件列表
e.电子邮件发送的定义
f.界面设置
每个部分分别存成一个文件然后用source命令包含进我的.muttrc文件中这样
我的mutt配置文件内容就只有以下内容
#通用
source ~/.mutt/mu.general
#宏
source ~/.mutt/mu.macros
#邮件地址
source ~/mail/addressbook
set alias_file=~/mail/addressbook
#邮件列表
source ~/.mutt/mlist
#界面设置
source ~/.mutt/mu.interface
#邮件发送设置
source ~/.mutt/mu.mls
其中a.通用设置包括三个部分,首先是**邮箱文件**的设置,假定有
realasking#mdbbs.org、realasking#hotmail.com和locahost三个邮箱
下文中出现的邮箱地址,均用#代替了@,真正在文件中设置时应该用@
set mbox_type=Maildir
set __folder__=$HOME/mail
set spoolfile=~/mail/INBOX
set header_cache=~/.hcache
set mbox =__+__INBOX
mailboxes "+INBOX"
mailboxes "+realasking"
mailboxes "+Hot"
mailboxes "+localhost"
只有用mailboxes添加的邮箱文件才会**被mutt监控**否则虽然可以用mutt读取邮件,
但是却无法用其**监控新邮件**。
然后是本地化的设置,包括终端使用的编码,邮件编码,以及接收邮件的编码,并且
解决编码中的乱码问题[1,2]
set charset="UTF-8" #终端编码
set send_charset="gb2312" #这里也可以设置为UTF-8
set locale="zh_CN.UTF-8"
set assumed_charset="gb2312" #对没有指明编码的邮件假设为gb2312
charset-hook ^us-ascii$ gb2312 #这两行是对不正常的编码映射到gb2312
charset-hook !UTF-8 gb2312
set rfc2047_parameters=yes
set copy=yes #这两行保存已经发送的邮件
set record=~/mail/Sent
set check_new=yes #检查新邮件
auto_view text/html #自动阅读附件中的text/html
set mime_forward_decode=yes
第三部分是邮件的管理和编辑设置:
set editor="vim" #用vim作为默认编辑器
set sort=threads #这两行是邮件排序方法
set sort_aux=reverse-last-date-sent
set pager_stop #这几行是邮件显示的方式,忘了从哪里抄过来的了
set fast_reply
set pager_index_lines=10
set index_format="| %4C | %Z | %{%b %d} | %-15.15L | %s"
set folder_format="| %2C | %t %N | %8s | %d | %f"
#以下一行用以让mutt显示回执相关的文件头因为mutt默认是不支持邮件回执的
#所以它会隐藏这些信息unignore的作用就是打开邮件头中被隐藏的相应的字段
unignore disposition-notification-to return-receipt-to x-confirm-reading-to
set header=no #回复邮件不加入原始邮件头
b.宏设置,宏设置是为了定义一连串的操作而存在的,可以用它来定义快捷键以调用
外部的程序或者mutt的相应功能我的配置文件中这块比较简单只有两句话
别按G键调用fdm接收邮件和按H键调用rss2email接收Rss
macro index H "!r2e run"
macro index G "!fdm -v fetch"
c.邮件地址簿,我定义为文件~/mail/addressbook这是一个文本文件其格式是
alias 姓名 别名 <邮件地址>
然后一条一行往下排列即可也应把权限设为600.
d.邮件列表,我定义为文件~/.mutt/mlist这也是一个文本文件格式是
subscribe 邮件列表地址
e.电子邮件发送定义,这里,我定义为文件~/.mutt/mu.mls其包括两个部分第一
部分是设置默认的发件和回邮的邮箱,第二个部分则是根据所进入的邮箱不同,自动
source不同的设置采用不同的邮箱来回复和发送邮件这一部分大量使用hook
体含义可以参考mutt的手册[3]。
其中第一部分是这样设置的:
#取消已有定义
unmy_hdr from: #from是发送邮件的地址
unmy_hdr Disposition-Notification-To: #这是回执请求的信息
unmy_hdr X-Priority: #优先级的信息
unmy_hdr reply-to: #回复到地址
send-hook . 'my_hdr from:realasking#mdbbs.org' #设置邮件头的发送邮件地址
send-hook . 'my_hdr Disposition-Notification-To:realasking#mdbbs.org' #设置邮件回执请求
send-hook . 'my_hdr X-Priority: 1' #设置邮件优先级为最高优先级设置1最高3最低
send-hook . 'set sendmail="/usr/bin/msmtp"' #这里使用msmtp发送邮件
reply-hook . 'my_hdr reply-to:realasking#mdbbs.org'#这三行,是
reply-hook . 'my_hdr Disposition-Notification-To:realasking#mdbbs.org'
reply-hook . 'my_hdr X-Priority: 1'
第二部分是这样设置的:
folder-hook =realasking source ~/.mutt/realasking
folder-hook =Hot source ~/.mutt/Hot
这里表示当用mutt进入邮箱realasking时则自动读取配置文件~/.mutt/realasking
而进入Hot时也类似因此用这种办法就可以实现在不同的邮箱用不同邮箱
地址发信下面是Hot文件中的设置
unmy_hdr from:
unmy_hdr Disposition-Notification-To:
unmy_hdr X-Priority:
unmy_hdr reply-to:
send-hook . 'my_hdr from:realasking#hot.com'
send-hook . 'my_hdr Disposition-Notification-To:realasking#hot.com'
send-hook . 'my_hdr X-Priority: 1'
send-hook . 'set sendmail="/usr/bin/msmtp -a Hot"'
reply-hook . 'my_hdr reply-to:realasking#hot.com'
reply-hook . 'my_hdr Disposition-Notification-To:realasking#hot.com'
reply-hook . 'my_hdr X-Priority: 1'
对于请求回执和优先级设置网上也有人提供了另一种方案即直接在mutt里打补
丁,而不需要向上面这样手动的写入邮件头定义,有兴趣的可以参考参考链接[4],
而要想查看邮件头里写了些什么在mutt中其实只需要按e键就可以看到。
另外,可以注意到,我这里每一封发出或者转发的邮件都要求已读提醒和高优先级,
这样做也不是太合理,其实,如果要在需要时才设置这几个部分,只需要将它们设
置为特定的宏即可,也不困难,同样的,也可实现发送邮件回执的功能。
f.也是最后一部分是mutt的界面设置用color命令即可下面是几个例子命令
可以设置的内容和具体方法最好查询手册:
color normal blue black #mutt界面的主色调黑底蓝字
color signature cyan black #签名档,黑底,青色
color header brightred black ^Disposition-Notification-To:
#请求回执高亮显示,黑底,红色
color index red blue ~N #新邮件,蓝底,红色
配置完成之后就可以用命令运行mutt了启动mutt后显示的最上面一行提示
的是常用的按键和对应的操作,最下面一行是提示的所在的邮箱文件和包括了多少
邮件,中间就是收到的邮件,可以用方向键选择,按回车阅读。要写新邮件,则按
m键此时会提示To:要求输入收件人地址可以按Tab键从地址簿里选择写完
邮件并保存后按y键可以发送邮件而按a键添加附件;要接收邮件则按G键
后回车接收之后按c键再选择邮箱以阅读邮件;如果要回复邮件,则是在阅读邮件
或者选中邮件的状态按r键;如果要带附件转发邮件,稍微麻烦一点,我们需要按
如下操作:
打开邮件->按v->按t选择要转发的附件->按分号;和f键->按Tab键选择地址->修改
->保存、发送
这就是mutt的基本使用方法但是经过这样的配置其实还不能发邮件和收rss
因为还需要配置msmtp和rss2email本系列的下一篇帖子即讲述它们的简单用法。
参考链接:
[1]http://www.kreny.com/docs/mutt.htm
[2]http://hi.baidu.com/darkblueriver/blog/item/4368f50f10f3452e6059f350.html
[3]http://www.mutt.org/#doc
[4]http://www.mail-archive.com/mutt-dev@mutt.org/msg02399.html

View File

@@ -0,0 +1,583 @@
Content-Type: text/x-zim-wiki
Wiki-Format: zim 0.4
Creation-Date: 2011-12-29T11:15:49+08:00
====== Mutt email 程序使用入门 ======
Created Thursday 29 December 2011
http://www.kreny.com/docs/mutt.htm
"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-color.png}}
* 可以随意绑定热键
这个功能类似 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/%E3%80%82%E4%B8%8A%E9%9D%A2%E6%9C%89%E6%89%80%E6%9C%89%E6%BA%90%E7%A8%8B%E5%BA%8F%E5%92%8C%E8%AF%B4%E6%98%8E%E6%96%87%E6%A1%A3。
==== 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 里你会看到的。
{{./mutt-to.png}}
index_format
这是一个格式字符串用来控制你的index的列表显示。它的缺省定义是
set index_format="%4C %Z %{%b %d} %-15.15L (%4l) %s"
显示出来就是这个样子:
{{./index-original.png}}
这里有一个简单的对应关系,%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
{{./mutt-quit.png}}
可以设置为 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
如果设置了就是这个样子:
{{./mutt-ascii.png}}
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行显示列表其它的用来显示正文
{{./mutt-indexpager.png}}
subscribe
告诉 Mutt 你已经订阅了那些邮件列表(mailing-list). 这有助于 Mutt 判断那些信件是邮件列表转过来的,避免你错误的回复到别人的私人信箱。也避免别人回复到你的私人信箱。
subscribe fvwm@fvwm.org
之后,收到的 To: 是 fvwm@fvwm.org 的信件看起来是这样:
{{./mutt-list.png}}
地址前面那个 "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/%E5%85%8D%E8%B4%B9%E5%BE%97%E5%88%B0。
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-wvware
我想在 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 =
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
Valid HTML 4.01!

Binary file not shown.

After

Width:  |  Height:  |  Size: 738 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 440 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

View File

@@ -0,0 +1,450 @@
Content-Type: text/x-zim-wiki
Wiki-Format: zim 0.4
Creation-Date: 2011-12-28T20:41:25+08:00
====== 配置mutt做邮件客服端 ======
Created Wednesday 28 December 2011
http://home.ustc.edu.cn/~lixuebai/GNU/MuttConfig.html
我用的操作系统是Debian或者Ubuntu GNU/linux
这里的组合是__mutt+msmtp+getmail+procmail__
mutt是作为客户端muamsmtp是邮件发送mtagetmail收取邮件procmail过滤邮件mda。
在Debian中默认安装的mta是**exim4**,在Ubuntu中默认安装的mta是**postfix**, 它们当然可以用但是足够用于邮件服务器了如果你是个人电脑使用就不需要用这么好的mta了况且exim4或者postfix占用系统资源很大没有必要开机自动运行。
msmtp是为mutt写的很简单轻便的. 另外还有些人用esmtp等都可以。
收取邮件从前大家都使用比较著名的fetchmail. fetchmail是收取信件但不是直接放在本地硬盘中而是需要本地mta投递所以需要procmail
看到有人建议不用fetchmail,而是用getmail, 据说fetchmail问题太多而getmail则没有那些问题你可以在aptitude中看getmail4 包的介绍,就说是为了替代fetchmail的
作者为什么要写getmail的说明在 http://pyropus.ca/software/getmail/faq.html#faq-about-why
当然可能有人喜欢exim或者postfix喜欢fetchmail,我会放在后面讲述。分别是MuttConfig:exim MuttConfig:postfix MuttConfig:fetchmailrc
现在我来说怎么配置
mutt+msmtp+getmail+procmail
首先aptitude
可以先卸载exim4或者postfix,这时候会遇到其他包的关联问题因为不存在mta了嘛所以选中msmtp-mta
再选中msmtp,mutt,getmail4,procmail
再选中lynx这是一个文本话浏览网页的工具wv (wvware是用于把MS doc文档转化为html或者tex文档的工具), 这两个在后面配置mutt中用的着。
建立文件箱
$ mkdir ~/Mail
$ cd ~/Mail
新建三个文件
$ vim inbox
$ vim sent
$ vim postponed
空文件,存盘退出就可以了。
配置mutt
新建~/.muttrc
# lixuebai
#编辑器 直接在 Mutt 的终端里使用非图形界面的 Emacs (emacs -nw)
set editor="emacs -nw"
#设置邮件发送程序
set sendmail="/usr/bin/msmtp"
#建立信箱
set folder="~/Mail"
set mbox="~/Mail/inbox"
#set mbox_type=maildir
set spoolfile="~/Mail/inbox"
set postponed="~/Mail/postponed"
set record="~/Mail/sent"
# 让mutt监视下面几个邮箱并随时报告新邮件
mailboxes "=inbox"
mailboxes "=USTCstudent"
mailboxes "=USTCteacher"
mailboxes "=ustcbbs
mailboxes "=Gmail"
set check_new = yes
set timeout = 600
#set alternates="xxx@mail.ustc.edu.cn"
#这是一个格式字符串用来控制你的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
#html类型的附件是允许直接通过 .mailcap 浏览的?
#doc类型的附件通过wvware转成html 浏览
auto_view text/html application/msword
#这也是一个提示性变量。它是确定当你退出时,是否提示你把信件从 spool 移动到的 mbox 文件。
set move=no
#当 Mutt 用 thread 方式显示时,是否用纯 ascii 表示树状列表。
set ascii_chars=yes
#回信时是否包含原文。
set include
#回信的引文之前插入那个符号?
set indent_str="> "
#设置你自己的邮件头。
my_hdr From: xxx@mail.ustc.edu.cn
#打分
#新信件+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=/home/lixuebai/.mutt.alias
#你发出的邮件保存到那个信箱文件?比如可以像我这样每个月发出的信件放在不同的文件里。
set record="~/Mail/=sent-mail-`date +%Y-%m`"
#你的终端支持哪一种编码的显示这个必须和你的终端编码一样。推荐用utf8
set charset="utf8"
#send_charset
set send_charset="us-ascii:iso-8859-1:gb2312:utf-8"
#外部程序退出时是否要求用户按一个键才返回。这在察看某些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 ^us-ascii$ 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=xxx@mail.ustc.edu.cn
#set pop_pass="xxxxxx"
#set pop_host=202.38.64.8
#现在不用mutt直接收信了。
#把mutt发送的from域作为sendmail发送邮件的sender(否则会用user@localdomian)
set envelope_from=yes
macro index G "!getmail\n" "Invoke getmail"
macro pager G "!getmail\n" "Invoke getmail"
配置msmtp
新建~/.msmtprc
# xxx@mail.ustc.edu.cn
account xxx@mail.ustc.edu.cn
host 202.38.64.8
from xxx@mail.ustc.edu.cn
auth plain
user xxx@mail.ustc.edu.cn
password xxxxxx
科大邮件服务器是采用明码密码的所以有auth plain
注意一点,~/.msmtprc权限不能过高
$ chmod -v 600 ~/.msmtprc
就可以了。
配置getmail
新建文件夹~/.getmail/ 并在这个文件夹中新建文件getmailrc
$ mkdir ~/.getmail
$ cd ~/.getmail/
$ vim getmailrc
[options]
verbose = 1
read_all = false
message_log = ~/.getmail/log
[retriever]
type = SimplePOP3Retriever
server = 202.38.64.8
username = xxx@mail.ustc.edu.cn
password = xxxxxx
[destination]
type = MDA_external
path = /usr/bin/procmail
unixfrom = true
使用crontab定时自动收信
$ crontab -e
每隔10分钟收一次信只收未读的信件。
0,10,20,30,40,50 * * * * getmail -n
配置procmail
新建文件~/.procmailrc
PATH=/bin:/sbin:/usr/bin:/usr/sbin
SHELL=/bin/bash
MAILDIR=$HOME/Mail
DEFAULT=$MAILDIR/inbox
LOGFILE=$MAILDIR/.procmaillog
:0
* ^From.*@mail.ustc.edu.cn
USTCstudent
:0
* ^From.*@ustc.edu.cn
USTCteacher
:0
* ^From.*@bbs.ustc.edu.cn
ustcbbs
:0
* ^From.*@gmail.com
Gmail
:0 #最后的这个配置就是指如果上面分类剩下的信件全扔到inbox里
* .* inbox
# 黑名单(垃圾邮件)
:0:
* ^From.*badguy
/dev/null
下面说几个mutt其他方面的问题
mutt使用地址簿
用 alias 来实现一个地址簿。alias 命令的形式是这样的,举个例子:
alias ab Xx X <xxx@mail.ustc.edu.cn>
alias 是命令ab 是别名Xx X <xxx@mail.ustc.edu.cn> 是一个标准的 email 地址。这样,如果你在 index 里按 "m",在 To: 的提示下输入 "ab",就可以发信给 Xx X <xxx@mail.ustc.edu.cn>。
在 To: 的提示下按 Tab 就可以显示联系人列表,然后你可以移动光标选择联系人。
如果你有很多 alias 要写,最好把它们写到另外一个文件,比如叫 .mutt.alias. 然后在 .muttrc 里加上:
source ~/.mutt.alias
在里面写诸如
alias music Music <music@ustc.edu.cn>
alias video 科大影视 <video@ustc.edu.cn>
.........
你还可以设置一个变量:
set alias_file=~/.mutt.alias
这样你在 index 里按 "a",就可以把来信人加入到这个 alias 文件了。
mutt附件格式问题
mutt(和gnus一样)默认的附件格式是rfc2231但实际上大多数邮件客户端却是rfc2047。据说rfc2231才是标准的。为了迎合其他人需要改变mutt的附件格式要打补丁详见 brep的主页可以使用brep打的包。
然后在.muttrc中增加
set rfc2047 parameter=yes
mutt处理 HTML 附件
mutt 可以处理任何类型的附件。因为它可以调用合适的程序来处理它们。为了直接在 mutt 的窗口里显示 HTML先aptitude安装lynx, 你需要在 ~/.mailcap 文件加入:
text/html; lynx --dump %s; nametemplate=%s.html; copiousoutput
在 ~/.muttrc 加入:
auto_view text/html
mutt处理doc附件问题
许多人喜欢发送微软的doc文档作为附件使用wvware可以转化成为html文档或者 latex文档。mutt窗口可以显示html先aptitude安装wv,然后在~/.mailcap中加入
application/msword; wvHtml --charset=gb2312 %s - | lynx --dump -stdin; nametemplate=%s.html; copiousoutput
在~/.muttrc中加入
auto_view text/html application/msword
OK,mutt已经配置好了运行试试吧
$ mutt
下面是说明配置exim4的配置和postfix的配置(MuttConfig:postfix), 还有fetcmail的使用(MuttConfig:fetchmailrc)。喜欢它们的人可以看。
配置exim4
$ su
# dpkg-reconfigure exim4-config
根据你的信箱的情况如果你的信箱是要求smtp认证的(不需要smtp认证的跳过MuttConfig:nosmtp1)
按照如下的流程比如科大信箱mail.ustc.edu.cn现在就是要smtp认证的那么就要按照下面所示.
(1)将配置文档拆分成小文件么? 否
(2)选择“用smarthost发信通过smtp或fetchmail接受邮件”
(3)系统邮件名称随意可以写xxx@mail.ustc.edu.cn)
(4)要监听的入站 SMTP 连接的 IP 地址127.0.0.1 (这样就只有本机可以利用exim4)
(5)其它可接受的邮件目的地址:(empty)
(6)为这些主机进行邮件转发:(empty)
(7)负责处理从本机寄出的邮件的机器(smarthost): 202.38.64.8
(8)要在寄出的邮件中隐藏本地邮件名称吗? 是
(9)本地用户的可视域名同3
(10)保持最小 DNS 查询量吗(按需拔号 Dial-on-Demand)
还要修改几个配置文件:
(1) /etc/exim4/passwd.clientsmtp的帐号密码设置加入
202.38.64.8:用户名:密码
对于学生要用 用户名@mail.ustc.edu.cn
(2) /etc/exim4/exim4.conf.templateexim4配置文件,找到下面的文字
# Because AUTH PLAIN and AUTH LOGIN send the password in clear, we
# only allow these mechanisms over encrypted connections by default.
# You can set AUTH_CLIENT_ALLOW_NOTLS_PASSWORDS to allow unencrypted
# clear text password authentication on all connections.
看懂了就知道了因为email服务器的授权方式是明文方式验证的所以要加入
AUTH_CLIENT_ALLOW_NOTLS_PASSWORDS = 1
对于没有smtp认证的邮箱在dpkg-reconfigure exim4-config的第二步时候选择
互联网站;直接通过 SMTP 发送或接收信件
其他的基本上默认或者参考上面的列表就可以了,也不需要配置上面的两个文件。
配置之后重新启动exim4
# /etc/init.d/exim4 restart
配置postfix
根据你的信箱的情况如果你的信箱是要求smtp认证的(不需要smtp认证的跳过MuttConfig:nosmtp2)
$ sudo dpkg-reconfigure postfix
按照提示一步一步做修改配置类型为internet with smarthost
relayhost 设置为202.38.64.8
配置修改几个文件
1./etc/postfix/master.cf 修改
smtp inet n - - - - smptd
smtp inet n - n - - smtpd -v
#可以在/var/log/message中找到错误信息
2, /etc/postfix/main.cf中增加
smtpd_sasl_auth_enable = yes
# 允许明文
smtpd_delay_reject=yes
smtpd_recipient_restrictions = permit_mynetworks permit_sasl_authenticated
permit_auth_destination reject
smtpd_client_restrictions = permit_sasl_authenticated
broken_sasl_auth_clients =yes
smtpd_sasl_security_options = noanonymous
smtp_sasl_password_maps = hash:/etc/postfix/saslpass
# smtp认证的密码文件
3,编辑/etc/postfix/saslpass
202.38.64.8 user:password
# user应该是xxx@mail.ustc.edu.cn
为了加速,用postmap生成数据库:
postmap hash:/etc/postfix/saslpass
为了安全
chown -v root:root /etc/postfix/saslpass*
chmod -v 600 /etc/postfix/saslpass*
若是不认证的,也是选择
互联网站;直接通过 SMTP 发送或接收信件
配置fetchmail
新建~/.fetchmailrc
在里面写类似
defaults
mda "/usr/bin/procmail -d user"
set daemon 60
poll 202.38.64.8
uidl
protocol POP3
user "xxx@mail.ustc.edu.cn"
password "xxxxxx"
keep
poll bbs.ustc.edu.cn
....
....
上面user 表示你自己的用户名,
uidl表示只收取新的信件
keep表示不删服务器上的邮件。
注意~/.fetchmailrc 的属性设为 600 若太高比如超过710, fetchmail 不予启动(处于安全的考虑)。
参考文献
1,王垠主页的mutt配置的说明
2,jamescsy, [指南]Exim4+fetchmail+mutt在debian下收发电子邮件
3,lo0ol, postfix+mutt+tsocks配置成功.可以通过代理认证smtp server发信
4,冷风, 带smtp认证的postfix配置
5,yixiu, 使用msmpt+mutt+getmail4+procmail处理ustcmail