当前位置: 首页 > 工具软件 > Mutt > 使用案例 >

mutt配置文件_配置mutt做邮件客服端

仲孙景胜
2023-12-01

copyright(c) 李雪白 2007年

本文遵从自由软件基金会发布的GNU自由文档许可证(GNU Free Document License), 任何组织和个人都有在此条款下的复制,转载,修改的权限。

我用的操作系统是Debian或者Ubuntu GNU/linux

这里的组合是mutt+msmtp+getmail+procmail

mutt是作为客户端,msmtp是邮件发送mta,getmail收取邮件,procmail过滤邮件。

在Debian中默认安装的mta是exim4,在Ubuntu中默认安装的mta是postfix,

它们当然可以用,但是足够用于邮件服务器了,如果你是个人电脑使用,就不需要

用这么好的mta了,况且exim4或者postfix占用系统资源很大,没有必要开机自动运行。

msmtp是为mutt写的,很简单轻便的. 另外,还有些人用esmtp等都可以。

收取邮件,从前大家都使用比较著名的fetchmail. fetchmail是收取信件,但不是直接放在本地硬盘中,而是需要本地mta投递,所以

需要procmail

看到有人建议不用fetchmail,而是用getmail,

据说fetchmail问题太多,而getmail则没有那些问题,

你可以在aptitude中看getmail4 包的介绍,就说是为了替代fetchmail的

现在我来说怎么配置

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

alias 是命令,ab 是别名,Xx X 是一个标准

的 email 地址。这样,如果你在 index 里按 "m",在 To: 的提示下输入 "ab",就可

以发信给 Xx X 。

在 To: 的提示下按 Tab 就可以显示联系人列表,然后你可以移动光标选择联系人。

如果你有很多 alias 要写,最好把它们写到另外一个文件,比如叫 .mutt.alias. 然后

在 .muttrc 里加上:

source ~/.mutt.alias

在里面写诸如

alias music Music

alias video 科大影视

.........

你还可以设置一个变量:

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.client,smtp的帐号密码设置,加入:

202.38.64.8:用户名:密码

(2) /etc/exim4/exim4.conf.template,exim4配置文件,找到下面的文字

# 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 不予启动(处于安全的考虑)。

参考文献

使用msmpt+mutt+getmail4+procmail处理ustcmail

 类似资料: