实验名称: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邮件系统_第1张图片

第二步:正式搭建qmail系统

挂载Qmail镜像

Qmail邮件系统_第2张图片

把所需软件拷贝到/usr/local/src目录中

wps_clip_p_w_picpath-12349

wps_clip_p_w_picpath-12309

创建目录

wps_clip_p_w_picpath-4338

把daemontools移动到/package目录中

wps_clip_p_w_picpath-25883

并赋予权限

wps_clip_p_w_picpath-31888

解压

Qmail邮件系统_第3张图片

Qmail邮件系统_第4张图片wps_clip_p_w_picpath-25195Qmail邮件系统_第5张图片

wps_clip_p_w_picpath-28008Qmail邮件系统_第6张图片

注意qmail安装程序会自行创建需要的子目录, 你只需要创建qmail的"home"目录:wps_clip_p_w_picpath-28013

最容易的创建用户和组的方式是创建一个小脚本文件然后执行它. 在源代码目录下你可以找到一个名字是INSTALL.ids的文件, 它包括了在你的系统平台下创建用户和组的命令行. 复制这个文件并命名另外一个名字, 编辑它来运行命令既快捷又简单.

wps_clip_p_w_picpath-6844

修改IDS成为下图的样子

Qmail邮件系统_第7张图片

修改完后保存并给其赋予可执行权限

wps_clip_p_w_picpath-13379

然后执行IDS

Qmail邮件系统_第8张图片

随后编辑vi /etc/passwd   修改为/true

Qmail邮件系统_第9张图片

编译软件

wps_clip_p_w_picpath-3697

Qmail邮件系统_第10张图片

Qmail邮件系统_第11张图片

结束

如果你的DNS配置恰当, 运行这个脚本:要实现下面的效果可真要注意了、要注意本机的dns是否填写正确、主机全名、

Qmail邮件系统_第12张图片

打上补丁

wps_clip_p_w_picpath-12829

Qmail邮件系统_第13张图片Qmail邮件系统_第14张图片

结束

wps_clip_p_w_picpath-14615

wps_clip_p_w_picpath-10075

Qmail邮件系统_第15张图片Qmail邮件系统_第16张图片

结束

运行 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中将需要的代码复制到需要的文件中

Qmail邮件系统_第17张图片

打开mail.txt

wps_clip_p_w_picpath-11493

进去后找到需要的代码然后复制

Qmail邮件系统_第18张图片

找到了

输入:set nu回车 显示行数,wps_clip_p_w_picpath-28044随后输入:116,.y回车wps_clip_p_w_picpath-4009意思就是从116行到当前鼠标的位置复制    ¥符是代表末尾  d删除

Qmail邮件系统_第19张图片

然后输入:e /var/qmail/rc    意思就是创建文件/var/qmail/rc

wps_clip_p_w_picpath-3702

进去后按P粘贴

Qmail邮件系统_第20张图片

去掉多余行、、以后就不写说明了

Qmail邮件系统_第21张图片

wps_clip_p_w_picpath-5546

wps_clip_p_w_picpath-8338

如果你手动执行/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中找到这些代码然后创建文件复制进去

Qmail邮件系统_第22张图片

Qmail邮件系统_第23张图片

然后保存退出

将上面这个qmailctl 脚本设置为可执行脚本, 然后链接到你的用户执行程序目录:

chmod 755 /var/qmail/bin/qmailctl

ln -s /var/qmail/bin/qmailctl /usr/bin

wps_clip_p_w_picpath-20363

建立supervise 脚本:

为 qmail 的服务创建 supervise 目录:

wps_clip_p_w_picpath-6806

建立 /var/qmail/supervise/qmail-send/run 文件:

vi /var/qmail/supervise/qmail-send/run

内容如下:

#!/bin/sh

exec /var/qmail/rc

wps_clip_p_w_picpath-28319

保存退出

建立 /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

wps_clip_p_w_picpath-20790

保存退出

建立 /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

Qmail邮件系统_第24张图片

wps_clip_p_w_picpath-16818Qmail邮件系统_第25张图片

保存退出

建立concurrencyincoming 控制文件.

wps_clip_p_w_picpath-23150

建立 /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

wps_clip_p_w_picpath-15535

保存退出

将各个run文件设置为可执行文件:

Qmail邮件系统_第26张图片

然后建立log文件目录:

wps_clip_p_w_picpath-29280wps_clip_p_w_picpath-19098

最后, 建立 supervise 目录到 /service 目录的链接:

wps_clip_p_w_picpath-18140

(注:/service 目录是 daemontools 安装时建立的目录.)

注意: 建立这个链接之后 qmail 系统会很快自动被启动起来,

Qmail邮件系统_第27张图片

如果你还不想立刻运行qmail, 运行下面这个,命令来停止qmail:

qmailctl stop

SMTP 访问控制:

允许本地主机通过SMTP方式发送邮件:

wps_clip_p_w_picpath-778

为用户建立自己的Maildir格式信箱:

wps_clip_p_w_picpath-28265

wps_clip_p_w_picpath-3916

现在系统中有yang个li用户、现在li给yang发邮件

Qmail邮件系统_第28张图片

然后再yang的根目录上查看邮件

Qmail邮件系统_第29张图片

发送成功、、、、、、

下来是安装pop3功能

Qmail邮件系统_第30张图片

wps_clip_p_w_picpath-14653

Qmail邮件系统_第31张图片

wps_clip_p_w_picpath-2233

创建一个/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服务器的完整的有资格的正式域名)

Qmail邮件系统_第32张图片

保存退出

wps_clip_p_w_picpath-31058

创建包括以下内容的/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

wps_clip_p_w_picpath-19047

保存退出

建立log日志文件夹并且设置相应的run脚本, 将脚本链接到 /service 目录:

wps_clip_p_w_picpath-20598wps_clip_p_w_picpath-28052wps_clip_p_w_picpath-30414

wps_clip_p_w_picpath-11791

将下面内容加入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

wps_clip_p_w_picpath-29036

Qmail邮件系统_第33张图片

保存退出

将下面内容加入qmailctl脚本的"stop"部分

    echo "  qmail-pop3d"

svc -d /service/qmail-pop3d /service/qmail-pop3d/log

Qmail邮件系统_第34张图片

将下面内容加入qmailctl脚本的"stat"部分

    svstat /service/qmail-pop3d

svstat /service/qmail-pop3d/log

Qmail邮件系统_第35张图片

将下面内容加入qmailctl脚本的"pause"部分

    echo "Pausing qmail-pop3d"

svc -p /service/qmail-pop3d

Qmail邮件系统_第36张图片

将下面内容加入qmailctl脚本的"cont"部分

    echo "Continuing qmail-pop3d"

    svc -c /service/qmail-pop3d

Qmail邮件系统_第37张图片

将下面内容加入qmailctl脚本的"restart"部分

    echo "* Restarting qmail-pop3d."

svc -t /service/qmail-pop3d /service/qmail-pop3d/log

Qmail邮件系统_第38张图片

保存退出,全部修改完成

在windows客户端发邮件测试

Qmail邮件系统_第39张图片

给yang发送一封邮件

Qmail邮件系统_第40张图片

然后用yang登录、查看li给自己发的邮件

Qmail邮件系统_第41张图片

接收成功