分享
 
 
 

qmail+vpopmail+MySQL+igenus+RedHat 7下建立邮件系统

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

由于提供Web和E-mail服务对稳定性和性能要求特别高,因此一般都使用Unix作为服务器的操作系统,例如,Hotmail使用FreeBSD和Solaris,国内163等站点也是BSD系列。然而,Unix的标准E-mail系统也不适合用做这种大容量服务,考虑到性能因素,单台服务器支持的用户数量最好不要超过10万。 为了具有支持更多用户的可扩展性,并考虑到安全性、性能及可管理性,一般采用非Unix系统用户来作为E-mail用户。而保存用户数据通常采用支持网络访问的数据库形式,一般常用的有LDAP、标准数据库,以及E-mail系统自己实现的用户数据库。其中,LDAP由于是提供目录服务的标准,因此应该为最佳的选择,其常用的开放源代码实现为OpenLDAP。而标准数据库由于实现方便、可扩展性强,因此在Internet上最常用的为MySQL。此外,也有使用其它方式的实现。

本文就以qmail+vpopmail+MySQL+igenus为基本构架,来介绍一下Webmail的构建方法,希望对正在构建、或正准备构建自己的企业邮件服务器的用户能有所帮助。本文中所构建的邮件服务器具有SMTP身份认证功能、ETRN等扩展功能,对于一般的邮件系统应用已经足够。

本文档针对SolarisR8、RedHat 7而写,并且已经正确测试通过,稍加变通可适用于FreeBsd和其他Unix操作系统。使用该文档您基本上照搬即可,可以改动的笔者基本都做了说明。安装步骤

安装平台:Solaris 8 for x86 / (redhat 7.2)

安装的机器:mail.ccbtc.com

软件包详细清单略,文件皆在/home文件夹。

安装qmail

首先创建qmail安装目录,添加qmail必需的用户和组。经过解压、解包和编译后,安装补丁包,将qmail目录下,的qmail-smtp.c拷贝到qmail-smtpd-auth-0.26目录下然后对该文件进行补丁处理。

然后将qmail-smtpd.c 拷贝到qmail 的源文件目录里,编译qmail软件包。进入qmail目录后,仔细阅读一下README和INSTALL文件,然后开始编译qmail。

之后进行配置:

#./config-fast mail.ccbtc.com

(mail.ccbtc.com是您的邮件服务器主机名)

建立系统别名,可以在这些别名文件中指定管理用户来接受这些系统邮件,如:

#echo'admin'/var/qmail/alias/.qmail*

建立启动文件和用户的maildir,编辑/var/qmail/rc,修改其中./Mailbox成为./Maildir以支持maildir的pop收信方式,如下:

#!/bin/sh

#Usingsploggertosendthelogthroughsyslog.

#Usingqmail-localtodelivermessagesto~/Maildirbydefault.

execenv-PATH="/var/qmail/bin:$PATH"qmail-start./Maildirsploggerqmail

其中sploggerqmail指令是用来将日志文件记录在/中。

安装ucspi-tcp-0.88、daemontools和vpopmail

ucspi-tcp-0.88的执行文件被安装在/usr/local/bin中;daemontools的执行文件安装于/usr/local/bin中。安装daemontools工具后可以用

#mkdir/var/run/qmail

#supervise/var/run/qmail/var/qmail/rc

来启动qmail,还可以用svc来关闭或重启qmail,用svstat监视qmail运行情况,或者直接启动qmail:

/var/qmail/rc %26amp;

然后安装vpopmail。安装完毕之后,添加域用户:

#./vadduser test@ccbtc.com passwd

具体命令的使用方法请参阅vpopmail手册。

停止Sendmail服务,以qmail的Sendmail libraby取代原有Sendmail

#pkillsendmail

#mv/usr/lib/sendmail/usr/lib/sendmail.old

#mv/usr/sbin/sendmail/usr/sbin/sendmail.old

#ln-s/var/qmail/bin/sendmail/usr/lib/sendmail

#ln-s/var/qmail/sbin/sendmail/usr/sbin/sendmail

移除Sendmail启动程序,以Linux为例,移除inetd.conf中的sendmail之设定,以及/etc/rc.d/init.d下的Sendmail启动文件。

启动qmailSMTP,POP3daemon系统服务

一、建立SMTP转信规则

建立/home/vpopmail/etc/tcp.smtp,

:allow,RELAYCLIENT=""

此为接受任何Client端所发出子转送信件。

若要拒绝某些IP所发出的Relay,则修改/etc/tcp.smtp如下:

127.:allow,RELAYCLIENT=""

本文因支持身份认证功能所以采用以下规则:

127.0.0.1:allow,RELAYCLIENT=""

#echo 127.0.0.1:allow,RELAYCLIENT="" /home/vpopmail/etc/tcp.smtp

二、转换tcp.smtp成为cdb格式

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

注意,若对tcp.smtp有任何变更,都必须经过tcprules转换成为cdb文件才会生效。另外,tcp.smtp若为空白,则表示拒绝所有的转送,因为预设的规则为deny。

至此,转送规则已建立,稍后将依此规则启动qmail-smtpd。

三、设置/home/vpopmail/bin/vchkpw的SetUID和SetGID

这点很重要,否则认证无法通过,这是因为smtpd 的进程是由qmaild 执行的。而密码验证程序原来只使用于POP3进程,分别由root或vpopmail执行,为的是读shadow或数据库中的密码,并取出用户的邮件目录。这些操作qmaild 都没有权限去做。如果SMTP进程要调用密码验证程序,则必须要使用setuid和setgid。其实这点大可放心,这两个密码验证程序都是带源代码的,本身非常安全,只需要放在安全的目录里就可以了。设置其他用户,除qmaild可执行外,都没有权限执行。其实如果没有其它SHELL帐户,也就不用这么麻烦了。

#chmod 4755 /home/vpopmail/bin/vchkpw

#chmod 755 /home/vpopmail/bin

四、设定SMTP及POP3 daemon的启动

移除inetd.conf中有关SMTP及POP3的设定(加上#号),编辑/etc/services,改为以下设定:

smtp 25/tcp

pop3 110/tcp

pop3 110/udp

启动SMTP:

/usr/local/bin/tcpserver-v-x/etc/tcp.smtp.cdb-u UID-gGID0smtp/var/qmail/bin/qmail-smtpd/home/vpopmail/bin/vchpkw /usr/bin/true /bin/cmd5checkpw /usr/bin/true %26amp;|/var/qmail/bin/sploggersmtpd3%26amp;

其中UID和GID为前述新增qmail系统账号qmaild的User ID,以及nofiles的group ID。

/var/qmail/bin/splogger那一行会将log文件写在/var/log/maillog中。

启动POP3,编辑启动档加入以下设定:

tcpserver-H -R0pop3/var/qmail/bin/qmail-popupmail.ccbtc.com/home/vpopmail/bin/vchkpw/var/qmail/bin/qmail-pop3dMaildir%26amp;

qmailAdmin的安装

首先安装ezmlm和autorespond,然后即可安装qmailAdmin。安装前首先要考虑满足以下几项要求:

是否拥有一个vpopmail用户vchkpw

◆ cgi-bin目录的所在位置;

◆ ezmlm目录的所在位置;

◆ autorespond目录的所在位置;

◆ 如果能够达到以上要求,可以继续安装。

检测安装是否正确,可以在浏览器中打开路径http://mail.ccbtc.com/cgi-bin/qmailadmin,看根据前面设置的用户和密码是否能够成功登录进去。

WebMail的安装

一、MySQL的安装

Solaris x86安装pkg包,因为Solaris系统平台编译MySQL有问题,笔者一直无法编译通过,所以采用pkg安装。

二、安装imap的PHP模块

#gzip -d c-client.tar.Z

#tar xf c-client.tar

#cd imap-2002

#make gso SSLTYPE=none

#cp c-client/c-client.a /usr/local/lib/libc-client.a

#cp c-client/rfc822.h mail.h linkage.h /usr/local/include

make gso表示在Solaris系统上安装imap,不同的系统有不同的参数,可以通过more Makefile 找到关于您Unix系统相应的参数,例如:RedHat的参数为lrh。

三、安装PHP模块

如果您以前安装PHP的时候没有采用以模块的方式安装php(--with-apxs),那您只好连Apache一起重新安装,由于笔者以前安装PHP的时候采用模块化的安装,所以没有对Apache进行任何改动。

然后进入PHP解压后的目录,重新编译PHP模块:

#./configure -prefix=/usr/php4 --with-apxs=/usr/apache/bin/apx with-imap=/home/imap-2002 -with-mysql=/usr/local/mysql

#make

#make install

将/usr/php/lib中的php.ini文件修改如下:

[php]

register_globals=on

重新启动Apache使修改生效。

四、igenus的安装

igenus是一个国内制作的Webmail,省去了我们还要对国外Webmail进行翻译的麻烦。

将解压后的Snap目录放入Web浏览的目录下面,如/home/snap。

在/home目录建立临时目录,然后修改以下部分:

$CFG_BASEPATH = "/home/snap"; -是iGNEUS webmail安装在系统的路径

$CFG_MYSQL_HOST = 'localhost';

$CFG_MYSQL_USER = 'root';

$CFG_MYSQL_PASS = 'yyyyy';

$CFG_MYSQL_DB = 'vpopmail'

$CFG_HOSTNAME = "http://mail.ccbtc.com";

$CFG_LANGUAGE = gb

$CFG_GMT = +8;

$CFG_TEMP = $CFG_BASEPATH."./temp";确保浏览的目录和temp的目录在同一路径。

然后修改默认登录域的设置。编辑login.php文件:

ccbtc.com--默认登录域

test.com --其它域名。

将运行apache的用户和组修改为vpopmail、vchkpw,重新启动Apache,浏览http://mail.ccbtc.com 就可以出现如图1和图2的页面:

图1

图2

构建ETRN支持

ETRN是一个通知ESMTP服务传送邮件队列的命令,通常用于到ISP的拨号连接和备份邮件服务器,当一个远端客户发送一个ETRN命令时,队列中远端客户的消息会被发送给客户,ETRN是TURN命令的一个扩展版本,加上了安全特性。TURN命令被用作启动远端计算上队列中消息的传送。但是,TURN有一个安全问题,因为没有远端主机名的校验。ETURN提供了远端主机名的校验,这样,除了专门接收消息的那一台主机以外,其他都不能接收消息,并且,ETRN并不是发起的连接上传输信息,而是,重新启动一个新的连接进行数据传输,即使,有人伪装客户主机发出ETRN命令,系统也会连接到正确的目标主机进行信息交换,从而,保证了信息的安全性。

qmail本身是不支持ETRN功能的,但是我们可以提供一种方法来欺骗qmail系统,使得系统可以正确应答客户端所发出的ETRN命令,并进行正确的信息交换。

ETRN的运行条件

客户端必须有有效的主机字符串(DNS主机名)或有效的静态IP地址(假设为1.2.3.4)和正确的DNS解析纪录(如域 mydomain.com):

mydomain.com mx 10 mail.ccbtc.com

serialmail的安装及配置

一、建立邮件缓冲区

#mkdir /var/qmail/autoturn

#chgrp qmail /var/qmail/autoturn

#chmod 2755 /var/qmail/autoturn

二、设置本地接收用户

将此行"+autoturn-:qmaild:7770:2108:/var/qmail/autoturn:-::"导入到/var/qmail/user/assign,用您的qmaild用户的ID替代7770,nofiles组的gid替代2108,并且运行:

#../bin/qmail-newu

至此,autoturn用户应该已经生效。

三、将您需要使用ETRN功能的域名导入

/var/qmail/control/rcpthosts 如mydomain.com:

#echo mydomain.com /var/qmail/control/rcpthosts

四、设置默认转发

#echo mydomain.com:autoturn-1.2.3.4 /var/qmail/control/virtualdomains

将发送到mydomain.com的信件全部转发给本地的autoturn用户,1.2.3.4区分ETRN用户。

五、设置maildir邮件投递规则

# cd /var/qmail/autoturn

# maildirmake 1.2.3.4

# chown -R qmaild 1.2.3.4

# echo ./1.2.3.4/ .qmail-1:2:3:4-default

# chmod 644 .qmail-1:2:3:4-default

确认以上步骤设置成功,qmail系统会根据远程客户的IP地址及其本地的maildir投递规则,将邮件转发到相应的maildir信箱。如需设置多域名的ETRN功能,重复以上步骤即可。

启动方式

用以下字符串替代 /var/qmail/bin/qmail-smtpd即可。

sh -c '

/var/qmail/bin/qmail-smtpd

cd /var/qmail/autoturn

exec setlock -nx $TCPREMOTEIP/seriallock maildirsmtp $TCPREMOTEIP autoturn-$TCPREMOTEIP- $TCPREMOTEIP AutoTURN

至此您的qmail已安装完毕,希望您能看见您的qmail!

,

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