分享
 
 
 

Qmail 安装

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

Written by hefish@cn99.com

version 0.01

Last Updated: 2000-9-23

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 <<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 -- 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

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