分享
 
 
 

vpopmail 虚拟域与.qmail...文件

王朝other·作者佚名  2006-12-16
窄屏简体版  字體: |||超大  

1、介绍

vpopmail是qmail的一个非常重要的扩展软件包,它是由Inter7公司[http://www.inter.com]开发的,主要针对qmail本身支持虚拟邮件域,但是配置和用户管理非常复杂和麻烦而设计的。它的特点是实现了qmail所有的用户帐号只使用操作系统的一个用户帐号,所有的的vpopmail相关的进程都以一个GID/UID来运行,让邮件系统的帐户和操作系统的用户分离,提高了邮件系统的安全性。它支持基于域名和IP地址的虚拟邮件域,每个虚拟邮件域之间互相独立,通过使用平衡树填充的技术,vpopmail可支持2300万个虚拟邮件域,每个虚拟邮件域可支持2300万个邮件帐户。Vpopmail还支持LDAP、Oracle、Sybase、Mysql、PostgreSQL等用户认证信息存储方式,使得建立和维护百万级用户的大型邮件系统很方便的实现。

2、实现虚拟域的原理

qmail对邮件域有本地(local)和虚拟(virtual)的概念。本地域是实现匹配/etc/passwd系统帐号,而虚拟域则匹配在qmail的配置文件virtualdomains中的各个域。Vpopmail利用qmail的users/assign和 virtualdomains文件。users/assign文件被编译成users/cdb的格式,它利用一个哈系数据库来加快查找速度,若任意一个模式得到匹配,qmail就使用文件中定义的uid和gid传送该邮件到文件中定义的目录。Vpopmail利用该方法实现使qmail以单一的 vpopmail/vchkpw身份来传输用户所有的虚拟域的邮件,从而实现了将邮件传输到~vpopmail/domains/< virtualdomain>目录下的不同用户。

对于qmail来说,qmail-local程序一旦从users/assign得到相关的信息,则其运行标准的.qmail文件操作。一般来说,.qmail-<user>文件被用来完成邮件的转发、别名、或者调用其他程序如ezmlm等。若没有找到匹配,则qmail -local查找.qmail-default文件,这是qmail-local邮件投递机制中的最后一步,qmail利用该文件激活 vedlivermail程序,该程序以两个参数被调用,第一个当前没有作用,主要使用来向后兼容的,第二个参数使用来在一个虚拟域用户没有被找到时缺省投递,一般来说,缺省投递可以时将邮件投递到某个目录或者某个邮件地址返回没有此用户的返回信件。

3. .qmail-文件

传送用户邮件通常是由一个或者几个 ".qmail"(发音 dot kyoo mail) 文件控制的. 这些文件位于用户的主目录, 文件名由 .qmail 开头. .qmail 的man 手册页面描述了 .qmail 文件使用方法.

.qmail 文件包括了一个传送指令清单, 每行一个指令. 每行的第一个字符决定了选择那种传送方式.

字符

传送类型

#

无 (注释)

忽略

|

程序

由shell 执行的命令

/ 或者 .

mbox邮箱格式 (如果路径最后一个字符不是一个斜杠)

mbox 的路径名 (包括斜杠"/"或者 点".")

/ 或者 .

maildir邮箱格式 (如果路径最后一个字符是一个反斜杠)

maildir 的路径名 (包括斜杠"/"或者 点".")

&

转发

转发邮件的地址

字母或者数字

转发

转发邮件的地址 (包括第一个字符)

程序传送

如果指令是由程序传送, qmail 启动一个 shell (/bin/sh) 来执行这个命令, 然后把邮件的一个副本从标准输入传送给这个命令.

程序传送是非常强大的, 被用来实现的功能范围非常广阔, 例如邮件过滤, 自动回复, 以及通过第三方传送代理比如procmail来传送邮件.

例如:

|preline /usr/ucb/vacation djb

这个指令操作qmail 启动preline, 将 /usr/ucb/vacation 和 djb 作为参数传送给 preline, 并且在标准输入传送邮件的副本给这个命令.

(1). mbox 格式邮箱的邮件投递

mbox 是标准的UNIX邮箱格式, 多个邮件存放在一个独立文件内, 每个邮件由一个"From" 的行开始. 这一行看起来像一个标题字段, 不过那不是标题, 那仅仅是传送代理添加的, 便于邮件读出器可以找到每个邮件开始部分的一个标记.

例如:

./Mailbox

这个设置表示邮件将被追加到 $HOME/Mailbox 文件上, 每个邮件由"From"引领. 一个存放了一个单独邮件的简单的mbox 的邮箱看起来是下面这个样子的:

From user1@example.net Thu May 13 18:34:50 1999

Received: (qmail 1287205 invoked from network); 13 May 1999 18:34:49 -0000

From: user1@example.net

To: user2@example.com

Subject: hey

What's up?

第一行是 qmail 传送邮件时添加的.

(2). maildir 格式邮箱的邮件投递

maildir 是 Dan Bernstein 为了表明 mbox 邮箱格式的缺陷而创造的格式. 一个 maildir 邮箱包含三个子目录, new, cur, 和 tmp. 在各个子目录下的每个邮件根据状态的不同分别存储在各个子目录下独立的文件中. 未读邮件存储在new中, cur存储已读邮件, tmp 是为那些正在传送过程中的邮件使用的. maildir 的man手册页详细描述了maildir格式的细节.

maildir 格式的优点之一就是保证邮件传输的安全, 即使在不锁定情况下, 不同邮件代理同时更新邮件, 也能保证传输的可靠. 这意味着maildir 邮箱可以安全的建立在以NFS性质挂接的文件系统上.

例如:

./Maildir/

这个设置表示将把邮件存储在 $HOME/Maildir 下面的 maildir 格式的邮箱.

注意: qmail-local 可以将邮件传送到 maildir 格式邮箱, 但是不能创建这种邮箱. 你需要使用qmail 附带的maildirmake 程序来创建 maildir 格式邮箱. 例如: "maildirmake ~/Maildir". 不过要确定你使用maildir的拥有者运行maildirmake, 而不是 root 用户. 另外的方式, 你的 useradd 和 adduser 命令可能支持"skeleton"骨架目录, 例如: /etc/skel, 然后可以直接复制这个目录给所有新用户.

(3). 转发邮件

转发邮件就是将邮件重发到指定地址. 由.qmail文件内的命令不能包含注释部分和多余的空格.

下面的写法是错的:

&<user@example.com>

& user@example.com

&Joe User <user@example.com>

下面的是正确的写法:

&user@example.com

user@example.com

&user

前两个将邮件副本转发给 user@example.com, 最后一个将邮件副本转发给本地用户 user.

(4). 扩展地址

qmail 支持用户控制扩展地址. 在基本地址 username@hostname.domain 上扩展的扩展地址为: username-extension@hostname.domain ,用户同样可以接收发往扩展地址的邮件. 在本节其余部分, 我们讨论的范围都是在本地系统上, 所以我们将不再使用"@hostname.domain" 部分.

给用户 username 的邮件传送指令由 ~username/.qmail 文件指定. 对于型如username-extension 的扩展地址的传送指令由用户目录下的~username/.qmail-extension 文件指定.

举一个例子, dave-lwq@sparge.example.com 这个扩展地址的传送将由文件 ~dave/.qmail-lwq 来控制.

扩展地址可以拥有多个字段, 例如 dave-list-qmail 这个扩展地址, 由 ~dave/.qmail-list-qmail 来控制. 在这个例子里面, dave-list-qmai 这个地址被用来订阅 qmail 的邮件列表, ~dave/.qmail-list-qmail 则负责归档这个列表的邮件到单独的邮箱里面.

.qmail 文件可以用-default 后缀进行匹配。 所以 dave-list-qmail 可以由 ~dave/.qmail-list-default 操作. 这个文件可以一对多方式用一个.qmail文件控制所有型如 dave-list-加上任何后缀的地址. 注意 dave-list 不能由 ~dave/.qmail-list-default 控制, 因为在"list"后面没有"-".

qmail 会使用最接近的匹配方式. 例如, qmail在传送一个标志着送给dave-list-qmail这个地址的邮件时, 会按照下面顺序查找.qmail控制文件, 并按照最先匹配的.qmail文件传送这个邮件.

.qmail-list-qmail

.qmail-list-default

.qmail-default

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有