Qmail+LDAP安裝配置例項(一)(轉)

post0發表於2007-08-10
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 ()

ucspi-tcp-0_88_tar.gz ()

checkpassword-0_90_tar.gz ()

qmail-ldap-1_03-20010301_patch.gz ()

openldap-2_0_7.tgz ()

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

  此指令碼可以透過獲得

  使用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/,如需轉載,請註明出處,否則將追究法律責任。

相關文章