Chinaunix首页 | 论坛 | 博客
  • 博客访问: 946505
  • 博文数量: 162
  • 博客积分: 6207
  • 博客等级: 准将
  • 技术积分: 1687
  • 用 户 组: 普通用户
  • 注册时间: 2006-02-10 01:36
个人简介

80后技术男

文章分类

全部博文(162)

文章存档

2013年(6)

2012年(20)

2011年(24)

2010年(8)

2009年(13)

2008年(37)

2007年(35)

2006年(19)

分类:

2007-01-19 11:16:57


 

1 所需软件

 

11 Qmail

版本:1.03

安装方式:源码包

用途:提供邮件系统的基本功能

 

12 Ucspi-Tcp

版本:0.88

安装方式:源码包

用途:

 

13 Ezmlm

版本:0.53

安装方式:源码包

用途:提供邮件系统列表功能

 

14 Qmail-Ldap

版本:qmail-ldap-1.03-20060201.patch.gz

安装方式:补丁文件

用途:提供qmail支持ldap的功能

 

15 Ucspi-Tcp-0.88.errno.patch

版本:0.88

安装方式:补丁文件

用途:

 

 

2 软件安装

 

21 创建目录

# su

# umask 022

# mkdir –p /var/qmail

# mkdir –p /var/backup

 

22 解压缩及打补丁

把所用到的安装包放到/usr/local/src

# cd /usr/local/src

# tar –xvzf qmail-1.03.tar.gz

# cd qmail-1.03

# patch -p1 < ../qmail-ldap-1.03-20050201.patch

# cd ..

patch -p1 < ../qldap-badrcptdelay.patch


 

23 添加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

 

 

24 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

 

25 安装ucspi-tcp-0.88

# tar –xvzf ucspi-tcp-0.88.tar.gz  

# cd ucspi-tcp

# patch -p1 < ../ ucspi-tcp-0.88.errno.patch

# make

# make setup check

 

26 创建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

echo 55 > ldapgid

echo "/var/qmail/maildir" > ldapmessagestore

保存退出,并运行build_control.sh

# ./build_control.sh

 

27 创建relay规则文件

编辑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文件



28 创建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

 

29 创建smtppop3服务的启动脚本

 

291 qmail-smtp

#vi /var/qmail/boot/smtpd


增加中国反垃圾邮件联盟的列表
/usr/local/bin/rblsmtpd -r cblplus.anti-spam.org.cn -r relays.ordb.org


内容如下

#!/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
/usr/local/bin/rblsmtpd -r cblplus.anti-spam.org.cn -r relays.ordb.org /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


292 qmail-pop3

# vi /var/qmail/boot/pop3

#!/bin/sh

/usr/local/bin/tcpserver -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

 

210将现存的 /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

 

211建立系统别名

 

#cd /var/qmail/alias

#touch .qmail-postmaster .qmail-mailer-daemon .qmail-root

#chmod 644 /var/qmail/alias/.qmail*

 

212 将启动脚本写入到rc.local文件里

 

# vi /etc/rc.local

写入(这里面提前写入couri-imapsqwebmail的启动命令)

/var/qmail/boot/rc

/var/qmail/boot/smtpd

/var/qmail/boot/pop3

/usr/local/sbin/authdaemond start

/usr/local/sqwebmail/libexec/sqwebmaild.rc start

 

213 邮件列表

2.13.1 安装ezmlm

#tar xzf ezmlm-0.53.tar.gz

#tar xzf ezmlm-idx-5.0.2.tar.gz

#mv ezmlm-idx-5.0.2/* ezmlm-0.53

#d ezmlm-0.53

#patch < idx.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

 

214 安装pcre

#tar -xzf  pcre-6.3.tar.gz

#cd pcre-6.3

#./configure

#make

#make install

 

215 安装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

LDAP_GLOB_GID           qmail

LDAP_HOMEDIR            mailMessageStore

LDAP_MAILROOT        /var/qmail/maildir

#LDAP_MAILDIR           mailbox

LDAP_DEFAULTDELIVERY    defaultDelivery

LDAP_CLEARPW            clearPassword

LDAP_CRYPTPW            userPassword

LDAP_UID               501

 LDAP_GID               501

 

216 安装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 环境配置

 

31 配置用户邮箱

 

创建用户邮箱目录

# 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 测试


 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的任何地址的电子邮件都会被服务器拒收。

 

 

 

阅读(2556) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~