免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1983 | 回复: 9
打印 上一主题 下一主题

[Mail] [讨论]邮件系统的QUEUE实现 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-12-01 23:31 |只看该作者 |倒序浏览
hi,all

最近对邮件技术有点兴趣,但是我有点不明白邮件系统是怎么实现MESSAGE QUEUE的
当MTA收到邮件之后,他们是怎么处理邮件,最后把他们发送出去的?

这是我从QMAIL那里看来的:
MTA的DAEMON进程收到邮件后,调用另一个进程来QUEUE MESSAGE,之后QUEUE进程又调用另一个进程来发送MESSAGE.
原文在http://www.chinaunix.net/jh/14/66068.html

那么其他的MTA系统都是这样实现的吗? 每收到一封邮件就开启一个进程,这样不是很耗资源吗?
我看了QMAIL,SENDMAIL的源码,但是因为太复杂,我还看不明白

哪位高手能现身解说一下,先谢过了

论坛徽章:
62
2016科比退役纪念章
日期:2016-06-28 17:45:06奥兰多魔术
日期:2015-05-04 22:47:40菠菜神灯
日期:2015-05-04 22:35:07菠菜神灯
日期:2015-05-04 22:35:02NBA季后赛大富翁
日期:2015-05-04 22:33:34NBA常规赛纪念章
日期:2015-05-04 22:32:032015年亚洲杯纪念徽章
日期:2015-04-14 16:54:452015年亚洲杯之朝鲜
日期:2015-03-19 23:03:16明尼苏达森林狼
日期:2015-03-16 21:51:152015小元宵徽章
日期:2015-03-06 15:57:202015年迎新春徽章
日期:2015-03-04 09:55:282015年辞旧岁徽章
日期:2015-03-03 16:54:15
2 [报告]
发表于 2004-12-02 11:06 |只看该作者

[讨论]邮件系统的QUEUE实现

原帖由 "ltcstyle" 发表:
hi,all

最近对邮件技术有点兴趣,但是我有点不明白邮件系统是怎么实现MESSAGE QUEUE的
当MTA收到邮件之后,他们是怎么处理邮件,最后把他们发送出去的?

这是我从QMAIL那里看来的:
MTA的DAEMON进程收到邮件后,调..........


多开几个进程不浪费什么
电脑闲着也是闲着

论坛徽章:
0
3 [报告]
发表于 2004-12-02 13:41 |只看该作者

[讨论]邮件系统的QUEUE实现

对于qmail简单说,
qmail-smtpd接收邮件,
调用qmail-queue将邮件放入QUEUE.
QMAIL-SEND从queue中取邮件分析,
再给qmail-lspawn, and/or qmail-rspawn发命令,
他俩再分别启动qmail-local and/or qmail-remote
将邮件发到目的地。

具体的分析是十分复杂的,尤其是qmail-send进程。
希望对你有帮助。

论坛徽章:
0
4 [报告]
发表于 2004-12-02 22:27 |只看该作者

[讨论]邮件系统的QUEUE实现

原帖由 "北京野狼" 发表:


多开几个进程不浪费什么
电脑闲着也是闲着


但是如果是大型的服务器,1小时估计就要处理100万条邮件. 那么就是说在这1小时内,开多了2*10000000个进程.
我想这样不是一个很好的解决方案吧?

如果把它放在一个进程里面,只是开启线程来处理或许会更好吧?你们觉得呢?

论坛徽章:
0
5 [报告]
发表于 2004-12-02 22:33 |只看该作者

[讨论]邮件系统的QUEUE实现

原帖由 "思一克" 发表:
对于qmail简单说,
qmail-smtpd接收邮件,
调用qmail-queue将邮件放入QUEUE.
QMAIL-SEND从queue中取邮件分析,
再给qmail-lspawn, and/or qmail-rspawn发命令,
他俩再分别启动qmail-local and/or qmail-remote..........


其实我准备开发一套小型的MTA,但是我很不解QMAIL和SENDMAIL为什么要分开线程来处理QUEUE.

再问一个问题,QMAIL是怎么用QUEUE来处理优先等级的?
当QMAIL收到邮件之后把它放在QUEUE-BOX文件夹
那么QMAIL-SEND是不是在一个无限循环里面等待QUEUE-BOX的文件?
当他监测到邮件就开始分析,分发给qmail-lspawn, and/or qmail-rspawn!?
是不是这样的?

论坛徽章:
0
6 [报告]
发表于 2004-12-02 23:29 |只看该作者

[讨论]邮件系统的QUEUE实现

原帖由 "ltcstyle" 发表:


其实我准备开发一套小型的MTA,但是我很不解QMAIL和SENDMAIL为什么要分开线程来处理QUEUE.

再问一个问题,QMAIL是怎么用QUEUE来处理优先等级的?
当QMAIL收到邮件之后把它放在QUEUE-BOX文件夹
那么QMAIL-SEND是..........



既然要开发mta,为什么不先阅读一下RFC及相关的原理?其实相关原理网上很多,有个站还有qmail的流程图,很详细的。。这些问题似乎已经是太公开了吧?

建议还是多在google找找资料。当然,多数是英文的。

论坛徽章:
62
2016科比退役纪念章
日期:2016-06-28 17:45:06奥兰多魔术
日期:2015-05-04 22:47:40菠菜神灯
日期:2015-05-04 22:35:07菠菜神灯
日期:2015-05-04 22:35:02NBA季后赛大富翁
日期:2015-05-04 22:33:34NBA常规赛纪念章
日期:2015-05-04 22:32:032015年亚洲杯纪念徽章
日期:2015-04-14 16:54:452015年亚洲杯之朝鲜
日期:2015-03-19 23:03:16明尼苏达森林狼
日期:2015-03-16 21:51:152015小元宵徽章
日期:2015-03-06 15:57:202015年迎新春徽章
日期:2015-03-04 09:55:282015年辞旧岁徽章
日期:2015-03-03 16:54:15
7 [报告]
发表于 2004-12-02 23:36 |只看该作者

[讨论]邮件系统的QUEUE实现

原帖由 "ltcstyle" 发表:


但是如果是大型的服务器,1小时估计就要处理100万条邮件. 那么就是说在这1小时内,开多了2*10000000个进程.
我想这样不是一个很好的解决方案吧?

如果把它放在一个进程里面,只是开启线程来处理或许会更好吧?你们..........


如果你完全是个人兴趣开发什么都可以,否则自己开发MTA毫无意义
所有的东西都是成熟的。

大型的邮件首先肯定不是一台机器,而且即便
1小时内,开多了2*10000000个进程——实际系统做的比这个还多的多
没有问题。邮件都是文件操作,开启线程反而更加麻烦

论坛徽章:
0
8 [报告]
发表于 2004-12-03 07:55 |只看该作者

[讨论]邮件系统的QUEUE实现

首先很感谢大家的回复  
我只是在GOOGLE上没找到想要的资料,所以才来这里问的, 你说的那个网站我很久以前看过,但是之后又找不到了.而且我有点不理解为什么他们要这么实现.

为什么说开启线程更加麻烦呢?能详细说说为什么吗?谢谢了

再次感谢你们的回复.
regards

论坛徽章:
0
9 [报告]
发表于 2004-12-03 09:05 |只看该作者

[讨论]邮件系统的QUEUE实现

qmail queue好象没有邮件的优先等级。FIFO而已。

分进程的优点太多了----尤其对于QUEUE。

论坛徽章:
0
10 [报告]
发表于 2004-12-03 15:31 |只看该作者

[讨论]邮件系统的QUEUE实现

哦?没有优先等级吗?我还以为MTA都应该有优先等级分发邮件呢
如果是FIFO,那么QMAIL的 SENDMAIL是单线程吗?每次只处理一封一件?
还是多线程?好像我没有看到有设置发送线程的数量

思一克, 能说说优势有些什么吗?

我又找到那个QMAIL的流程图解了,就在QMAIL的主页,但是我还是不解,他们也没有介绍为什么要分开这么多进程来处理
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP