LinuxSir.Org  
| 网站首页 | 注册账号 | 论坛帮助 |

欢迎来到LinuxSir.Org!
您还未登录,请登录后查看论坛,或者点击论坛上方的注册链接注册新账号。


发表新主题 回复
精华主题  
主题工具
旧 04-09-01, 13:27 第 1 帖
AMD-K6
 
AMD-K6 的头像
 
 
版主  
  注册日期: Aug 2003
  我的住址: 杭州
  帖子: 1,984
  精华: 21
 

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


现在我向大家详细介绍一下我用 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 )。而 username 和 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<posuring@163.com>
my_hdr Reply-To: AMD-K6<posuring@163.com>

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

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

相关资源
我的 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/


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







__________________
* Mail/Gtalk: i.feelinglucky[at]gmail.com
* My Blog: http://www.gracecode.com
* Old homepage: http://slack.linuxsir.org/amdk6/
  AMD-K6 当前离线   回复时引用此帖
旧 04-09-01, 13:28 第 2 帖
AMD-K6
 
AMD-K6 的头像
 
 
版主  
  注册日期: Aug 2003
  我的住址: 杭州
  帖子: 1,984
  精华: 21
 

http://posuring.go.3322.org
  AMD-K6 当前离线   回复时引用此帖
旧 04-09-01, 13:40 第 3 帖
hutigers
 
hutigers 的头像
 
 
资深版主  
  注册日期: Nov 2003
  我的住址: 辽宁沈阳
  帖子: 3,481
  精华: 15
 

提一个问题。

:o :o 没太看懂的说。

esmtp和procmail之间为什么是一个循环呢?
奇怪的说,那两个箭头构成了一个圈。
:o :o

PS:感觉AMD-K6的中文象是外语的说。
PHP 代码:
最重要的是,对于我来说就是系统的资源问题。你当然可以想象一个 MMX 的芯片所能处理的能力是有限的。所以选择一个小型的程序对于我来说是非常重要的事情。当然,对于你奔N的芯片来说,我想保持系统快速运行是你所希望的。 
有英文长句的感觉。

中国人应该是说“有限的处理能力,非常重要的事情是……,你希望的是……”:o :o







__________________
家,台式:微星neo2-fr p35,E2160,1G*2 = 2G DDR2 800, 西数640G + 希捷250G SATA2, XFX Geforce 7900GS 256M,三星2253BW, Creative X-Fi ExtremeMusic(声卡)
笔记本:Acer4920G, 965M,T5550 1.83G, 160G,1G*2 = 2G DDR2 667, 2400XT, 802.11a/b/g
家-->&LinuxSir&<--单位
  hutigers 当前离线   回复时引用此帖
旧 04-09-01, 13:46 第 4 帖
AMD-K6
 
AMD-K6 的头像
 
 
版主  
  注册日期: Aug 2003
  我的住址: 杭州
  帖子: 1,984
  精华: 21
 

引用:
最初由 hutigers 发表
esmtp和procmail之间为什么是一个循环呢?
奇怪的说,那两个箭头构成了一个圈。
画错了…… Sorry,太着急了…… :o


引用:
PS:感觉AMD-K6的中文象是外语的说。
有时候英语也害人啊,呵呵,我会修改下的
  AMD-K6 当前离线   回复时引用此帖
旧 04-09-01, 14:30 第 5 帖
galilette
 
 
 
注册会员  
  注册日期: Oct 2002
  帖子: 186
  精华: 0
 

受教. 试试看不用exim了^^
  galilette 当前离线   回复时引用此帖
旧 04-09-01, 14:35 第 6 帖
redspider
 
redspider 的头像
 
 
注册会员  
  注册日期: Dec 2002
  我的住址: China
  帖子: 994
  精华: 0
 

好啊,感谢







__________________
linux! so strong!
  redspider 当前离线   回复时引用此帖
旧 04-09-01, 15:09 第 7 帖
Linuxfish
 
Linuxfish 的头像
 
 
admin  
  注册日期: Jun 2002
  帖子: 6,351
  精华: 41
 

兄弟辛苦了,论坛里好象还真没一篇这样的帖子,加入精华,要是兄弟能少偷懒,对初学者来说就更好了







__________________
你是谁?
Linux,Sir!
  Linuxfish 当前离线   回复时引用此帖
旧 04-09-01, 18:14 第 8 帖
hanzixing
 
 
 
注册会员  
  注册日期: Dec 2003
  帖子: 353
  精华: 1
 

Thanks
  hanzixing 当前离线   回复时引用此帖
旧 04-09-02, 18:51 第 9 帖
aking
 
 
 
注册会员  
  注册日期: Dec 2003
  帖子: 59
  精华: 1
 

有一点不明白,为什么在发邮件的时候用procmail过滤,收邮件的时候反而不过滤?
  aking 当前离线   回复时引用此帖
旧 04-09-02, 19:39 第 10 帖
原始人
 
原始人 的头像
 
 
注册会员  
  注册日期: Jun 2003
  我的住址: 原始人的山洞洞
  帖子: 149
  精华: 0
 

procmail只是一个mail delivery agent







__________________
刀耕火种, 钻木取火
  原始人 当前离线   回复时引用此帖
旧 04-09-02, 20:13 第 11 帖
fylzd
 
fylzd 的头像
 
 
注册会员  
  注册日期: Jun 2004
  我的住址: 北京-中关村
  帖子: 159
  精华: 0
 

我按你的步骤一步一步做下来,可是还是不行阿,出错信息如下

1寄送讯息出现错误,子程序已结束 69 (Service unavailable.)。
MTP server problem Invalid SMTP syntax in server response
Connected to MTA
Disconnected to MTA


能否告诉我一下出错的原因阿。谢了!
  fylzd 当前离线   回复时引用此帖
旧 04-09-02, 20:51 第 12 帖
fylzd
 
fylzd 的头像
 
 
注册会员  
  注册日期: Jun 2004
  我的住址: 北京-中关村
  帖子: 159
  精华: 0
 

好了,是端口错了。呵呵,谢了
  fylzd 当前离线   回复时引用此帖
旧 04-09-02, 21:15 第 13 帖
AMD-K6
 
AMD-K6 的头像
 
 
版主  
  注册日期: Aug 2003
  我的住址: 杭州
  帖子: 1,984
  精华: 21
 

引用:
最初由 原始人 发表
procmail只是一个mail delivery agent
Srroy 有点口误,说实话我对于 procmail 还是不怎么的了解 :(

哪位兄弟有相关的教程? :o
  AMD-K6 当前离线   回复时引用此帖
旧 04-09-02, 21:33 第 14 帖
dato
 
dato 的头像
 
 
注册会员  
  注册日期: Mar 2003
  帖子: 1,846
  精华: 7
 

有没有直接本地发送SMTP,不需依赖外部的SMTP服务器
又不需像sendmail那么庞大的SMTP发送软件。







__________________
[url]http://dato.ys168.com/[/url]
闲时记得来这里添砖加瓦
wiki.mambochina.net
一晃好几年过去了,一个长不大的孩子。
  dato 当前离线   回复时引用此帖
旧 04-09-02, 22:08 第 15 帖
redspider
 
redspider 的头像
 
 
注册会员  
  注册日期: Dec 2002
  我的住址: China
  帖子: 994
  精华: 0
 

help,我用源码包安装好后,发送mail的时候提示缺少libesmtp.so.5文件,我在libesmtp的网页上没找到,怎么解决
  redspider 当前离线   回复时引用此帖
发表新主题 回复


主题工具

发帖规则
您 [不可以] 发表新主题
您 [不可以] 回复主题
您 [不可以] 上传附件
您 [不可以] 编辑您的帖子

已 [启用] BB 代码
已 [启用] 表情符号
已 [启用] IMG 代码
已 [禁用] HTML 代码
[论坛跳转…]


所有时间均为[北京时间]。现在的时间是 12:05


Powered by vBulletin 版本 3.6.8
版权所有 ©2000 - 2010, Jelsoft Enterprises Ltd.
官方中文技术支持: vBulletin 中文
版权所有 ©2002 - 2009, LinuxSir.Org