分享
 
 
 

qmail邮件系统(4)ucspi-tcp的原理和设置

王朝other·作者佚名  2008-05-18
窄屏简体版  字體: |||超大  

(四)ucspi-tcp的原理和设置。

作者:peng

论坛ID:peng www.chinaunix.net

QQ: 螃蟹 16360544

Qmail的开发者dan Bernstein 开发了ucspi-tcp(UNIX客户-服务器程序端口)包来取代inetd程序。Ucspi格式定义了一种程序来交换数据的方法,主要体现出三个优点:

1、 ucspi端口独立于底层的通讯介质。

2、 ucspi允许shell脚本程序利用网络的互联。

3、 ucspi程序建立了unix环境变量,这些变量定义了可以被程序和用户使用的网络信息。

Ucspi-tcp使用称为tool的程序在应用程序之间建立连接。有两种类型的ucspi tool ---客户tool(tcpclient)和服务器tool(tcpserver)。

Ucspi-tcp的tcpserver程序就是替代unix的inetd程序的,有如下优点:

1、他能够把来自服务器端的所有输入和输出都记到一个文件中。

2、他能提供访问控制特征,拒绝或者允许来自客户端的连接。

3、它包含了并发限制,防止使unix系统过载。

Tcpserver程序通过使用管理员配置的一个hash规则库提供对访问的控制。

Tcpserver 命令行的格式是:

tcpserver options host port application

host和prot参数制定了将要运行应用程序的本地服务器的主机名和端口号。Host参数可以是localhos、主机ip address、或者是主机的完整域名。Port参数可以是一个数字或者是/etc/services文件中的一个tcp端口的名字,例如:smtp。 Application是连接建立后要传输给的应用程序。

Options参数定义了tcpserver程序的行为。有三种类型的选项:

常规选项------定义用于ucspi tool的选项。

连接选项-----处理到达的连接请求。

数据收集选项-----如何获得在传给应用程序的unix环境变量中使用信息。

Tcpserver连接选项(1)

---------------------------------------------------------------------------

选项 描述

-------------------------------------------------------------------------

-b n 允许n个连接请求的存储

-B banner 在连接建立后将banner写到网络连接上

-c n 不接受多于n个同时连接

-d 当主机相应较慢时延迟向远程主机发送数据

-D 从不延迟向远程主机发送数据

-g gid 当接受连接准备完成后改变活动组ID为gid

-l 打印本地端口号到stdout

-o 在连接的分组中不改变ip选项

-u uid 当接受连接准备完成后改变活动用户ID为uid

-O 删除ip选项为分组寻找路径

-U 相当于-g $GID –u UID

-x db 使用hash数据库db中的规则来接受或拒绝远程客户端的访问

-X 当由-x选项指定的数据库不存在时允许连接

-------------------------------------------------------------------

tcpserver程序可以使用的数据收集选项(2)

----------------------------------------------------------------

选项 描述

--------------------------------------------------------------------

-h 使用dns查找远程主机

-H 不使用dns查找远程主机名。你必须对端口53使用此选项

-l localhost 不使用dns查找本地服务器主机名,而使用localhost

-p 怀疑。使用反向dns 查找远程主机ip地址,将其与主机名相比较。如果不匹配,删除环境变量$tcpremotehost

-r 试图从远程主机获得$tcpremoteinfi (默认)

-R 不试图从远程主机获得$tcpremoteinfo数据。你必须为端口53和端口113使用这一选项

-t n 在n秒之后停止试图连接到$tcpremoteinfo数据。默认26

------------------------------------------------------------------------------

有几个unix环境变量tcpserver试图为其接受数据。这些环境变量帮助应用程序处理有关的网络间接信息。

Tcpserver的unix环境变量(3)

------------------------------------------------------------------------------

变量 描述

----------------------------------------------------------------------------

$PROTO 使用的协议(默认为TCP)

$TCPLOCALIP 本机的IP地址

$TCPLOCALPORT 本地TCP端口号

$TCPLOCALHOST 本地主机的DNS查询值

$TCPREMOTEIP 远程客户端的IP地址

$TCPREMOTEPROT 远程客户端的TCP端口号

$TCPREMOTEHOST 远程主机的DNS查询值

$TCPREMOTEINFO 远程客户端的用户名

------------------------------------------------------------------------------

当接受了一个远程客户端的连接,tcpserver就是图为应用程序提供环境变量,当他不能为一个特定的变量接受信息时,tcpserver不设置变量。

Tcprules程序

tcprules程序是创建可以限制与应用程序连接的规则。是手工创建规则,来制定接受和拒绝单个地址、多个ip地址、全部网络地址的访问。规则在一个文本中创建,每行一条规则。文本建立后,使用cdb数据库格式将其转变成一个hash数据库。这使得tcpserver程序能够在远程客户向服务器请求连接时动态处理规则。

规则以这样的格式创建:

address :action,varible

address是和到达连接的值相匹配的。此参数的几种格式都是基于表(3)环境变量的,可以使用这些变量的组合来创建有效的地址。下面列出了tcpserver能识别的不同地址:

tcpserver规则的地址格式

-----------------------------------------------------------------------------

地址 示例

------------------------------------------------------------------------------

$tcpremoteinfo@tcpremteip peng@[192.168.3.11]

$tcpremoteinfo@=$tcpremotehost peng@96633.net

$tcpremoteip 192.168.3.11

=$tcpremotehost mail.chinaunix.net

部分$tcpremoteip 192.168

部分$tcpremotehost chinaunix.net

空 任何地址

-------------------------------------------------------------------------------

action有两个选项:allow and deny。

除了动作以外,其他的以逗号分开的环境变量可以添加到action中,实现tcpserver在特定的远程客户连接请求时设置环境变量。这一特性可以实现选择转发等功能。

举几个例子吧:

---------------------------------------------------------------------------------

规则 描述

-------------------------------------------------------------------------------

192.168.0.1:deny 拒绝192.168.0.1的任何连接

192.168.3:allow 允许192.168.3.0上的客户任何连接

192.168.4.1-11:allow 允许192.168.4.1-192.168.44.11上的客户任何连接

:deny 拒绝任何连接

peng@chinaunix.net 允许peng@chinaunix.net 的连接

192.168.3:allow,RELAYCLIENT=” “ 接受192.168.3.0网络上的任何连接,设置环境变量RELAYCLIENT为空字符串。

-------------------------------------------------------------------------------------

本文建立SMTP转信规则[除本机外拒绝任何主机转发邮件,但不限制连接。]

#vi /etc/tcp.smtp

127.0.0.1:allow,RELAYCLIENT=""

:allow

建立完文本文件,就用tcprules命令生成库文件,格式如下:

tcprules database tmpfile

本文中是这样的:

# /usr/local/bin/tcprules /etc/qmail/tcp.smtp.cdb /etc/qmail/tcp.smtp.tmp

这样,就生成了/etc/qmail/tcp.smtp.cdb文件了。tcp.smtp.cd表示适用于tcp协议,专用于smtp

协议,文件是cdb数据库格式。

下一步,就是告诉tcpserver如何应用它,本文的如下启动smtp服务:

/usr/local/bin/tcpserver -H -R -l 0 -t 1 -c 100 -v -p -x

/etc/qmail/tcp.smtp.cdb -u QMAILDUID -g NOFILESGID 0 smtp

/usr/local/qmail/bin/qmail-smtpd /home/vpopmail/bin/vchkpw /usr/bin/true

| /usr/local/qmail/bin/splogger &

# /usr/local/qmail/bin/tcpserver -c 100 -v -l $_DOMAIN -U -H -R 0 pop3 /usr/local/qmail/bin/qmail-popup domain /home/vpopmail/bin/vchkpw /usr/local/qmail/bin/qmail-pop3d Maildir 2>&1 | /usr/local/qmail/bin/splogger &

相信看完以上的内容,应该能看懂本文的启动脚本了。当这里,ucspi-tcp的tcpserver就设制完成了。

关于本文挡的声明:

这份文档,是我参考了大量的网友的文章和书籍而写成的。自己经过反复安装和测试,均安装成功。但由于本人水平有限,文档难免有一些遗漏。如果你在安装的时候发现有什么地方有错误的话,请去www.chinaunix.net 的mail论坛讨论,我尽快回复的。

对于这片文档,网友可以任意转贴。但出于对作者的尊重,转贴时请注明作者姓名。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
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- 王朝網路 版權所有