Mutt电子邮件的使用
"All mail clients suck. This one just sucks less." -me, circa 1995
安装完mutt后,在/usr/share/doc/mutt/*
下有份很好的手册
mutt是一个基于ncurse的Email客戶端。即是一个邮件管理程序。事实上,我们通常所指的mutt是一套邮件处理工具链,mutt作为邮件管理工具,是这套工具链的核心。在这套工具链中,一般还包括以下工具:
- offlineimap 是采用 IMAP 协议处理邮件;
- getmail 采用 POP3 协议处理邮件;
- procmail 用来过滤邮件;
- msmtp 用来发送邮件
(11/18)搞了一晚上,终于可以用了,mutt的内置的imap不怎么好,不能离线阅读,明天换成offlineimap试试。另外,多邮箱地址的还没有搞定,明天继续。
(11/20)最终还是选择了pop3,offlineimap还是没有搞定。
1.程序安装
安装mutt,msmtp,getmail,procmail:
$ sudo apt-get install mutt msmtp getmail4 procmail
如果需要用vim编写信件,而又没安装的话:
$ sudo apt-get install vim
2.配置发信工具 msmtp
在家目录下建立名为 .msmtprc 的配置文件:
$ vim ~/.msmtprc
在文件中加入一下内容:
#Gmail account gmail # 账户名称是gmail,这个可以随意写 host smtp.gmail.com # 发信服务器是smtp.gmail.com,这个是邮件服务器规定的 from waikeungshen@gmail.com # 邮箱地址 tls on # tls/ssl加密,gmail邮件服务器的要求 auth on # 发信验证,大多邮件服务器的要求 port 587 # gmail的发信端口 user waikeungshen # 邮箱账号 password xxxxxx # 邮箱密码,明文 # 默认发信账户名称 account default: gmail
配置文件根据实际情况修改,其中发信发信服务器地址,发信端口是必须的。tls的值可能是tls on 也可能是 tls off,而auth on/login/plain。
保存退出后,由于里面的密码是明文,所以要设置权限,此文件只能本人访问。
$ chmod 600 ~/.msmtprc
3.配置收信工具getmail
首先在家目录下建立 .getmail 文件夹:
$ mkdir ~/.getmail
然后在.getmail目录内为每个邮箱各建立一个配置文件,比如为我的gmail建立getmailrc.gmail:
$ vim ~/.getmail/getmailrc.gmail
并写入如下内容:
[options] verbose = 0 # 不产生过多信息 read_all = false # 只收取新信件 delete = false # 将服务器上已被接收的信件删除 [retriever] type = SimplePOP3SSLRetriever # POP3收信方式 server = pop.gmail.com # 收信服务器地址,这个是邮件服务器规定的 port = 995 # 收信端口 username = waikeungshen@gmail.com # 邮箱账号 password = xxxxxxxx # 密码,明文 [destination] type = MDA_external # 因为要使用procmail分拣信件,所以此处这样填写 path = /usr/bin/procmail # procmail命令的位置,如果不确定可以 unixfrom = true # 这一行写不写无所谓
注意:不可将不同邮箱的配置文件写到一起。例如我还有一个hotmail的邮箱,我另外建立一个邮箱的配置文件getmailrc.hotmail。
创建一个脚本文件来调用这些邮箱的配置文件。
$ vim ~/.getmail/getmail.sh
在里面写道:
#!/bin/bash getmail -n -r ~/.getmail/getmailrc.gmail -r ~/.getmail/getmailrc.hotmail
执行该脚本,就相当与对我的gmail和hotmail邮箱执行了getmail的命令。但不能每次都是我们手动去执行,将此事交给系统守护进程:
$ crontab -e
第一次使用此命令可能会出现选择编辑器的提示,可以选择vi,然后就会启动vi,可能又会就VIM的配置文件报一些错误,回车就打开了相应文件。在其中加入:
0,10,20,30,40,50 * * * * ~/.getmail/getmail.sh > /dev/null 2>&1
注意:> /dev/null 2>&1避免getmail收信报告被当作信件发至邮箱(如果不这样,新信件就看不完了)。现在是每十分钟收一次。
同样由于文件中含有明文密码,设置权限:
$ chmod -R 700 ~/.getmail
4.创建邮箱文件
getmail收取信件,而信件的存放地点,我们还未指定。在家目录下建立mail目录,其内用文本文件inbox、sent作为收件箱和发件箱:
$ mkdir ~/mail $ touch ~/mail/inbox ~/mail/sent ~/mail/.procmaillog
一起创建的还有procmail的错误记录文件.procmaillog。mail目录内存放了信件等重要内容,杜绝他人访问:
$ chmod -R 700 ~/mail
5、配置信件分拣、投递工具procmail
getmail只是将收到的信件交由procmail处理,procmail如何让它们到达我们已经创建好的收件箱,需要在.procmailrc中说明:
$ vim ~/.procmailrc
加入以下内容:
PATH=/bin:/sbin:/usr/bin:/usr/sbin SHELL=/bin/bash MAILDIR=$HOME/.Mail DEFAULT=$MAILDIR/inbox LOGFILE=$MAILDIR/procmaillog #:0 #* ^From.*@gmail.com #Gmail :0 *.* inbox
procmail很强大,可以设置各种分拣、投递的规则,当然过滤垃圾邮件也不在话下。这里只是将除gmail外所有信件都投到inbox中。
6、信件管理工具mutt基本配置
以上的msmtp、getmail、procmail,我们平时都接触不到,因为管理、呈现信件的事情由mutt承担,所以只要和mutt打交道就行了。
正因为这个原因,mutt的配置文件也更为复杂,先在家目录下建立.muttrc文件:
$ vim .muttrc
首先需要加入一些基本的设置语句:
set folder = "~/mail" # 所有信件所在目录 set mbox = "~/mail/inbox" # 收件箱文件 set record = "~/mail/sent" # 发件箱文件 set spoolfile = "~/mail/inbox" # 启动mutt后默认显示的信箱文件 set sendmail = "/usr/bin/msmtp" # 发信程序msmtp的位置,如果不确定可以 # 通过$ which msmtp获得
为什么没有指定收信工具呢?因为守护进程已经指使getmail定时收信,而getmail每收到一封信,就交由procmail,从而将新信投递到inbox中。
此时mutt已经能够工作,但收到的许多中文信件会显示乱码。所以必须在.muttrc中再加入以下内容:
set charset = "utf-8" # 终端支持的编码,Linux下一般是utf-8 set send_charset = "utf-8" # 发信编码 charset-hook ^us-ascii$ gb2312 # 用gb2312编码显示未设置编码的信件 charset-hook ^big5$ big5 # 用big5编码显示繁体信件 charset-hook !utf-8 gb2312 # 用gb2312编码显示非utf-8编码的信件 set assumed_charset = "gb2312" # 用gb2312编码显示未经MIME编码的信件 set rfc2047_parameters = yes # 用gb2312编码显示中文附件名
7、信件管理工具mutt个性化配置
参考我的.muttrc配置文件
#编码 set charset="utf-8" set send_charset = "utf-8" # 发信编码 charset-hook ^us-ascii$ gb2312 # 用gb2312编码显示未设置编码的信件 charset-hook ^big5$ big5 # 用big5编码显示繁体信件 charset-hook !utf-8 gb2312 # 用gb2312编码显示非utf-8编码的信件 set assumed_charset = "gb2312" # 用gb2312编码显示未经MIME编码的信件 set rfc2047_parameters = yes # 用gb2312编码显示中文附件名 #编辑器 set editor="/usr/bin/vim" #设置邮件发送程序 set sendmail="/usr/bin/msmtp" # 让mutt监视下面几个邮箱,并随时报告新邮件 mailboxes "=inbox" mailboxes "=Gmail" #这是一个格式字符串,用来控制你的index的列表显示。它的缺省定义是 set index_format="%4C %Z %{%b %d} %-15.15L (%4l) %s" #指定你有那些信箱文件。当你按 "c" 切换信箱时,再按 Tab 键,这些信箱就可供你选择 mailboxes Mailbox sent-mail # Quit without question set quit=ask-yes # Ask for a key after command set wait_key=yes set folder = "~/.Mail" # 所有信件所在目录 set mbox = "~/.Mail/inbox" # 收件箱文件 set record = "~/.Mail/sent" # 发件箱文件 set spoolfile = "~/.Mail/inbox" # 启动mutt后默认显示的信箱文件 set sendmail = "/usr/bin/msmtp" # 发信程序msmtp的位置,如果不确定可以 # 回信时是否包含原文 set include # 回信引文前的符号 set indent_str="> " # To recognize reply messages set reply_regexp="^(re([\[0-9\]+])*|aw|回复|答复)[::][ \t]*" # Traditional Fwd: subject set forward_format="Fwd: %s" set pager_stop=yes set edit_headers=no set pager_index_lines=5 # 当你按"r"回信时,不提示你输入回信地址和主题,直接进入编辑模式 set fast_reply #no reply to myself unset metoo unset reply_self set reply_regexp="^(re([\[0-9\]+])*|aw|回复)(:[ \t]|:)" # 判断邮件列表 subscribe gdg-hangzhou@googlegroups.com subscribe hzlug@googlegroups.com #你发出的邮件保存到那个信箱文件?比如可以像我这样每个月发出的信件放在不同的文件里。 set record="~/Mail/=sent-mail-`date +%Y-%m`" #把mutt发送的from域作为sendmail发送邮件的sender(否则会用user@localdomian) set envelope_from=yes # 排序方式 #set sort=threads #set sort_aux=reverse-last-date #set ascii_chars=yes #信件打分 score "~N" +2 # 新信+2 score "~O" +1 # 没看过的信+1 score "~f newnuy" +5 # newnuy的信+5 score "~s Linux" +3 # 主题包含Linux的信+3 score "~D" -3 # 标记删除的信-3 set sort = score # 启用分数排序 #地址簿 source ~/.mutt/mutt.alias set alias_file=~/.mutt/mutt.alias color index yellow default ~p # To me color index blue default ~P # From me color index brightyellow default ~N # New color index brightgreen default "~N ~p" # New to me color index brightcyan default ~T # Tagged color index cyan default ~D # Deleted color index black cyan ~F # flaged
参考
=-=-=-=-=
Powered by Blogilo