弄了好几天mutt及其相关设置了,还是不尽如人意。不过算是能凑合用了。最郁闷的是procmail对邮件过滤的设置,那个关键字过滤的正则表达式还是搞不定~过滤的结果总是不全对。wangcong同学告诉我某牛人说过:“你有一个问题,你决定使用正则表达式来解决,那么你现在有两个问题了。”现在感觉,这话真TMD太有道理了!
所以算了,就凑合吧。发现一个问题能引出更多的问题。从想使用mutt收邮件开始,就是一个问题增长的过程:
先是~/.muttrc这个文件,本来在这个文件里设定了直接用mutt来收取邮件(我的mutt是打了补丁的),结果到现在也没不知道如何支持需要tls验证的gmail,故作罢。发送邮件倒是没有劳神,直接用sendmail,什么问题都没有。只不过好像只能用一个帐户发出邮件?
决定使用fetchmail来收取邮件,本来都配置好了。想给.fetchmailrc中追加一行,使用了echo ‘**’ > .fetchmailrc,就因为这个小小的失误,我的.fetchmailrc就报废了~,算了,改用getmail了,getmail倒是比较简单,只要对不同的帐户用不同的配置文件就可以了。
getmail倒是很快成功了,我还写了个脚本用来同时收取不同信箱的邮件。但是我不想直接把邮件送到信箱,想先用procmail来过滤一下,就遇到了让人郁闷无比的正则表达式问题。这还真是个问题,我都看了两天了,过滤还是不完全对,郁闷!主要是我的过滤是不规则的,既考虑收信的信箱,又考虑发信人,还考虑主题,有点贪多,但是如果不这样,就不能体现它的好处啊,我就收工分类算了。继续研究中……
我的.muttrc:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 | #编辑器 直接在 Mutt 的终端里使用非图形界面的 Emacs (emacs -nw)或者vim我选用vim #set editor="emacs -nw" set editor="vim"#设置邮件发送程序 set sendmail="/usr/sbin/sendmail" set realname="" set use_from=yes#建立信箱 set folder="~/.mail" set mbox="~/.mail/inbox" #set mbox_type=maildir set spoolfile="~/.mail/inbox" set postponed="~/.mail/postponed" #set record="~/.mail/sent" #你发出的邮件保存到那个信箱文件?比如可以像我这样每个月发出的信件放在不同的文件里。 set record="~/.mail/=sent-mail-`date +%Y-%m`"# 让mutt监视下面几个邮箱,并随时报告新邮件 mailboxes "=default" mailboxes "=inbox"set check_new = yes set timeout = 300 #set alternates="xxx@mail.com" #这个选项不知道为什么我的mutt不能识别 #这是一个格式字符串,用来控制你的index的列表显示。 set index_format="%4C %Z %{%b %d} %-15.15L (%4l) %s" #指定你有那些信箱文件。当你按 "c" 切换信箱时,再按 Tab 键,这些信箱就可供你选择 mailboxes index default sent #这是一个 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 #这也是一个提示性变量。它是确定当你退出时,是否提示你把信件从 spool 移动到的 mbox 文件。 set move=no #当 Mutt 用 thread 方式显示时,是否用纯 ascii 表示树状列表。 set ascii_chars=yes #回信时是否包含原文。 set include #回信的引文之前插入那个符号? set indent_str="> " #设置你自己的邮件头。 my_hdr From: aMan@mail.com #打分 #新信件+4分,已经标记删除的 -5,上次没有读的 +1。 score "~N" +4 score "~D" -5 score "~O" +1 #排序方式。 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 #你的终端支持哪一种编码的显示?这个必须和你的终端编码一样。推荐用utf8 set charset="utf8" #send_charset set send_charset="us-ascii:iso-8859-1:gb18030:gb2312:gbk: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$ gb18030 #Chinaren 等服务器发出来的信件使用了 quoted-printable 的 subject, #而且设置编码为 "iso8859-1",这显然是错误的。 #对付这个错误的办法是把 iso-8859-1 变成 gb18030 的别名 charset-hook ^iso-8859-1$ gb18030 # evolution 发过来的 subject 为 utf-8 编码的邮件标题乱码! #那就把不是 utf-8 的编码都映射到 gb18030 charset-hook !utf-8 gb18030 # mutt进行pop3收信,当然之前要查看$ mutt -v 编辑情况的确编辑了pop3了。 # 以后进入mutt按G就可以收信了。 #set pop_user= #set pop_pass= #set pop_host= #现在不用mutt直接收信了。 #把mutt发送的from域作为sendmail发送邮件的sender(否则会用user@localdomian) set envelope_from=yes macro index G "!retrievemailsn" "Invoke getmail" macro pager G "!retrievemailsn" "Invoke getmail" <code> retrievemails是一个脚本就是每一行都类似: <code>getmail -nr getmailrc.gmail |
这样,就可以用retrvemails来一次收取所有信箱的邮件了。
getmailrc是在~/.getmail/中的配置文件,对应一个信箱,一般格式为:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | [options] verbose = 0 read_all = false delete = false message_log = ~/.getmail/getmail.log[retriever] type = SimplePOP3Retriever server = servername port = portnumber username = username password = password [destination] type = MDA_external path = /usr/bin/procmail unixfrom = true <code> 就对应一个信箱,其中path可以直接对应一个信箱文件,但是我需要使用procmail进行过滤,就定向到procmail了。不需要安全连接的的pop3服务器就像这样,如果是像gmail这样需要tls验证的就需要吧[retriever]下的type改为SimplePOP3SSLRetriever就可以了,端口号若是默认的,可以省略。 procmail的过滤规则写在~/.procmailrc中,此文件一般格式为: <code> PATH=/bin:/sbin:/usr/bin:/usr/sbin SHELL=/bin/bash MAILDIR=$HOME/.mail DEFAULT=$MAILDIR/inbox LOGFILE=$MAILDIR/.procmaillog FORMAIL=/usr/bin/formail:0 * ^From.*gmail.com gmail <code> 开始是路径设置,最后那个: <code> :0 * ^From.*gmail.com gmail |
是过滤规则,其中第二行是一个正则表达式,就是这个地方彻底得难倒了我。符合此条过滤规则的信件会被送到第三行指定的信箱中。最后我在cron table中加入了
0,10,20,30,40,50 * * * * /usr/sbin/retrievemails
就可以是系统自动没10分钟检查一次信箱了。
不过这里也有一个遗留问题,就是说cron table中的程序看到的环境变量是不一样的,很多程序都需要指定绝对路径,问题太多了。不过目前凑合着运行正常。
继续研究mutt及其相关配置中……
to walimis:
谢谢,我回头试试看。
set alternates=”xxx@mail.com”
改变为
alternates xxx@mail.com”
我看到网上一个帮助说要搞什么,人证结果自己没弄就好了,原来是版本的问题。。
对,我一开始就是,还不知道怎么回事情呢,反正注释掉了。
msmtp需要什么ssl证书?没有遇到~
高版本的mutt已经把
set alternates=”xxx@mail.com”
给废了!我备份的muttrc中这一项被警告了。
而且,新的msmtp加了个什么ssl证书,kao,害得我又去下了个什么证书~!
哎,都是升级惹得祸~!
哈哈~!偶的fc7终于好了!
欧也!
fc7就一个字:爽!!!!!
太爽了!哈哈~!