QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 922|回复: 1

[原创]用 MUTT 收发电子邮件

[复制链接]
发表于 2004-9-1 14:36:50 | 显示全部楼层 |阅读模式
现在我向大家详细介绍一下我用 MUTT 收发电子邮件的具体的操作过程。

前言
MUTT 是一个典型的 UNIX 程序,所以说它收发邮件并不确切。我的意思是确立一个以 MUTT 为中心的电子邮件收发环境。用简单的话来说就是用 esmtp 发邮件, fetchmail 收邮件、而用 procmail 过滤邮件以后,再传到 MUTT 中,给您处理。一言难尽,我就用下面的一张图片示意一下:



好了,知道了原理,我们工作起来就有目的了。其中,MUTT 和 fetchmail 以及 procmail 在一般的发行版本里都有的,所以我并不提倡你去网络上下载。(当然,除非你是狂热的自由软件爱好分子)配置 MUTT 我具体的在这里就不多说了。现在我们一步一步的来配置。

配置发邮件
很多人喜欢用 sendmail 、postfix、exim 等等的 MTA 发邮件。但是它们都有一个弊端,就是配置烦杂、占用的系统资源巨大(相对于我的 Pentium 166 来说),而且配置不好的话,可能让人家使用你的机子发邮件,造成一定的安全性问题,所以我选择 esmtp 发邮件。estmp 仅仅是一个发邮件的协议,它直接向你指定的 SMTP 邮件服务器上发邮件。所以你可以随时知道你的邮件是否已经发出去,而不是在邮件队列里几天了还不知道。这里要说的是:esmtp 仅仅是完成发邮件的任务,而不提供向外部发邮件的功能,所以不要指望用它来作你的邮件服务器。

最重要的是,对于我来说就是系统的资源问题。你当然可以想象一个 MMX 的芯片所能处理的能力是有限的。所以选择一个小型的程序对于我来说是非常重要的事情。当然,对于你奔N的芯片来说,我想保持系统快速运行是你所希望的。

好了,说了那么多的废话,我们来看具体的操作过程吧。首先你从 esmtp 的网站上面下载 esmtp 程序。然后编译和安装(既然你会看这篇文章,我想这对于你来说并没有什么问题,所以我偷懒略过。)顺便说一句,如果编译不成功的话,或许你没有安装 libesmtp 库,安装一下就可以了。

好了,接下来的就是设置的问题了。

我们先告诉 esmtp 用哪个 SMTP 服务器发邮件。编辑或者建立 .esmtprc 文件,并且输入下面相关的信息:

hostname = smtp.163.com:25
username = "myname"
password = "mypassword"

mda = "/usr/bin/procmail -d %T"
其中,hostname 就是你的 ISP 的 SMTP 服务器的地址和端口(我用的是 163 的邮箱,所以是 smtp.163.com:25 )。而 uname 和 password 自然就是你的用户名和密码了。mda 就是定义你的 MDA 了,一般我们都喜欢用 procmail ,所以这样就可以了,一般用不着修改的。esmtp 有很多参数,具体的你可以参考相应的文档。

好了,semtp 现在知道了从那里发送你的邮件了,下面我们告诉 MUTT 用 esmtp 发邮件。esmtp 支持 sendmail 的语法结构,所以你可以这样设置你的 MUTT 用“sendmail”(其实就是 esmtp )发邮件,在 .muttrc 中加入:

set sendmail = "/usr/bin/esmtp -v -X ~/.esmtplog"
对,就是那么简单的一行就可以了。是不是很简单?呵呵。现在启动 MUTT 发一封邮件看看,是不是成功了?

解决收邮件
现在我们来解决收邮件的问题。我喜欢用 fetchmail 收邮件,具体的配置其实很简单:在你的 .fetchmail 中加入:


poll pop3.163.com
protocol POP3
user "myname"
password "mypassword"
就可以了。poll 后面的是你的的 POP3 服务器的地址、protocol 你的 POP3 服务器的协议,一般是 pop3 就可以了,user 和 password 是分别是你的用户名和密码。同时要设置你的 .fetchmailrc 的属性为 600 否则 fetchmail 不予启动(处于安全的考虑)。然而我本人通常也是那么做的,但是 fetchmail 就是收不到信件。这个问题我搞了很久,得以解决。

其原因就是 MTA 的问题。从原理上说就是 fetchmail 从你的 POP3 服务器上收到邮件以后传到你的本地 MTA 上,而此时本地 MTA 自然是没有安装,所以当然传不到你的邮件池里。这个问题改如何解决呢?呵呵,这时,又该我们的 esmtp 出面了,现在它不是担当发邮件的责任了,而是伪装成一个 MTA 让 fetchmail 通过它把你的邮件传到你的个人邮件池里。我们只要简单的定义下面的语句在你的 .fetchmailrc 中就可以了:

defaults
           mda "/usr/bin/esmtp -f %F %T"
注意,上面的语句一定要在 .fethmailrc 的最前面的位子。否则仍然可能要出错误!

现在执行:

$ fetchmail -avk
看看,是不是收到邮件了?呵呵,祝贺你了。你快要成功了!

其他的问题
下面我们来看看常见的问题。由于现在在 SMTP 服务器普遍实行了 SMTP 认证的。所以它们在转发你的邮件的时候要扫描一下你的邮件头是不是和你的用户名下一致。如果不一致的话将拒绝转发你的邮件。而问题在 于 MUTT 所定义的邮件头都是本地的用户的登陆名和本地的主机名,如 root@localhost 这样的名字,所以 SMTP 服务器当然不予转发。要解决这个问题其实很简单,只需在 .muttrc 中加入:

my_hdr From: AMD-K6<[email protected]>
my_hdr Reply-To: AMD-K6<[email protected]>

就可以了,第一行定义的是你的发邮件的地址,下面这行定义的是回复邮件的地址。通常是同一个邮箱,所以都是相同的就可以了。

好了,现在你已经大致上掌握了用 MUTT 收发邮件了具体的操作过程了。或许你有很多不明白的地方,但是我想你多看看 man 、多用 google 、肯定能找到答案的。我的邮箱是 [email protected] 如果你有任何的问题的话,可以发邮件给我,我尽力帮你解决。

相关资源
我的 MUTT 、fetchmail、esmtp 配置文件 mailrc.tar.gz
esmtp 主页 http://esmtp.sourceforge.net/
fetchmail 主页 http://catb.org/~esr/fetchmail/
mutt 主页 http://www.mutt.org/
Linuxsir 论坛 http://www.linuxsir.org/bbs/
Freeway 主页 http://freeway.linuxsir.org/


欢迎大家来我的网站讨论(也为我自己提高一下点击率)

http://posuring.go.3322.org
发表于 2005-3-1 14:07:24 | 显示全部楼层
AMD-K6兄,你的文章是公社里面的不多的mutt的文章.

不过我用的是默认的sendmail发邮件, 还总是失败. 不能只接收新信件.
我发了贴子,回复很少, 伤心...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-24 19:06 , Processed in 0.083539 second(s), 16 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表