文章分类 | 推荐文章 | 最新文章 | 热点文章 | 最新软件 | 精品软件 | 下载排行 | 推荐下载 | 免费看大片 | WPS | 杀毒软件
清风网络
首 页 软件下载 网络学院 数码学院
QQ 电脑入门 游戏 操作系统 图形处理 办公软件 媒体动画 精文荟萃 工具软件 网络编程 程序开发 网络技术 认证考试 网站建设 文章专栏
当前位置:清风网络学院工具软件电子邮件Qmail邮件队列工作原理
精品推荐
特别推荐
·CMailServer用户常见问题解答
·反垃圾:9个方法告别垃圾邮件
·JavaMail常见问题之安装和配置问题解答
·巧妙设置系统 轻松防治邮件病毒
·Yahoo电子邮箱最新玩酷技巧!
·Foxmail初级技巧应用解答
·如何设置认证SMTP邮件服务器
·带你认识什么是POP邮件服务器
·我的隐私你别动:机密邮件玩自焚
·十种方法!轻松让垃圾邮件远离你
·教你绕过Foxmail帐户口令进入邮箱
·自己电脑做smtp服务器不求人
·轻松让你远离垃圾邮件的十种方法!
·Windows 2003邮件服务器配置指南(图)
·新手入门:企业邮箱及邮件服务器架设
·三步建立电子邮局
·管理我们的邮件队列(图)
·Foxmail Server 实用操作手册
·使用E-mail的99条技巧
·忘了Foxmail帐户访问密码的七种解决办法
热点TOP10
·自己电脑做smtp服务器不求人
·用客户端软件收发Hotmail Yahoo邮件
·Outlook Express使用技巧大全(上)
·自己电脑做SMTP服务器不求人
·如何让Yahoo的邮箱支持POP3以及SMTP收发!!
·在.NET 应用程序中用System.Web.Mail 发送电子邮件
·带你认识什么是POP邮件服务器
·巧妙突破大容量邮箱附件大小限制
·邮箱密码破解EmailCrack使用
·Outlook Express使用技巧大全之提高篇
·Exchange 服务器中的配置RPC OVER HTTP全过程
·如何设置认证SMTP邮件服务器
·Windows 2003邮件服务器配置指南(图)
·邮件安全防护:全面剖析E-mail收发失败原因
·如何更改雅虎邮箱的密码
·Windows Live Mail:超强邮件管理工具
·使用UTF-8编码/JMail组件发送邮件乱码问题
·用邮件客户端从本地收取Hotmail邮件
·比较雅虎、网易、搜狐邮箱
·您不可不知的Exchange Server 2003备份

Qmail邮件队列工作原理

日期:2007年7月23日 作者: 查看:[大字体 中字体 小字体]


1.概述

以下是qmail的数据流简图

qmail-smtpd --- >>qmail-queue --->> qmail-send <<--- qmail-rspawn <<--- qmail-    remote

/  

qmail-inject _/ qmail-clean \_ qmail-lspawn <<--- qmail-local

qmail中,每一条消息都发送到中央队列等待发送,由qmail-queue进程控制。它在以下情况被调用:

1、当产生本地消息时,qmail-inject进程调用qmail-queue。

2、qmail-smtpd准备SMTP协议下的投递邮件任务时调用它。

3、向前(forwarded)发送邮件时,qmail-local调用它。

4、退回邮件时,qmail-send调用它。

每封邮件接着由qmail-lspawn 和qmail-rspawn协助qmail-sned进程完成投递,最后由qmail-clean清除邮件队列。这四个进程是系统由始至终都在运行的,十分重要。

qmail的队列被设计成很强的鲁棒性,并假定基础的文件系统也是强健的。所有的cleanups清除队列操作都由qmail-send独立控制,无须人为干预。详细请看第六部分。

2. 队列结构

队列里的每条消息都由唯一的号码标识,假定某条消息是的标识码是457。队列被组织成几个目录,每个目录都可能包含和这条消息相关的文件:

mess/457: 消息正文

todo/457: 信封: 消息的来源地址和目的地址。实际是指向intd/457的链接。

intd/457: 信封,由qmail-queue生成。

info/457: 信封上的发送者地址,预处理后生成。

local/457: 本地接受地址,预处理后生成。

remote/457: 远程接受地址,预处理后生成。

bounce/457: 传输错误信息。

以下是一条消息所有可能的状态。“+”号表示该目录下文件存在,“-”表示该目录下文件不存在,“?”表示未知。

S1. -mess -intd -todo -info -local -remote -bounce

S2. +mess -intd -todo -info -local -remote -bounce

S3. +mess +intd -todo -info -local -remote -bounce

S4. +mess ?intd +todo ?info ?local ?remote -bounce (queued,表示已经进入队列)

S5. +mess -intd -todo +info ?local ?remote ?bounce (preprocessed,表示已通过预处理)

重点:如果消息457存在,那么它也对应一个inode结点号457。

3. 消息如何进入队列?

添加一条消息到队列里,qmail-queue首先创建一个单独的目录,命名为 pid/。然后在这个目录下为这条消息创建一个独立文件。文件系统为这个文件分配唯一的标识,暂时记做457。qmail-queue监视这个文件标识,并保证这条消息进入状态S1。

qmail-queue接着把pid/ 更名为mess/457,进入状态S2。然后写一些相关的信息到mess/457目录下,创建目录intd/457,进入状态S3,并在intd/457下写入相关的信封信息。

最后,qmail-queue创建一个指向 intd/457 的链接 :todo/457 ,进入状态S4。到此为止,这条消息已经被处理到队列中,等待qmail-send的处理。

qmail-queue在处理任何文件之前,会启动一个24小时的超时记时器。一旦等待处理超过24小时,qmail-queue将中止当前进程。

4. 队列中的消息如何预处理

一旦消息进入等待队列,qmail-send必须判断哪些是要投递给本地接收者,哪些是要投递给远程接收者。它也有可能重写某些接受者地址。

当qmail-send检测到 todo/457 目录,得知消息457处于状态S4。于是,它先删除已经存在的(假如)info/457, local/457 和 remote/457目录。然后读取整个todo/457目录,生成 info/457 、 local/457 或者 remote/457 目录。完成这些操作后,删除 intd/457目录。这时,该条消息仍然处于S4状态。最后,qmail-send删除 todo/457 目录,进入S5状态。到此为止,这条消息已成功的完成预处理。

5. 预处理后,消息如何被投递。

处在S5状态的消息将被做如下处理。每个 local/457 和 remote/457 目录下的邮件地址将被标记NOT DONE 或 DONE:

DONE: 表示该消息已经被成功投递,或者是投递时遇到了永久性错误。这时,qmail-send将会停止对该消息所示的地址继续进行投递任务。

NOT DONE:如果已经有投递任务在尝试,该标记表示投递人物遇到暂时性错误。这种情况下,qmail-send会随后继续尝试投递。

[1] [2] 下一页 




上一篇:iPlanet Messaging Server安装图解(1)

下一篇:Postfix邮件服务器快速指南

Qmail邮件队列工作原理 相关文章:
·Excel密码保护的解除方法与解除原理
·socket编程原理
·Telnet高级入侵攻略及原理
·用客户端软件收发Hotmail Yahoo邮件
·网管工作总结--我的网管生活经历
·QQ密码被盗之谜1:本地破解的奥秘原理和方法
·QQ密码本地破解的原理和方法
·在.NET 应用程序中用System.Web.Mail 发送电子邮件
·带你认识什么是POP邮件服务器
·巧用Excel函数来实现工作表间的数据关联
Qmail邮件队列工作原理 相关软件:
·豪杰音乐工作室V1.1 Build 0602
·工作流管理系统 V1.1
·手机的原理与维修
·精通.Net核心技术原理与构架
·同济大学-通信原理视频教程 wmv 68集,查看
·同济大学.现代通信原理与技术
·VolleyMail邮件群发专家V8.8
·工作日志范文
·阿达邮件特工XPV3.98
·慧琦网通--邮件先知--垃圾邮件猎杀者V5.0

特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
[打印本页] [关闭窗口] 转载请注明来源:http://www.viphot.com
| 帮助(?) | 版权声明 | 友情连接 | 关于我们 | 信息发布
Copyright 2007 www.viphot.com All Rights Reserved. 鄂ICP备05000083号Powered by:viphot