- 论坛徽章:
- 0
|
1 所需软件
1.1 Qmail
版本:1.03
安装方式:源码包
用途:提供邮件系统的基本功能
1.2 Ucspi-Tcp(UNIX客户-服务器程序端口)
版本:0.88
安装方式:源码包
用途:建立客户机-服务器tcp 后台程序(取代inetd程序)
1.3 Ezmlm
版本:0.53
安装方式:源码包
用途:提供邮件系统列表功能
1.4 Qmail-Ldap
版本:qmail-ldap-1.03-20060201.patch.gz
安装方式:补丁文件
用途:提供qmail支持ldap的功能
1.5 Ucspi-Tcp-0.88.errno.patch
版本:0.88
安装方式:补丁文件
用途:
2 软件安装
2.1 创建目录
# su
# umask 022
# mkdir –p /var/qmail
# mkdir –p /var/backup
2.2 解压缩及打补丁
把所用到的安装包放到/usr/local/src中
# cd /usr/local/src
# tar –xvzf qmail-1.03.tar.gz
# cd qmail-1.03
# patch -p1
2.3 添加Qmail用户
# add qmail user
userdel alias >/dev/null 2>&1
userdel qmaild >/dev/null 2>&1
userdel qmaill >/dev/null 2>&1
userdel qmailp >/dev/null 2>&1
userdel qmailq >/dev/null 2>&1
userdel qmailr >/dev/null
2>&1
userdel qmails >/dev/null
2>&1
groupdel nofiles >/dev/null
2>&1
groupdel qmail >/dev/null 2>&1
groupadd -g 91 nofiles
groupadd -g 92 qmail
useradd -u 91 -g 91 -d /var/qmail/alias -s /sbin/nologin alias
useradd -u 92 -g 91 -d /var/qmail -s /sbin/nologin qmaild
useradd -u 93 -g 91 -d /var/qmail -s /sbin/nologin qmaill
useradd -u 94 -g 91 -d /var/qmail -s /sbin/nologin qmailp
useradd -u 95 -g 92 -d /var/qmail -s /sbin/nologin qmailq
useradd -u 96 -g 92 -d /var/qmail -s /sbin/nologin qmailr
useradd -u 97 -g 92 -d /var/qmail -s /sbin/nologin qmails
2.4 Qmail-1.03
# cd /usr/local/src/qmail-1.03
编辑Makefile文件,具体修改见下
修改"#LDAPFLAGS=-DQLDAP_CLUSTER"成"LDAPFLAGS=-DEXTERNAL_TODO -DCLEARTEXTPASSWD
-DSMTPEXECCHECK";
修改"LDAPLIBS=-L/usr/local/lib -lldap
-llber"成"LDAPLIBS=-L/usr/lib -lldap
-llber";
修改"LDAPINCLUDES=-I/usr/local/include"成"LDAPINCLUDES=-I/usr/include";
修改"#MDIRMAKE=-DAUTOMAILDIRMAKE"成"MDIRMAKE=-DAUTOMAILDIRMAKE";
修改"#HDIRMAKE=-DAUTOHOMEDIRMAKE"成"HDIRMAKE=-DAUTOHOMEDIRMAKE";
修改"# SHADOWLIBS=-lcrypt"成" SHADOWLIBS=-lcrypt ";
修改"#
BACKUPPATH=/backup/qmail-backup/qmail-ldap.`date
"+%Y%m%d-%H%M"`.tar"成"
BACKUPPATH=/var/backup/qmail-backup/qmail-ldap.`date
"+%Y%m%d-%H%M"`.tar";
保存退出执行
注意
如果建立的qmail的gid,uid号小于100,则必须要修改qmail-ldap.h文件中的相应参数
#define UID_MIN 100(默认)
#define GID_MIN 100
改为90即可
编译安装
# make setup check
2.5 安装ucspi-tcp-0.88
# tar –xvzf ucspi-tcp-0.88.tar.gz
# cd ucspi-tcp
# patch -p1
# make
# make setup check
2.6 创建Qmail_control目录文件脚本
# cd /var/qmail/control
# touch build_control.sh
# chmod 700 build_control.sh
# vi build_control.sh
写入以下内容
echo "uni.avtech.com.cn" > me
echo "uni.avtech.com.cn" > rcpthosts
echo "uni.avtech.com.cn" > locals
echo "dc=cn" > ldapbasedn
echo "127.0.0.1:389" > ldapserver
echo "cn=root,dc=cn" > ldaplogin
echo "secret" > ldappassword
echo 0 > ldaplocaldelivery
echo 55 > ldapuid #系统中LDAP用户的ID
echo 55 > ldapgid #系统中LDAP用户组的ID
echo "/var/qmail/maildir" >
ldapmessagestore
保存退出,并运行build_control.sh
# ./build_control.sh
2.7 创建relay规则文件
方法1
#cd /var/qmail/control
#echo '127.:allow,RELAYCLIENT=""'
>>/var/qmail/control/tcp.smtp
#echo ':allow,SMTPAUTH=""'
>>/var/qmail/control/tcp.smtp
#tcprules /var/qmail/control/tcp.smtp.cdb
/var/qmail/control/tcp.smtp.tmp
方法2
编辑qmail-smtpd.rules文件
127.0.0.1:allow,RELAYCILENT=""
:allow,SMTPAUTH="AUTHREQUIRED",RCPTCHECK="",BADRCPTDELAY="5",NOBOUNCE="",BLOCKRELAYPROBE=""
200.88.125.2:deny (拒绝的ip)
210.211.164.46:deny
62.149.114.19:deny
61.217.245.46:deny
203.188.197.10:deny
保存退出
make编译一下会自动生成相应的cdb文件
2.8 创建qmail启动文件
# cd /var/qmail/boot
# vi /var/qmail/boot/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 ./Maildir/ splogger qmail &
# chmod 700 /var/qmail/rc
2.9 创建smtp和pop3服务的启动脚本(除#!/bin/sh之外其他内容都写成一行)
2.9.1 qmail-smtp
#vi /var/qmail/boot/smtpd
#!/bin/sh
/usr/local/bin/tcpserver -H -R -l 0 -t 1 -v
-p -x /var/qmail/control/qmail-smtpd.cdb -u qmaild -g nofiles 0 smtp /var/qmail/bin/qmail-smtpd
avtech.com.cn /var/qmail/bin/auth_smtp /bin/true 2>&1 |
/var/qmail/bin/splogger smtpd 3 &
# chmod 700 smtpd
2.9.2 qmail-pop3
# vi /var/qmail/boot/pop3
#!/bin/sh
exec /usr/local/bin/tcpserver -l 0 -H -R 0 pop3
/var/qmail/bin/qmail-popup avtech.com.cn /var/qmail/bin/auth_pop
/var/qmail/bin/qmail-pop3d Maildir &
# chmod 700 pop3
2.10 将现存的 /usr/lib/sendmail 替代为 qmail 版本
service sendmail stop >/dev/null 2>&1
chkconfig --del
sendmail
rpm -e fetchmail >/dev/null 2>&1
rpm -e sendmail >/dev/null 2>&1
chmod 0 /usr/lib/sendmail >/dev/null
2>&1
chmod 0 /usr/sbin/sendmail >/dev/null 2>&1
mv /usr/lib/sendmail /usr/lib/sendmail.bak
>/dev/null 2>&1
mv /usr/sbin/sendmail /usr/sbin/sendmail.bak
>/dev/null 2>&1
ln -s /var/qmail/bin/sendmail /usr/lib/sendmail
ln -s /var/qmail/bin/sendmail /usr/sbin/sendmail
chmod 755 /var/qmail/bin/sendmail
2.11建立系统别名
#cd /var/qmail/alias
#touch .qmail-postmaster .qmail-mailer-daemon
.qmail-root
#chmod 644 /var/qmail/alias/.qmail*
2.12 将启动脚本写入到rc.local文件里
# vi /etc/rc.local
写入(这里面提前写入couri-imap和sqwebmail的启动命令)
/var/qmail/boot/rc
/var/qmail/boot/smtpd
/var/qmail/boot/pop3
/usr/local/sbin/authdaemond start
/usr/local/sqwebmail/libexec/sqwebmaild.rc start
2.13 邮件列表
2.13.1 安装ezmlm
#tar xzf ezmlm-0.53.tar.gz
#tar xzf ezmlm-idx-5.0.2.tar.gz
#mv –reply=no ezmlm-idx-5.0.2/*
ezmlm-0.53
#cd ezmlm-0.53
#patch
#make
#make man
#make setup
2.13.2 创建邮件列表
cd /usr/local/bin/ezmlm
./ezmlm-make ~alias/student ~alias/.qmail-student
student $School_name.avtech.com.cn
chown -R alias ~alias/student
./ezmlm-make ~alias/avtech ~alias/.qmail-avtech avtech
$School_name.avtech.com.cn
chown -R alias ~alias/avtech
2.14
安装pcre
#tar -xzf pcre-6.3.tar.gz
#cd pcre-6.3
#./configure
#make
#make install
2.15
安装coruier-authlib
2.15.1 安装
#tar -xjf courier-authlib-0.57.tar.bz2
#cd courier-authlib-0.57
#./configure --with-redhat
#make
#make install
#make install-configure
2.15.2 更改配置文件
# vi /usr/local/etc/authlib/authdaemonrc
authmodulelist="authldap"
authmodulelistorig="authldap"
# vi /usr/local/etc/authlib/authldaprc
LDAP_SERVER
127.0.0.1
LDAP_PORT
389
LDAP_BASEDN
dc=cn
LDAP_BINDDN
cn=root,dc=cn
LDAP_BINDPW
secret
LDAP_FILTER
(objectClass=qmailUser)
LDAP_DOMAIN
avtech.com.cn
LDAP_GLOB_UID
qmaild #系统中qmail用户的ID,LDAP用户的qmailUID应该与此一致
LDAP_GLOB_GID
qmail #系统中qmail用户组的ID,LDAP用户的qmailGID应该与此一致
LDAP_HOMEDIR
mailMessageStore
LDAP_MAILROOT
/var/qmail/maildir
#LDAP_MAILDIR
mailbox
LDAP_DEFAULTDELIVERY defaultDelivery
LDAP_CLEARPW
clearPassword
LDAP_CRYPTPW
userPassword
LDAP_UID
92(qmaild的id)
LDAP_GID
92(qmail的id)
2.16 安装sqwebmail
#tar -xjf sqwebmail-5.0.6.tar.bz2
#cd sqwebmail-5.0.6
#./configure \
--prefix=/usr/local/sqwebmail \
--enable-cgibindir=/var/www/cgi-bin \
--enable-imagedir=/var/www/htdocs/webmail \
--enable-imageurl=/webmail \
--with-authldap \
--without-authpwd \
--without-authshadow \
--without-authpam \
--without-authuserdb \
--without-authvchkpw \
--without-authdaemon \
--with-cachedir=/usr/local/sqwebmail/cache
#make configure-check
#make
#make check
#make install-strip
#make install-configure
3 环境配置
3.1
配置用户邮箱
创建用户邮箱目录
# mkdir /var/qmail/maildir
创建添加用户邮箱的脚本
# vi /var/qmail/maildir/build_mail.sh
内容如下
mkdir avtech_cuilei
chmod -R 700 avtech_cuilei
chown -R qmaild.qmail avtech_cuilei
以上是例子,具体数据具体写
# chmod 755 build_mail.sh
执行此脚本即可建立邮箱目录
# ./build_mail.sh
#!/bin/sh
mk_init_maildir()
{
ldapsearch -h 127.0.0.1 -x -w
"secret" -D "cn=root,dc=cn" -b "dc=cn"
mailMessageStore > /tmp/maildir_ldap_result
grep "mailMessageStore"
/tmp/maildir_ldap_result > /tmp/mk_mailbox.sh
sed -i "s:mailMessageStore\: :mkdir -p
\/var/qmail\/maildir\/:g" /tmp/mk_mailbox.sh
chmod 700 /tmp/mk_mailbox.sh
/tmp/mk_mailbox.sh
sed -i "s:mkdir -p:chown -R
qmaild.qmail:g" /tmp/mk_mailbox.sh
/tmp/mk_mailbox.sh
sed -i "s:chown -R qmaild.qmail:chmod -R
700:g" /tmp/mk_mailbox.sh
/tmp/mk_mailbox.sh
}
case $1 in
init)
mk_init_maildir
;;
add)
for loop
in `cat /tmp/list`
do
mkdir -p /var/qmail/maildir/$loop
chmod -R 700 /var/qmail/maildir/$loop
chown -R qmaild.qmail /var/qmail/maildir/$loop
done
;;
help)
echo -e "init\t --\make branch and checkout the code source"
echo -e "add --\tget the script for db"
;;
*)
echo "usage {init|add}"
;;
Esac
4 测试
http://xx.xx.xx.xx/cgi-bin/sqwebmail
5 支持多域名
修改/var/qmail/control里面的三个文件
me,locals,rcpthosts
添加新的域名
比如zycchr.com
然后make重新编译一下
ldap里面uid的设置为xx@zycchr.com
foxmail里面的用户名设置为xx@zycchr.com
编辑/var/qmail/control/badmailfrom文件(如果没有可以新建一个)将要拒收的邮件地址写入,每条记录为一行如:
123@123.com
这样所有FROM来自123@123.com的邮件都会被邮件服务器拒收。
同样也可以对一个域进行拒收,在badmailfrom文件中加入
@test.com
这样所有来自test.com的任何地址的电子邮件都会被服务器拒收。
本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/31901/showart_547067.html |
|