看了许多安装文章,知说了怎么将二者安装到一起。但没有说明是如何工作的,现根据自己的理解举例说明
qmail+vpopmail的工作原理
############################################
rcpt to:john@fugui.cn其中fugui.cn是个虚拟域
qmail-smtpd ------->;检查rcpthosts文件。有fugui.cn的记录。收下信件。
放入-====mail queue--->;qmail-send查看fugui.cn是否在locals和virtuldomain中
。在virtualdomains中---fugui.cn:fugui.cn,用户john--转换-->;fugui.cn-john
-->;qmail-lspawn----
1、查看是否在qmail-users中有相关记录.YES
###+fugui.cn-:fugui.cn:89:89:/home/vpopmail/domains/fugui.cn:-::
2、是否存在fugui.cn-john用户 NO
3、是否fugui.cn这个用户存在 NO
现在依据qmail-users中的记录##qmail-local会把fugui.cn-john当作89用户处理。并查看/home/vpopmail/domains/fugui.cn中找.qmail-john。按照文件指示进行处理
当文件不存在就会寻找.qmail-default文件
.qmail-default:: /home/vpopmail/bin/vdelivermail '' bounce-no-mailbox
邮件会交给vdelivermail处理。该程序会通过其它程序在mysql中检查用户获得用户信息。
这里我有个问题.
2、是否存在fugui.cn-john用户 NO
这一步时,如果系统中存在fugui.cn-john@fugui.cn这个用户会怎么样呢?
我测试了一下.即使存在这样的用户,qmail还是会准确的投递到johe@fugui.cn这个用户目录里.
那是不是说qmail不做判断有没有fugui.cn-john这个用户,而是直接投递到johe@fugui.cn呢?
seacaptain 回复于:2003-11-03 09:14:32
是我写的不清楚。应该是这样的。
qmail-send 在virtualdomains文件中查找到fugui.cn:fugui.cn
邮件地址被改写为fugui.cn-joe@fugui.cn。
qmail-lspawn首先在qmail-users文件中寻找。如果找到+fugui.cn-.........
这一行。qmail就不在做后续的判断了。
所以也不会判断 是否存在fugui.cn-john用户 NO
artxing 回复于:2003-11-03 11:17:33
引用:原帖由 "seacaptain" 发表: 是我写的不清楚。应该是这样的。
qmail-send 在virtualdomains文件中查找到fugui.cn:fugui.cn
邮件地址被改写为fugui.cn-joe@fugui.cn。
qmail-lspawn首先在qmail-users文件中寻找。如果找到+fugui.cn-...................
多谢。你写的这些文章都很好。你多多写,我多多学,哈~
seacaptain 回复于:2003-11-03 11:56:51
多谢。写的不好。还的向老大多多学习
artxing 回复于:2003-11-03 12:22:47
引用:原帖由 "seacaptain"]多谢。写的不好。还的向老大多多学习 发表:
晕~我可是小弟.接触时间不长,正在学习中......
wangrujun 回复于:2003-12-28 22:25:53
以上的文章有一个非常重要的地方没有提到,这可能也会导致楼主分析的全面错误:
就是vpopmail和qmail的联合机制中,如果使用vpopmail 自己的认证方式,那么安装完成后的最后一步,是用 /home/vpopmail/bin/vqmaillocal,来代替qmail本身的/var/qmail/bin/qmail-local。具体请看vpopmail的readme。
如此一来,本地投递是由vpopmail来完成,因此这些分析都没有用了。小弟安装了qmail1.03+vpopmail5.2.2,结果总是能发信而收不到信,后来终于发现这个问题。
也希望版主将此贴和原贴合并到一起,加入精华,便于后人使用。
我查了mail版块,没有发现讨论过这个问题。可能牛人都是自己看readme安装,所以觉得是理所当然的吧。
|