Linux 版 (精华区)

发信人: wugang (网络之狼·不学则光), 信区: Linux
标  题: Qmail 安装 
发信站: 哈工大紫丁香 (2000年12月22日00:38:49 星期五), 站内信件

发布者:netbull 阅读次数:490  


Written by hefish@cn99.com 
version 0.01 

1、条件 
我们拥有: 
* 一个顶级的域名:czlib.net; 
* 一台运行RedHat Linux 6.1的服务器,主机名mail.czlib.net。 

2、目标 
我们的要求: 
* 将mail.czlib.net作为邮件服务器; 
* 实现类似user@czlib.net的邮件地址; 
* 将邮件账号和系统账号分离开,以便于管理。 

3、构想 
* 使用qmail来架设邮件服务器; 
* 用vpopmail来实现邮件账号和系统账号的分离。 

4、实现 
4.1 DNS的配置 
这不是本文所着重的部分,所以不会深入去讲。首先在DNS服务器上,将 
mail.czlib.net指向正确的IP地址;然后在czlib.net域添加一条MX纪录, 
将czlib.net域的邮件服务器设置为mail.czlib.net。然后重启DNS,运行 
nslookup命令: 
[root@mail /root]# nslookup 
Default Server: dns.czlib.net 
Address: 61.132.98.126 

> set querytype=MX 
> czlib.net 
Server: dns.czlib.net 
Address: 61.132.98.126 

czlib.net preference = 20, mail exchanger = mail.czlib.net 
mail.czlib.net internet address = 61.132.98.122 

能看到类似mail exchanger的信息,就说明DNS配置完毕了。 

4.2 工具的安装 
在安装qmail之前,我们需要安装一些运行qmail所必须的工具程序。这些程序包括
: 
* rblsmtpd-0.70.tar.gz 
* ucspi-tcp-0.84.tar.gz 
* daemontools-0.53.tar.gz 

安装这些工具并不麻烦,只需将他们解开后,make一下就可以了。下面了安装纪录
: 
# tar zxvf rblsmtpd-0.70.tar.gz 
# cd rblsmtpd-0.70 
# make 
# make setup check 
(这将把rblsmtpd-0.70安装到/usr/local/bin下) 
# tar zxvf ucspi-tcp-0.84.tar.gz 
# cd ucspi-tcp-0.84 
# make 
# make setup check 
(这将把ucspi-tcp-0.84安装到/usr/local/bin下) 
# tar zxvf daemontools-0.53.tar.gz 
# cd daemontools-0.53 
# make 
# make setup check 
(这将把daemontools-0.53安装到/usr/local/bin下) 
注意,尽管这些工具都有了新版本,但可能 

4.3 qmail的安装 
4.3.1 建立qmail的目录 
首先保证/var下有足够的空间, 
#mkdir /var/qmail 

4.3.2 添加必要的用户 
# groupadd nofiles 
# useradd alias -g nofiles -d /var/qmail/alias -s /nonexistent 
# useradd qmaild -g nofiles -d /var/qmail -s /nonexistent 
# useradd qmaill -g nofiles -d /var/qmail -s /nonexistent 
# useradd qmailp -g nofiles -d /var/qmail -s /nonexistent 
# groupadd qmail 
# useradd qmailq -g qmail -d /var/qmail -s /nonexistent 
# useradd qmailr -g qmail -d /var/qmail -s /nonexistent 
# useradd qmails -g qmail -d /var/qmail -s /nonexistent 

4.3.3 编译qmail 
# tar zxvf qmail-1.03.tar.gz 
# cd qmail-1.03 
# make setup check 

4.3.4 初步配置qmail 
# cd qmail-1.03 
# ./config 
如果你的DNS没有问题,这一步不会有什么问题,如果通不过,而且您认为你的 
DNS没有问题的话,可以试试下面的命令: 
# ./config-fast mail.czlib.net 
(实际使用时,用你的机器名来替换mail.czlib.net) 

4.3.5 安装qmail的别名 
qmail至少需要3个别名,一个是系统管理员也就是root,另两个是postmaster 
和mailer-daemon,后两个是qmail的管理员。我们需要把这三个别名转向到具体的
 
人那儿。 
# cd ~alias 
# echo hefish > .qmail-root 
# echo hefish > .qmail-postmaster 
# echo hefish > .qmail-mailer-daemon 
这里我把这三个别名都指向我本人。你可以根据实际情况设置。 

4.3.6 设置qmail的启动文件 
# echo ./Maildir/ > /var/qmail/control/defaultdelivery 
然后在/var/qmail/下建立一个rc文件,内容如下: 

#!/bin/sh 

# Using stdout for logging 
# Using control/defaultdelivery from qmail-local to deliver 
# messages by default 

exec env - PATH="/var/qmail/bin:$PATH" \ 
qmail-start "`cat /var/qmail/control/defaultdelivery`" accustamp 

然后修改/var/qmail/rc的属性,使之变为可执行。 
# chmod +x /var/qmail/rc 

4.3.7 停止Sendmail服务器 
很可能你安装RedHat Linux的时候安装并启动了Sendmail,这时候我们需要把 
它终止。当然如果你没有运行Sendmail,就可以跳过这一步。 
# killall -TERM sendmail 
# 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/bin/sendmail /usr/sbin/sendmail 

4.3.8 建立qmail的控制脚本 
#!/bin/sh 

PATH=/var/qmail/bin:/bin:/usr/bin:/usr/local/sbin:/usr/local/bin 
export PATH 

QMAILDUID=`id -u qmaild` 
NOFILESGID=`id -g qmaild` 

case "$1" in 
start) 
echo -n "Starting qmail: qmail-send" 
supervise /var/supervise/qmail/send /var/qmail/rc | 
setuser qmaill cyclog /var/log/qmail & 

echo -n " qmail-smtpd" 
supervise /var/supervise/qmail/smtpd tcpserver -v -x/etc/tcp.smtp.cdb 

-u$QMAILDUID -g$NOFILESGID 0 smtp \ 
/var/qmail/bin/qmail-smtpd 2>&1 | setuser qmaill accustamp | \ 
setuser qmaill cyclog /var/log/qmail/smtpd & 

echo "." 
;; 
stop) 
echo -n "Stopping qmail: qmail-smtpd" 
svc -dx /var/supervise/qmail/smtpd 
echo -n " qmail-send" 
svc -dx /var/supervise/qmail/send 
echo "." 
;; 
stat) 
echo "Checking qmail-send" 
svstat /var/supervise/qmail/send 
echo "Checking qmail-smtpd" 
svstat /var/supervise/qmail/smtpd 
echo "Checking queue" 
qmail-qstat 
;; 
doqueue|alrm) 
echo "Sending ALRM signal to qmail-send." 
svc -a /var/supervise/qmail/send 
;; 
queue) 
qmail-qstat 
qmail-qread 
;; 
reload|hup) 
echo "Sending HUP signal to qmail-send." 
svc -h /var/supervise/qmail/send 
;; 
pause) 
echo "Pausing qmail-send" 
svc -p /var/supervise/qmail/send 
echo "Pausing qmail-smtpd" 
svc -p /var/supervise/qmail/smtpd 
;; 
cont) 
echo "Continuing qmail-send" 
svc -c /var/supervise/qmail/send 
echo "Continuing qmail-smtpd" 
svc -c /var/supervise/qmail/smtpd 
;; 
restart) 
echo "Restarting qmail:" 
echo "* Stopping qmail-smtpd." 
svc -d /var/supervise/qmail/smtpd 
echo "* Sending qmail-send SIGTERM and restarting." 
svc -t /var/supervise/qmail/send 
echo "* Restarting qmail-smtpd." 
svc -u /var/supervise/qmail/smtpd 
;; 
cdb) 
tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp 
chmod 644 /etc/tcp.smtp* 
echo "Reloaded /etc/tcp.smtp." 
;; 
help) 
cat < stop -- stops mail service (smtp connections refused, nothing goes
 out) 
start -- starts mail service (smtp connection accepted, mail can go out)
 
pause -- temporarily stops mail service (connections accepted, nothing 
leaves) 
cont -- continues paused mail service 
stat -- displays status of mail service 
cdb -- rebuild the tcpserver cdb file for smtp 
restart -- stops and restarts smtp, sends qmail-send a TERM & restarts 
it 
doqueue -- sends qmail-send ALRM, scheduling queued messages for 
delivery 
reload -- sends qmail-send HUP, rereading locals and virtualdomains 
queue -- shows status of queue 
alrm -- same as doqueue 
hup -- same as reload 
HELP 
;; 
*) 
echo "Usage: $0 
{start|stop|restart|doqueue|reload|stat|pause|cont|cdb|queue|help}" 
exit 1 
;; 
esac 

exit 0 

4.3.9 建立日志目录 
# mkdir -p /var/log/qmail/smtpd 
# chown qmaill /var/log/qmail /var/log/qmail/smtpd 

4.3.10 建立supervise目录 
# mkdir -p /var/supervise/qmail/send 
# mkdir /var/supervise/qmail/smtpd 

4.3.11 使控制脚本能运行 
# chmod 755 /etc/rc.d/init.d/qmail 
# ln -s /etc/rc.d/init.d/qmail /usr/local/sbin 

4.3.12 修改/etc/tcp.smtp 
在我们启动qmail的smtp服务之前,我们需要做一些访问控制,最简单的方法是 
使用/etc/目录下的一些文件,我使用/etc/tcp.smtp。最简单的例子是只包含一行
 
内容: 
:allow 
它的意思是不允许允许任何机器通过它来发送邮件。为了让内部用户可以使用它 

来发送邮件。我们必须把/etc/tcp.smtp编辑成这样: 
127.0.0.1:allow,RELAYCLIENT="" 
192.168.0.:allow,RELAYCLIENT="" 
:allow 
我们内部的网络是192.168.0.0,如果你的内部网络不是192.168.0.0,请改成 
相应的。 
要想知道更多的访问控制,你可以使用man tcprules,来阅读它的使用手册。 
然后我们需要让这个访问控制的规则生效, 
# /usr/local/sbin/qmail cdb 

4.3.13 启动qmail 
启动qmail 已经是很容易的事情了,只要简单的使用/usr/local/sbin/qmail命 
令,就可以实现。 
# /usr/local/sbin/qmail start 

4.4 安装vpopmail 
vpopmail可以实现系统账号和邮件账号的分离。 

4.4.1 建立必须的用户和组 
vpopmail必须使用自己的用户和组来安装。 
首先保证/home目录有足够的空间。 
# groupadd vchkpw 
# useradd -g vchkpw vpopmail -d /home/vpopmail 

4.4.2 设置tcp.smtp文件 
# echo "127.0.0.:allow,RELAYCLIENT=\"\"" > ~vpopmail/etc/tcp.smtp 

4.4.3 编译,安装 
首先,确保自己不是root,然后将vpopmail-4.9解压缩,编译。 
$ tar zxvf vpopmail-4.9.tar.gz 
$ cd vpopmail-4.9 
$ ./configure --enable-default-domain=czlib.net 
$ make 
$ su 
# make install-strip 
这里因为我需要实现user@czlib.net的邮件地址,所以我设置了默认的域, 
具体你使用的时候只要改成你自己的域就可以了。 

4.4.4 建立虚拟域 
# cd /home/vpopmail/bin 
# ./vadddomain czlib.net <---增加czlib.net域 
系统会提醒你输入这个域的管理员的密码。然后程序会修改下面一些必要的qmail
配置文件 
来使得qmail能支持这个新的域: 
* /var/qmail/control/locals 
* /var/qmail/control/rcpthosts 
* /var/qmail/control/morercpthosts (如果rcpthosts文件超过了50行) 
* /var/qmail/control/virtualdomains 
* /var/qmail/users/assign 
* /var/qmail/users/cdb 

4.4.5 增加/删除用户/改变用户密码 
* 增加用户 
# cd /home/vpopmail/bin 
# ./vadduser hefish@czlib.net 
系统会提示输入密码 
* 删除用户 
# cd /home/vpopmail/bin 
# ./deluser hefish@czlib.net 
* 改变用户密码 
# cd /home/vpopmail/bin 
# ./vpasswd hefish@czlib.net 

4.4.6 设置POP3服务 
设置pop3服务需要用到qmail中的qmail-popup,qmail-pop3d和vpopmail的vchkpw
程序。 
我们使用下面的脚本来启动pop3服务: 
#! /bin/bash 

# Start qmail-pop3d daemon 
/usr/local/bin/tcpserver 0 110 /var/qmail/bin/qmail-popup mail.czlib.net
 \ 
/home/vpopmail/bin/vchkpw /var/qmail/bin/qmail-pop3d Maildir & 

我们把这个脚本存为文件/etc/rc.d/rc.pop3,并且使用chmod命令使之可以执行。
 

4.5 最后的配置 
把启动qmail和pop3服务的代码放到启动文件中,让机器每次启动的时候自动运行
。把下面几行命 
令写到/etc/rc.d/rc.local文件的末尾: 
# Start qmail smtpd 
/usr/local/sbin/qmail start 

# Start POP3 Service 
/etc/rc.d/rc.pop3 

现在确保你的inetd.conf里面有关pop3的一行已经被注释掉。然后就使用
/etc/rc.d/rc.pop3 
命令来启动POP3服务器。 
至此整个过程结束,从别的地方发一封信到hefish@czlib.net,看看能不能收到?
GOOD LUCK! 

5 参考文献 
* Life with qmail 
* vpopmail INSTALL 

 

--
             .                       *            .      .                     
       .              .    Go 天竺 !         .                                 
          ★               +++++++++            .              *               
              .                              .                                 
       *           ▁▂▃▄▅▆▇█▇▇▆▅▄▃▂▁▂▃▄▅▆▇█▇▇▆▅▄▃  
▁▂▃▄▅▆▇█▇▇▆▅▄▃▂▁▁▂▃▄▅▆▇█▇▇▆▅▄▃▂▂▃▄▅▆▃▂              Go!  天竺  @>>--,--'--- http://beauty.hit.edu.cn 

※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: 202.118.224.66]
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:207.319毫秒