Qmail+LDAP安装配置实例(一)(转)

Qmail+LDAP安装配置实例(一)(转)[@more@]

摘要

Qmail+LDAP安装配置实例(2002-07-02 12:31:13)

By ideal

  目前网上关于qmail+LDAP的配置不是很多,而且大多数是英文的。而qmail和openldap的配置没有详细的配置文档。前一段时间因为工作关系配置了qmail+LDAP的服务器。现在将其整理处理,以供大家参考。希望对于大家有所帮助。

  Qmail 是基于类似UNIX操作系统的Internet Mail Transfer Agent (MTA) 。我的安装环境是linux7.1 内核是2.4.2,gcc version 2.96,组件全部安装。

安装步骤

1.操作系统:

Red Hat Linux 7.1 kernel 2.4.2 gcc 2.96

2.所需软件包:

qmail-1.03.tar.gz (http://www.qmail.org)

ucspi-tcp-0_88_tar.gz (http://cr.yp.to/ucspi-tcp.html)

checkpassword-0_90_tar.gz (http://cr.yp.to/checkpwd.html)

qmail-ldap-1_03-20010301_patch.gz (http://www.nrg4u.com/)

openldap-2_0_7.tgz (http://www.openldap.org)

daemontools, ftp://cr.yp.to/daemontools/daemontools-0.70.tar.gz

3.主机IP地址和域名配置,在本例中为:

IP:172.18.6.111

域名:longshine.com

4. System requirements

5. 安装步骤

  将所有需要安装的包拷贝到/usr/local/src/qmail目录项目

mkdir -p /usr/local/src/qmail

mv *.tar.gz /usr/local/src/qmail

  然后解开安装下面步骤解开这些包

su -

umask 022

cd /usr/local/src/qmail

tar zxvf qmail-1.03.tar.gz

tar xvf ucspi-tcp-0.88.tar.gz

tar zxvf daemontools-0.70.tar.gz

tar zxvf checkpassword-0.90.tar.gz

  解开的数据包应该处在qmail-1.03, ucspi-tcp-0.88, daemontools-0.70和checkpassword-0.90目录下,进入qmail目录。

cd qmail-1.03

  建立相应的安装目录

  由于qmail安装程序会产生其需要的子目录,所以只要生成安装所需的'home' 目录:

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 -g nofiles -d /var/qmail/alias alias

# useradd -g nofiles -d /var/qmail qmaild

# useradd -g nofiles -d /var/qmail qmaill

# useradd -g nofiles -d /var/qmail qmailp

# groupadd qmail

# useradd -g qmail -d /var/qmail qmailq

# useradd -g qmail -d /var/qmail qmailr

# useradd -g qmail -d /var/qmail qmails

  编译安装

  现在可以编译安装qmail:

make setup check

  在编译安装完成,需要进行配置如果DNS配置正确,只需执行下面的命令:

./config

  如果config在DNS中不能找到主机名,则需要执行config-fast 脚本:

./config-fast longshine. com

  qmail 现在已经安装起来了,下面开始是启动和配置qmail。

  安装 ucspi-tcp

  进入 ucspi-tcp 目录:

cd /usr/local/src/qmail/ucspi-tcp-0.88

make

make setup check

  这样ucspi-tcp 安装起来了。

  安装daemontools

  进入 daemontools 目录:

cd /usr/local/src/qmail/daemontools-0.70

make

make setup check

  安装checkpassword

  进入 checkpassword 目录:

cd /usr/local/src/qmail/checkpassword-0.90

make

make setup check

  注: 在某些LINUX版本中(我的安装环境redhat 7.1), 如Red Hat 7,可能在编译过程中会生成错误:

./compile tai64nlocal.c

tai64nlocal.c: In function `main':

tai64nlocal.c:54: warning: assignment makes pointer from integer without a cast

tai64nlocal.c:55: dereferencing pointer to incomplete type

  等等….

  如果这样按照下面说明编辑tai64nlocal.c

#include

  更改为:

#include

  生成/service 目录:

mkdir /service

  最后配置svscan 使得当系统启动时候自动允许。编辑 /etc/inittab 文件将下面一行加入文件最后(注意是在一行中):

SV:123456:respawn:env - PATH=/usr/local/bin:/usr/sbin:/usr/bin:/bin svscan /service /dev/console 2>/dev/console

  然后执行下面命令重新读人/etc/inittab:

kill -HUP 1

  可以使用'ps -ef | grep svscan' 或者 'ps waux | grep svscan' 证实svscan 正在运行。

  启动qmail

2.8.1. /var/qmail/rc

  编辑产生/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

mkdir /var/log/qmail

  在qmail中,支持三种邮件存储方式,分别是典型的/var/spool/mail方式、传统的Unix user/Mailbox方式和新的 user/Maildir方式,其中前两种方式为大多数的邮件客户端所支持,但是它们均存在安全上的隐患,所以在这里使用了第三种方式,下面分别叙述三种方式的建立方法:

/var/spool/mail 方式

#cp /var/qmail/boot/proc /var/qmail/rc

user/Mailbox 方式

#cp /var/qmail/boot/home /var/qmail/rc

user/Maildir 方式

1)#cp /var/qmail/boot/home /var/qmail/rc

2)建立相应的邮件用户,例如:

#useradd test

#passwd test

3)使用qmail提供的工具建立Maildir,命令如下:

$ /var/qmail/bin/maildirmake Maildir

$ echo ./Maildir/ >.qmail

  (注意这里必须以用户权限建立邮箱)

4) 为了使root用户也能收发邮件,使用如下命令:

# su alias

$ cd

$ /var/qmail/bin/maildirmake Maildir

$ echo ./Maildir/ >.qmail

# echo ./Mailbox/ >/var/qmail/control/defaultdelivery

系统start-up 文件

生成qmailctl 脚本

#!/bin/sh

# For Red Hat chkconfig

# chkconfig: - 30 80

# 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

else

echo qmail-send service not running

fi

if svok /service/qmail-smtpd ; then

svc -u /service/qmail-smtpd

else

echo qmail-smtpd service 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

echo ' qmail-send'

svc -d /service/qmail-send

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 'Sending ALRM signal to qmail-send.'

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

echo '* Sending qmail-send SIGTERM and restarting.'

svc -t /service/qmail-send

echo '* Restarting qmail-smtpd.'

svc -u /service/qmail-smtpd

;;

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 <

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

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

  此脚本可以通过http://www.lifewithqmail.org/qmailctl-script-dt70获得

  使用vi 生成/var/qmail/bin/qmailctl基本将上面内容放入其中, 然后将其安装在

/etc/init.d

/etc/rc.d/init.d

  执行下面命令,产生链接:

ln -s ../init.d/qmail /etc/rc0.d/K30qmail

ln -s ../init.d/qmail /etc/rc1.d/K30qmail

ln -s ../init.d/qmail /etc/rc2.d/S80qmail

ln -s ../init.d/qmail /etc/rc3.d/S80qmail

ln -s ../init.d/qmail /etc/rc4.d/S80qmail

ln -s ../init.d/qmail /etc/rc5.d/S80qmail

ln -s ../init.d/qmail /etc/rc6.d/K30qmail

ln -s /var/qmail/bin/qmailctl /etc/init.d/qmail

  使得脚本可以执行 qmailctl且进入系统命令中

chmod 755 /var/qmail/bin/qmailctl

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

  supervise 基本

  现在产生qmail services目录:

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/tcpserver -v -R -l 0 -x /etc/tcp.smtp.cdb -c '$MAXSMTPD'

-u '$QMAILDUID' -g '$NOFILESGID' 0 smtp /var/qmail/bin/qmail-smtpd 2>&1

  生成concurrencyincoming 控制文件:

echo 20 > /var/qmail/control/concurrencyincoming

chmod 644 /var/qmail/control/concurrencyincoming

  生成/var/qmail/supervise/qmail-smtpd/log/run 文件:

#!/bin/sh

exec /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog t /var/log/qmail/smtpd

  使得所生成的脚本可执行:

chmod 755 /var/qmail/supervise/qmail-send/run

chmod 755 /var/qmail/supervise/qmail-send/log/run

chmod 755 /var/qmail/supervise/qmail-smtpd/run

chmod 755 /var/qmail/supervise/qmail-smtpd/log/run

  建立log 目录:

mkdir -p /var/log/qmail/smtpd

chown qmaill /var/log/qmail /var/log/qmail/smtpd

  将supervise 链接到/service:

ln -s /var/qmail/supervise/qmail-send /var/qmail/supervise/qmail-smtpd /service

  注: qmail 系统应该自动起来。如果不想此时候启动,执行:

qmailctl stop

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/8225414/viewspace-940557/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/8225414/viewspace-940557/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值