2012年2月23日星期四

qmail对虚拟域用户的处理过程

qmail对域的管理分为两种,一种为本地域,一种为虚拟域。本地域指的是系统用户,虚拟域可以通过手工单独创建,更快捷的方式是通过vpopmail进行管理。如果将信投递给虚拟域用户,qmail处理如下:

假定service.com是一个定义在virtualdomain文件中的虚拟域,该文件包含如下一行
service.com:service.com
qmail收到发给用户user@service.com的信件后首先检查service.com是否存在于locals文件中(service.com是否本地域?),结果不存在,qmail继续检查user@service.com是否在virtualdomains中(user@service.com是否作为一个单独的用户不与service.com域有关?),结果仍然不存在,qmail继续检查service.com是否存在于virtualdomains中,结果是存在的。qmail将user@service.com转化为service.com-user@service.com进行投递。
投递的具体方式定义在assign文件中,assign文件中包含如下的一行:
+service.com-:service.com:89:89:/disk2/vpopmail/domains/service.com:-::
+service.com-定义了匹配service.com-为前缀的邮件,将会以service.com这个用户进行传送,service.com这个用户的uid和gid都是89,/disk2/vpopmail/domains/service.com则定义了用户service.com所在的目录。而最后两个域则定义了.qmail文件实际为.qmail-。
qmail检查service.com-user这个用户是否存在,结果失败,然后qmail继续检查是否存在service.com这个用户,根据对assign文件的说明,可知目前系统存在这个用户,且这个用户的uid和gid都是89,是非0的,用户service.com的家目录/disk2/vpopmail/domains/service.com的uid和gid也都为89。因此把信件交给service.com处理。
service.com用户检查/disk2/vpopmail/domains/service.com是否存在.qmail-user文件,如果失败,那么直接采用.qmail-default文件定义的方式进行处理。

没有评论:

发表评论