bmuht_gpj.76252_a9753dd0257efecf683ccbc63f641a2a/6/8/6002/daolpu/enilnoavh/052.831.141.302//:ptth
Cài đặt nhanh và cấu hình qmail + vpopmail+procmail + daemontools
Bài viết này dành cho những bạn reinstall qmail và các thiết bị quản lý qmail .
thực hiện theo quá trình trong bài viết bạn có thể sử dụng được qmail , vpopmail , procmail , daemontools nhanh chóng mà không cần phải đi kiếm link hoặc các patch và đọc documents . tuy nhiên ý nghĩa của từng chương trình và lệnh sẽ không có dính kèm giải thích nào . nếu bạn chưa cài đặt qmail lần nào xin đọc bài viết "Qmail as a Mail Gateway" để biết thêm chi tiếc và cơ cấu cu. thể của qmail tại các link sau .
Phần 1 : /hvaonline/posts/list/119.html
Phần 2 : /hvaonline/posts/list/120.html
Phần 3 : /hvaonline/posts/list/121.html
Phần 4 : /hvaonline/posts/list/122.html
1. Qmail
ftp://ftp.jp.qmail.org/qmail/qmail-1.03.tar.gz
2. Tcpserver
ftp://ftp.jp.qmail.org/qmail/ucspi-tcp-0.88.tar.gz
3. Vpopmail
http://www.inter7.com/index.php?page=vpopmail
qmail-smtpd-relay-reject
http://www.qmail.org/qmail-smtpd-relay-reject
4. Patch files
http://www.qmail.org/rpms/
5. Procmail
http://www.procmail.org/
6. daemontools
http://cr.yp.to/daemontools/daemontools-0.76.tar.gz
Tạo các thư mục cần thiết cho qmail
[root ]# mkdir /var/qmail
[root ]# groupadd -g 710 nofiles
[root ]# useradd -M -u 710 -g nofiles -s /bin/false -d /var/qmail/alias alias
[root ]# useradd -M -u 711 -g nofiles -s /bin/false -d /var/qmail qmaild
[root ]# useradd -M -u 712 -g nofiles -s /bin/false -d /var/qmail qmaill
[roott]# useradd -M -u 713 -g nofiles -s /bin/false -d /var/qmail qmailp
[root ]# groupadd -g 711 qmail
[root ]# useradd -M -u 714 -g qmail -s /bin/false -d /var/qmail qmailq
[root ]# useradd -M -u 715 -g qmail -s /bin/false -d /var/qmail qmailr
[root ]# useradd -M -u 716 -g qmail -s /bin/false -d /var/qmail qmails
Vpopmail User and group
[root ]# groupadd -g 721 vchkpw
[root ]# useradd -g vchkpw -u 721 vpopmail -M -s /bin/false
[root ]# mkdir /home/vpopmail
[root ]# chown vpopmail:vchkpw /home/vpopmail
Patch and compile qmail
[root src]# tar zxvf qmail-1.03.tar.gz
[root src]# cd qmail-1.03
[root src]# wget http://www.qmail.org/rpms/patches/qmail-1.03.errno.patch
[root src]# wget http://www.qmail.org/qmail-smtpd-relay-reject
[root qmail-1.03]# patch -p1 < ../qmail-smtpd-relay-reject
[root qmail-1.03]# patch -p1 < ../qmail-1.03.errno.patch
[root qmail-1.03]# make setup check
[root qmail-1.03]# ./config-fast mail.example.jp
Cài đặt tcpserver
# tar xvfz ../ucspi-tcp-0.88.tar.gz
# cd ucspi-tcp-0.88/
#wget http://www.qmail.org/rpms/patches/ucspi-tcp-0.88.errno.patch
#patch -p1 < ucspi-tcp-0.88.errno.patch
patching file error.h
# make setup check
Cài đặt vpopmail
[root src]# tar zxvf vpopmail-5.3.20.tar.gz
[root src]# cd vpopmail-5.3.20
[rootvpopmail-5.3.20]#./configure \
--enable-roaming-users=y \
--enable-relay-clear-minutes=10 \
--enable-tcpserver-file=/home/vpopmail/etc/tcp.smtp \
--enable-logging=y \
[root vpopmail-5.3.20]# make
[root vpopmail-5.3.20]# make install-strip
Khi chạy configure nếu bị error
configure: error: Unable to find your tcp.smtp file, specify --enable-tcpserver-path=/full/path/to/tcp.smtp
dùng lệnh sau để giải quyết
# cp /etc/tcpserver/tcp.smtp /home/vpopmail/etc/
Create virtual domain for vpopmail
[root etc]# cd /home/vpopmail/bin
[root bin]# ./vadddomain example.jp
Please enter password for postmaster:
enter password again:
your virtual domain was create into /home/vpopmail/domains/example.jp
Tạo default domain cho vpopmail
# echo 'example.jp' > /home/vpopmail/etc/defaultdomain
Create user for vpopmail
[root bin]# ./vadduser test@example.jp
Please enter password for test@example.jp:*****
enter password again:******
POP before SMTP
Create file tcp.smtp.cdb for access control
# touch /home/vpopmail/etc/tcp.smtp
File : /home/vpopmail/etc/tcp.smtp
Code:
127.:allow,RELAYCLIENT=""
[root etc]# tcprules /home/vpopmail/etc/tcp.smtp.cdb Code:
/home/vpopmail/etc/tcp.smtp.tmp < /home/vpopmail/etc/tcp.smtp
[root etc]# crontab -e
Code:
0,10,20,30,40,50 * * * * /home/vpopmail/bin/clearopensmtp 2>&1 > /dev/null
Cài đặt Daemontools
# mkdir -p /package
# chmod 755 /package
# chmod +t /package
# cd /package
# wget http://cr.yp.to/daemontools/daemontools-0.76.tar.gz
# tar xvpfz daemontools-0.76.tar.gz
# cd daemontools-0.76/src
# wget http://www.qmail.org/rpms/patches/daemontools-0.76.errno.patch
# patch -p1 < daemontools-0.76.errno.patch
(error.h)
# cd admin/daemontools-0.76
# ./package/install
Creating /service...
Adding svscanboot to inittab...
init should start svscan now.
chương trình sẽ tự động thêm dòng sau vào /etc/initab để khi khởi động linux svscan có thể tự động chạy .
Code:
SV:123456:respawn:/usr/local/bin/svscanboot
Tạo directory cho svscan
# mkdir -p /var/service
# chmod 0755 /var/service
File : /usr/local/bin/svscanboot ( không cần thay đổi các dấu .......)
Code:
#!/bin/sh
# WARNING: This file was auto-generated. Do not edit!
PATH=:/usr/local/bin:/usr/local/sbin:/bin:/sbin:/usr/bin:/usr/sbin:/usr/X11R6/bin
exec </dev/null
exec >/dev/null
exec 2>/dev/null
svc -dx /var/service/* /var/service/*/log
env - PATH=$PATH svscan /var/service 2>&1 | \
env - PATH=$PATH readproctitle service errors: .........................(kéo dài )
Cấu hình cho daemontools : setup chương trình cho deamontơols giám sát
mkdir -p /var/qmail/supervise/qmail
mkdir /var/qmail/supervise/pop3d
mkdir /var/qmail/supervise/smtpd
chmod +t /var/qmail/supervise/qmail
chmod +t /var/qmail/supervise/pop3d
chmod +t /var/qmail/supervise/smtpd
File : /var/qmail/supervise/qmail/run
# cp /usr/local/src/qmail-1.03/home /var/qmail/supervise/qmail/run
Chuyển file rc của qmail từ ./Mailbox thành ./Maildir/ (/var/qmail/rc)
Code:
#!/bin/sh
# Using splogger to send the log through syslog.
# Using qmail-local to deliver messages to ~/Mailbox by default.
exec env - PATH="/var/qmail/bin:$PATH" \
qmail-start ./Maildir/ splogger qmail
File : /var/qmail/supervise/smtpd/run
Code:
#!/bin/bash
#
# smtpd/run : qmail-smtpd starting script
#
exec env - PATH="/var/qmail/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin" \
/usr/local/bin/tcpserver -v -x /home/vpopmail/etc/tcp.smtp.cdb -R -H -l0 -u `id -u qmaild` -g `id -g qmaild` 0 smtp \
/var/qmail/bin/qmail-smtpd 2>&1
Tạo quyền thi hành cho file run
# chmod +x /var/qmail/supervise/smtpd/run
file : /var/qmail/supervise/pop3d/run
Code:
#!/bin/bash
#
# pop3d/run : qmail-pop3d starting script
#
exec env - PATH="/var/qmail/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin" \
tcpserver -v -x /etc/tcpserver/tcp.pop3.cdb -R -H 0 pop3 qmail-popup mail.example.jp \
/home/vpopmail/bin/vchkpw \
qmail-pop3d Maildir 2>&1
Tạo quyền thi hành cho file run
# chmod +x /var/qmail/supervise/pop3d/run
Tạo symlink
# ln -s /var/qmail/supervise/qmail /var/service/qmail
# ln -s /var/qmail/supervise/smtpd /var/service/smtpd
# ln -s /var/qmail/supervise/pop3d /var/service/pop3d
Khỏi động lại init để enable svscan bằng lệnh sau
# kill -HUP 1
Kiểm tra các service có hoạt động hay không
# svstat /var/service/*
/var/service/pop3d: up (pid 5021) 4 seconds
/var/service/qmail: up (pid 5022) 4 seconds
/var/service/smtpd: up (pid 5023) 4 seconds
* up seconds chỉ báo 0 hay 1 thì check lại permission của run scripts hoặc syntax của chúng .
Qmail configuration
/var/qmail/control/locals
Code:
localhost (add)
mail.example.jp
example.jp (add)
/var/qmail/control/rcpthosts
Code:
localhost (add)
mail.example.jp
example.jp (add)
Start up scirpt cho qmail
#!/bin/sh
[ -f /var/qmail/rc ] || exit 0
PATH=$PATH:/var/qmail/bin:/usr/local/bin
case "$1" in
start)
echo -n "Starting... qmail"
csh -cf '/var/qmail/rc &'
################ SMTP #####################
/usr/local/bin/tcpserver -H -R -l mail.example.jp -v \
-x /home/vpopmail/etc/tcp.smtp.cdb -u 711 -g 710 0 smtp \
/var/qmail/bin/qmail-smtpd 2>&1 | /var/qmail/bin/splogger smtpd 2 &
################ POP #####################
/usr/local/bin/tcpserver -H -R -l mail.example.jp -v 0 pop3 \
/var/qmail/bin/qmail-popup mail.example.jp /home/vpopmail/bin/vchkpw \
/var/qmail/bin/qmail-pop3d Maildir 2>&1 | /var/qmail/bin/splogger pop3d 2 &
touch /var/lock/qmail
;;
stop)
echo "Shutting down qmail."
PID=`/bin/ps -aefw | grep qmail | awk '{print $2}'`
if [ ! -z "$PID" ] ; then
/bin/kill ${PID} 1> /dev/null 2>&1
fi
rm -f /var/lock/qmail
;;
*)
echo "Usage: "$0" {start|stop}"
exit 1
esac
exit 0
[root init.d]# chmod +x qmail
[root init.d]# cd ../rc3.d/
[root rc3.d]# ln -s ../init.d/qmail S84qmail
Check process tree
pstree -ah
|-svscanboot /usr/local/bin/svscanboot
| |-readproctitle service errors: ...
| `-svscan /var/service
| |-supervise qmail
| | `-qmail-send
| | |-qmail-clean
| | |-qmail-lspawn ./Maildir/
| | |-qmail-rspawn
| | `-splogger qmail
| |-supervise smtpd
| | `-tcpserver -v -x /home/vpopmail/etc/tcp.smtp.cdb -R -H -l0 -u ...
Remove sendmail
[root root]# rm /usr/lib/sendmail
[root root]# rm /usr/sbin/sendmail
[root root]# ln -s /var/qmail/bin/sendmail /usr/sbin/sendmail
[root root]# ln -s /var/qmail/bin/sendmail /usr/lib/sendmail
Install procmail
# cd /usr/local/src
# tar xfvz procmail-3.21.tar.gz
# cd procmail-3.21
# make
# make install
# make install-suid
Tạo file .qmail vào ~vpopmail/domains/example.jp/777/.qmail với nội dung sau
Code:
| /usr/bin/procmail -m ./.procmailrc
chú ý khi thêm vào không được thêm space vào trước dấu | .
Tại file .procmailrc vào ~vpopmail/domains/example.jp/777/.procmailrc với nội dung sau
PATH=/usr/bin:/bin:/usr/local/bin
HOME=/var/vpopmail/domains/example.jp/777
MAILDIR=$HOME/Maildir
DEFAULT=$HOME/Maildir/
LOGFILE=$MAILDIR/procmail.log
LOCKFILE=$MAILDIR/procmail.lock
=================================
06/07/25 :
Thêm bước patch error cho qmail
Thêm bước patch cho tcpserver (ucspi-tcp-0.88.errno.patch )
06/07/27 :
Chỉnh sửa và thêm chi tiếc cấu hình daemontools
Sửa đổi start up script cho qmail
Tác giả : 777
Nguồn : www.vnhacker.org