实验名称:Qmail邮件系统搭建
实验环境:红帽子企业Linux5.4
这个实验相对来说比较复杂、也比较麻烦、希望在实验过程正要细心!!!!!!!!
只要严格按照下面步骤来做、一般不会出问题、
所需软件:
netqmail-1.05.tar.gz-- (不用说应该知道干什么的了吧!)
ucspi-tcp-0.88.tar.gz-- 一个inetd超级服务器的替换程序
daemontools-0.76.tar.gz-- 一个管理后台服务程序以及日志的工具套件
*checkpassword-0.90.tar.gz-- POP3 服务模块化的密码检查
第一步:先搭建好dns 域名为mail.li.com ip为15.15.15.15
现在dns已经搭建好了
第二步:正式搭建qmail系统
挂载Qmail镜像
把所需软件拷贝到/usr/local/src目录中
创建目录
把daemontools移动到/package目录中
并赋予权限
解压
注意qmail安装程序会自行创建需要的子目录, 你只需要创建qmail的"home"目录:
最容易的创建用户和组的方式是创建一个小脚本文件然后执行它. 在源代码目录下你可以找到一个名字是INSTALL.ids的文件, 它包括了在你的系统平台下创建用户和组的命令行. 复制这个文件并命名另外一个名字, 编辑它来运行命令既快捷又简单.
修改IDS成为下图的样子
修改完后保存并给其赋予可执行权限
然后执行IDS
随后编辑vi /etc/passwd 修改为/true
编译软件
结束
如果你的DNS配置恰当, 运行这个脚本:要实现下面的效果可真要注意了、要注意本机的dns是否填写正确、主机全名、
打上补丁
结束
结束
运行 qmail:
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`"
里面的代码要怎么往里面添加呢?看步骤
里面的代码都在镜像里面的Qmail.txt中,用dos2unix将Qmail.txt转换、然后在Qmail.txt中将需要的代码复制到需要的文件中
打开mail.txt
进去后找到需要的代码然后复制
找到了
输入:set nu回车 显示行数,随后输入:116,.y回车意思就是从116行到当前鼠标的位置复制 ¥符是代表末尾 d删除
然后输入:e /var/qmail/rc 意思就是创建文件/var/qmail/rc
进去后按P粘贴
去掉多余行、、以后就不写说明了
如果你手动执行/varqmail/rc 脚本, qmail只会部分被运行起来. 可是我们希望希望每次系统启动后, qmail都能自动被启动; 每次系统停止时候qmail自动被关闭。创建一个如下的 /var/qmail/bin/qmailctl 文件可以完成这个愿望:
vi /var/qmail/bin/qmailctl
内容如下:
#!/bin/sh
# description: the qmail MTA
PATH=/var/qmail/bin:/bin:/usr/bin:/usr/local/bin:/usr/local/sbin
export PATH
QMAILDUID=`id -u qmaild`
NOFILESGID=`id -g qmaild`
case "$1" in
start)
echo "Starting qmail"
if svok /service/qmail-send ; then
svc -u /service/qmail-send /service/qmail-send/log
else
echo "qmail-send supervise not running"
fi
if svok /service/qmail-smtpd ; then
svc -u /service/qmail-smtpd /service/qmail-smtpd/log
else
echo "qmail-smtpd supervise not running"
fi
if [ -d /var/lock/subsys ]; then
touch /var/lock/subsys/qmail
fi
;;
stop)
echo "Stopping qmail..."
echo " qmail-smtpd"
svc -d /service/qmail-smtpd /service/qmail-smtpd/log
echo " qmail-send"
svc -d /service/qmail-send /service/qmail-send/log
if [ -f /var/lock/subsys/qmail ]; then
rm /var/lock/subsys/qmail
fi
;;
stat)
svstat /service/qmail-send
svstat /service/qmail-send/log
svstat /service/qmail-smtpd
svstat /service/qmail-smtpd/log
qmail-qstat
;;
doqueue|alrm|flush)
echo "Flushing timeout table and sending ALRM signal to qmail-send."
/var/qmail/bin/qmail-tcpok
svc -a /service/qmail-send
;;
queue)
qmail-qstat
qmail-qread
;;
reload|hup)
echo "Sending HUP signal to qmail-send."
svc -h /service/qmail-send
;;
pause)
echo "Pausing qmail-send"
svc -p /service/qmail-send
echo "Pausing qmail-smtpd"
svc -p /service/qmail-smtpd
;;
cont)
echo "Continuing qmail-send"
svc -c /service/qmail-send
echo "Continuing qmail-smtpd"
svc -c /service/qmail-smtpd
;;
restart)
echo "Restarting qmail:"
echo "* Stopping qmail-smtpd."
svc -d /service/qmail-smtpd /service/qmail-smtpd/log
echo "* Sending qmail-send SIGTERM and restarting."
svc -t /service/qmail-send /service/qmail-send/log
echo "* Restarting qmail-smtpd."
svc -u /service/qmail-smtpd /service/qmail-smtpd/log
;;
cdb)
tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp
chmod 644 /etc/tcp.smtp.cdb
echo "Reloaded /etc/tcp.smtp."
;;
help)
cat <<HELP
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 -- schedules queued messages for immediate delivery
reload -- sends qmail-send HUP, rereading locals and virtualdomains
queue -- shows status of queue
alrm -- same as doqueue
flush -- same as doqueue
hup -- same as reload
HELP
;;
*)
echo "Usage: $0 {start|stop|restart|doqueue|flush|reload|stat|pause|cont|cdb|queue|help}"
exit 1
;;
esac
exit 0
现在就是在mail.txt中找到这些代码然后创建文件复制进去
然后保存退出
将上面这个qmailctl 脚本设置为可执行脚本, 然后链接到你的用户执行程序目录:
chmod 755 /var/qmail/bin/qmailctl
ln -s /var/qmail/bin/qmailctl /usr/bin
建立supervise 脚本:
为 qmail 的服务创建 supervise 目录:
建立 /var/qmail/supervise/qmail-send/run 文件:
vi /var/qmail/supervise/qmail-send/run
内容如下:
#!/bin/sh
exec /var/qmail/rc
保存退出
建立 /var/qmail/supervise/qmail-send/log/run 文件:
vi /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 文件:
vi /var/qmail/supervise/qmail-smtpd/run
内容如下:
#!/bin/sh
QMAILDUID=`id -u qmaild`
NOFILESGID=`id -g qmaild`
MAXSMTPD=`cat /var/qmail/control/concurrencyincoming`
LOCAL=`head -1 /var/qmail/control/me`
if [ -z "$QMAILDUID" -o -z "$NOFILESGID" -o -z "$MAXSMTPD" -o -z "$LOCAL" ]; then
echo QMAILDUID, NOFILESGID, MAXSMTPD, or LOCAL is unset in
echo /var/qmail/supervise/qmail-smtpd/run
exit 1
fi
if [ ! -f /var/qmail/control/rcpthosts ]; then
echo "No /var/qmail/control/rcpthosts!"
echo "Refusing to start SMTP listener because it'll create an open relay"
exit 1
fi
exec /usr/local/bin/softlimit -m 2000000 \
/usr/local/bin/tcpserver -v -R -l "$LOCAL" -x /etc/tcp.smtp.cdb -c "$MAXSMTPD" \
-u "$QMAILDUID" -g "$NOFILESGID" 0 smtp /var/qmail/bin/qmail-smtpd 2>&1
保存退出
建立concurrencyincoming 控制文件.
建立 /var/qmail/supervise/qmail-smtpd/log/run 文件:
vi /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文件设置为可执行文件:
然后建立log文件目录:
最后, 建立 supervise 目录到 /service 目录的链接:
(注:/service 目录是 daemontools 安装时建立的目录.)
注意: 建立这个链接之后 qmail 系统会很快自动被启动起来,
如果你还不想立刻运行qmail, 运行下面这个,命令来停止qmail:
qmailctl stop
SMTP 访问控制:
允许本地主机通过SMTP方式发送邮件:
为用户建立自己的Maildir格式信箱:
现在系统中有yang个li用户、现在li给yang发邮件
然后再yang的根目录上查看邮件
发送成功、、、、、、
下来是安装pop3功能
创建一个/var/qmail/supervise/qmail-pop3d/run 脚本,
vi /var/qmail/supervise/qmail-pop3d/run
包括如下内容:
#!/bin/sh
exec /usr/local/bin/softlimit -m 2000000 \
/usr/local/bin/tcpserver -v -R -H -l 0 0 110 /var/qmail/bin/qmail-popup \
FQDN /bin/checkpassword /var/qmail/bin/qmail-pop3d Maildir 2>&1
(FQDN 是你建立的POP服务器的完整的有资格的正式域名)
保存退出
创建包括以下内容的/var/qmail/supervise/qmail-pop3d/log/run 文件.
vi /var/qmail/supervise/qmail-pop3d/log/run
包括如下内容:
#!/bin/sh
exec /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog t /var/log/qmail/pop3d
保存退出
建立log日志文件夹并且设置相应的run脚本, 将脚本链接到 /service 目录:
将下面内容加入qmailctl脚本的"start"部分
if svok /service/qmail-pop3d ; then
svc -u /service/qmail-pop3d /service/qmail-pop3d/log
else
echo qmail-pop3d supervise not running
fi
保存退出
将下面内容加入qmailctl脚本的"stop"部分
echo " qmail-pop3d"
svc -d /service/qmail-pop3d /service/qmail-pop3d/log
将下面内容加入qmailctl脚本的"stat"部分
svstat /service/qmail-pop3d
svstat /service/qmail-pop3d/log
将下面内容加入qmailctl脚本的"pause"部分
echo "Pausing qmail-pop3d"
svc -p /service/qmail-pop3d
将下面内容加入qmailctl脚本的"cont"部分
echo "Continuing qmail-pop3d"
svc -c /service/qmail-pop3d
将下面内容加入qmailctl脚本的"restart"部分
echo "* Restarting qmail-pop3d."
svc -t /service/qmail-pop3d /service/qmail-pop3d/log
保存退出,全部修改完成
在windows客户端发邮件测试
给yang发送一封邮件
然后用yang登录、查看li给自己发的邮件
接收成功