当前位置:中国星空学习网首页>Linux/DOS>Linux配置>正文  
我的qmail安装历程

 

j30B0j30B0j30B0
我的qmail安装历程

最近公司要开展虚拟主机业务,需要在一台mail服务器上绑定多个域名,于是呢,就想到qmail这位老人家了,照ideal的方法有点问题,就只好去看老外的life with qmail了,hehe
现在大约讲讲我的安装过程:
如果系统运行着sendmail就要把sendmail的守护进程杀掉,然后抓了qmail1.03.tar.gz,ucspi-tcp-0.88.tar.gz,daemontools-0.70.tar.gz这三个包,把他们扔/usr/local/src下面解压开,然后要建一些必要的目录
cd qmail-1.03
mkdir /var/qmail
ln -s /usr/man /var/qmail/man
mkdir /etc/qmail
ln -s /etc/qmail /var/qmail/control
ln -s /usr/sbin /var/qmail/bin
接着建安装qmail需要的组和用户:
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
然后开始编译qmail:
make setup check
接着就配置域名了(这个需要你的机器域名能在dns上找到):
./config(如果确定域名没错,也可以用./config-fast hostname.domainname)
然后要编译ucspi-tcp:
进入刚才ucspi-tcp解开的目录,执行:
make
make setup check
接着编译daemontools,也是进入解压的目录,执行
make
make setup check
下来就开始写一些qmail执行必须的脚本了,先是
vi /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`"
最后
chmod 755 /var/qmail/rc
echo ./Maildir/ >/var/qmail/control/defaultdelivery(我用的是Maildir)
然后就是log文件了:
mkdir /var/log/qmail
mkdir -p /var/qmail/supervise/qmail-send/log
mkdir -p /var/qmail/supervise/qmail-smtpd/log
chmod +t /var/qmail/supervise/qmail-send
chmod +t /var/qmail/supervise/qmail-smtpd
建立/var/qmail/supervise/qmail-send/run文件,内容为:
#!/bin/sh
exec /var/qmail/rc
建立/var/qmail/supervise/qmail-send/log/run文件,内容为:
#!/bin/sh
exec /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog t /var/log/qmail
建立/var/qmail/supervise/qmail-smtpd/run文件,内容:
#!/bin/sh
QMAILDUID=`id -u qmaild`
NOFILESGID=`id -g qmaild`
MAXSMTPD=`cat /var/qmail/control/concurrencyincoming`
exec /usr/local/bin/softlimit -m 2000000
/usr/local/bin/tcpserver -v -p -x /etc/tcp.smtp.cdb
-c "$MAXSMTPD" -u "$QMAILDUID" -g "$NOFILESGID" 0 smtp /var/qmail/bin/qmail-smtpd 2>&1
建立/var/qmail/supervise/qmail-smtpd/log/run文件,内容:
#!/bin/sh
exec /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog t /var/log/qmail/smtpd
把以上四个run文件chmod 755
然后执行:
echo 20 > /var/qmail/control/concurrencyincoming
chmod 644 /var/qmail/control/concurrencyincoming
来建立qmail必须的concurrencyincoming文件
同时建立标准的log目录:
mkdir -p /var/log/qmail/smtpd
chown qmaill /var/log/qmail /var/log/qmail/smtpd
最关键的一步是建立qmail控制脚本,建立/etc/rc.d/init.d/qmail这个文件,内容:
脚本的HELP那块有些折行,尽量把他们弄一行.
#!/bin/sh

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

case "$1" in
start)
echo -n "Starting qmail: svscan"
cd /var/qmail/supervise
env - PATH="$PATH" svscan &
echo $! > /var/run/svscan.pid
echo "."
;;
stop)
echo -n "Stopping qmail: svscan"
kill `cat /var/run/svscan.pid`
echo -n " qmail"
svc -dx /var/qmail/supervise/*
echo -n " logging"
svc -dx /var/qmail/supervise/*/log
echo "."
;;
stat)
cd /var/qmail/supervise
svstat * */log
;;
doqueue|alrm)
echo "Sending ALRM signal to qmail-send."
svc -a /var/qmail/supervise/qmail-send
;;
queue)
qmail-qstat
qmail-qread
;;
reload|hup)
echo "Sending HUP signal to qmail-send."
svc -h /var/qmail/supervise/qmail-send
;;
pause)
echo "Pausing qmail-send"
svc -p /var/qmail/supervise/qmail-send
echo "Pausing qmail-smtpd"
svc -p /var/qmail/supervise/qmail-smtpd
;;
cont)
echo "Continuing qmail-send"
svc -c /var/qmail/supervise/qmail-send
echo "Continuing qmail-smtpd"
svc -c /var/qmail/supervise/qmail-smtpd
;;
restart)
echo "Restarting qmail:"
echo "* Stopping qmail-smtpd."
svc -d /var/qmail/supervise/qmail-smtpd
echo "* Sending qmail-send SIGTERM and restarting."
svc -t /var/qmail/supervise/qmail-send
echo "* Restarting qmail-smtpd."
svc -u /var/qmail/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 goesout)
start -- starts mail service (smtp connection accepted, mail cangoout)
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 fordelivery
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
然后建立软连接让各个启动级别能不同的需要使用qmail控制脚本
ln -s qmail /etc/rc.d/rc0.d/K30qmail
ln -s qmail /etc/rc.d/rc1.d/K30qmail
ln -s qmail /etc/rc.d/rc2.d/S80qmail
ln -s qmail /etc/rc.d/rc3.d/S80qmail
ln -s qmail /etc/rc.d/rc4.d/S80qmail
ln -s qmail /etc/rc.d/rc5.d/S80qmail
ln -s qmail /etc/rc.d/rc6.d/K30qmail
然后就要建立qmail的访问控制文件了,执行
echo ’127.:allow,RELAYCLIENT=""’ >>/etc/tcp.smtp
/etc/rc.d/init.d/qmail cdb
如果不要旧的sendmail就用rpm -e --nodeps sendmail反安装吧。
然后用qmail的一些库文件替换掉旧的sendmail:
mv /usr/lib/sendmail /usr/lib/sendmail.old
mv /usr/sbin/sendmail /usr/sbin/sendmail.old
chmod 0 /usr/lib/sendmail.old /usr/sbin/sendmail.old
ln -s /var/qmail/bin/sendmail /usr/lib
ln -s /var/qmail/bin/sendmail /usr/sbin
接着建立系统的一些alias(比如我要用grind来起qmail):
echo grind > /var/qmail/alias/.qmail-root
echo grind > /var/qmail/alias/.qmail-postmaster
ln -s .qmail-postmaster /var/qmail/alias/.qmail-mailer-daemon
chmod 644 /var/qmail/alias/.qmail-root
chmod 644 /var/qmail/alias/.qmailpostmaster
最后就能用/etc/rc.d/init.d/qmail start来启动qmail了。
接下去的绑定多域名就靠vpopmail来了,vpopmail能实现系统用户和邮件用户的分离,安装过程如下:
先建立vpopmail的用户和组:
groupadd vchkpw
useradd -g vchkpw vpopmail -d /home/vpopmail
然后建立访问控制文件:
设置tcp.smtp文件
echo "127.0.0.:allow,RELAYCLIENT=""" > ~vpopmail/etc/tcp.smtp
接着用非root用户解压vpopmail的压缩包:
$tar zxvf vpopmail-4.9.tar.gz
$cd vpopmail-4.9
$./configure --enable-default-domain=youdomainname
$make
$su
#make install-strip
接着建立虚拟域
#cd /home/vpopmail/bin
# ./vadddomain youdomain
系统会提醒你输入这个域的管理员的密码。然后程序会修改下面一些必要的qmail配置文件 来使得qmail能支持这个新的域:
/var/qmail/control/locals
/var/qmail/control/rcpthosts
/var/qmail/control/virtualdomains
/var/qmail/users/assign
/var/qmail/users/cdb
然后就可以增加/删除用户/改变用户密码
* 增加用户
# cd /home/vpopmail/bin
# ./vadduser grind@host.domain
系统会提示输入密码
* 删除用户
# cd /home/vpopmail/bin
# ./deluser grind@host.domain
* 改变用户密码
# cd /home/vpopmail/bin
# ./vpasswd grind@host.domain
设置vpopmail的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 yourhost.yourdomain /home/vpopmail/bin/vchkpw /var/qmail/bin/
qmail-pop3d Maildir &
我们把这个脚本存为文件/etc/rc.d/rc.pop3,并且使用chmod命令使之可以执行。
最后把启动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服务器。
这样一个qmail系统就7788了,可以用outlook等来收发信件了,千万记得用户名要是
user@host.domain的格式,而不是单单user的形式,不然不能用.
还有什么vqsignup,能用web方式注册用户,sqwebmail能用web方式收信,不过还不知道怎么用web方式让用户改自己的密码,这个希望有做过的同志交流交流。

 

上一篇: Linux下Apache、JServ的整合
下一篇: apache+php+mysql
站内公告
栏目导航
 Windows系统
 Linux/DOS
 办公应用
 工具软件
 图形图象
 网络应用
 安全防御
 网络编程
 软件教程
 实用技术
最新文章
中国星空图片网
·人体艺术
·性感美眉
·生活自拍
·幽默搞笑
·超级帅哥
·精彩万花筒
·梦幻景色
中国星空探索网
·神秘追踪 灵异接触
·鬼故事 灵异空间 图片
·未解之谜 探索宇宙
中国星空两性网
·两性图文 我的性事 情人 成人幽默
·性爱技巧 两性测试 性爱误区
·性事花边 生育避孕 性保健 性疾病
·两性生理 文化 讨论 心理 知识
·爱人同志 非常男女 一夜情
中国星空算网命
·手机吉凶 QQ号码吉凶 周公解梦
·塔罗牌测试 狗年运程
·关公灵签 紫薇斗数 八字排盘
·测试:你的成功指数有多少
·测验你的家庭是否美满?
·面相: 面型 眼睛 耳朵 口唇
·手相:拉你一把奶油桂花手
·测试:你能成为大富翁吗?
联系方式 设为首页
中国星空旗下---中国星空学习网    Copyright 2005-2050 Year   xx.happy369.com  Networks.All rights reserved
中国星空网所有内容均来源于网络,版权属于原作者,如侵犯到您的权益,请与我们联系,我们将尽快予以删除或处理。
中国星空不承担由于内容的合法性及健康性所引起的一切争议和法律责任。
陕ICP备05011765号 联系我们 
《女人如烟》--演唱:魏佳艺