Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3056108
  • 博文数量: 535
  • 博客积分: 15788
  • 博客等级: 上将
  • 技术积分: 6507
  • 用 户 组: 普通用户
  • 注册时间: 2007-03-07 09:11
文章分类

全部博文(535)

文章存档

2016年(1)

2015年(1)

2014年(10)

2013年(26)

2012年(43)

2011年(86)

2010年(76)

2009年(136)

2008年(97)

2007年(59)

分类:

2008-07-23 11:17:48

第一部分:安装程序,用于控制qmail向外发送邮件的速度


1.安装libevent
    下载:wget ~provos/libevent-1.4.0-beta.tar.gz

    libevent 是一个事件触发的网络库,适用于windows、linux、bsd等多种平
    台,内部使用select、epoll、kqueue等系统调用管理事件机制.本次开发使
    用libevent来进行域名发送时间的控制。
    
   
    ./configure
    make
    make install

2.安装memcached
    下载:wget

    Memcached是高性能的,分布式的内存对象缓存系统,用于在动态应用中减少
    数据库负载,提升访问速度。本次开发实用memcached保存收件域的配置信息
    和当前状态信息。
   
./configure --prefix=/usr/local/memcached --with-libevent=/usr/local
make
make install

ln -s /usr/local/lib/libevent-1.4.so.2 /usr/lib/libevent-1.4.so.2

3.安装libmemcached 0.18
    下载:wget
   libmemcached是基于C的memcached客户端.支持同步和异步方式.支持tcp和
   Unix Socket协议方式;高效的hash算法;实现cas,更新,追加 等特性.同时,还
   提供一些便捷的工具用以对memcached的维护和管理.  (由于目前
   libmemcached升级速度很快,当前应用是在0.18版下开发的。为保证现有应用
   不受升级影响,建议使用0.18版)

  
./configure
make
make install
  

第二部分:安装qmail

1.添加Qmail所必须的用户和组
mkdir /var/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   

2.停止sendmail服务

/etc/rc.d/init.d/sendmail stop

将现存的 /usr/lib/sendmail 替代为 qmail 版本.
    mv /usr/lib/sendmail /usr/lib/sendmail.old                  # 忽略错误提示 
    mv /usr/sbin/sendmail /usr/sbin/sendmail.old                # 忽略错误提示 
    chmod 0 /usr/lib/sendmail.old /usr/sbin/sendmail.old        # 忽略错误提示
  
    ln -s /var/qmail/bin/sendmail /usr/lib
    ln -s /var/qmail/bin/sendmail /usr/sbin
注意: 创建 sendmail 的链接是很重要的, 即使不管以前的MTA, sendmail 命令也是一个会被很多程序调用来发送邮件的重要命令


3.安装Qmail包
tar -xzvf qmail-1.03.tar.gz
cd qmail-1.03

patch -p1 < ../qmail-1.03.errno.patch
patch -p1 < ../qmail-1.03-bind-interface.patch
注:qmail-1.03.errno.patch,qmail-1.03-bind-interface.patch放在qmail-1.03的上一级目录上

make setup check
./config-fast mail.com 

touch ~alias/.qmail-postmaster ~alias/.qmail-mailer-daemon ~alias/.qmail-root
chmod 644 ~alias/.qmail*

cp /var/qmail/boot/home  /var/qmail/rc
sed 's/Mailbox/Maildir\//g' /var/qmail/boot/home >/var/qmail/rc

4.安装tcpserver等服务程序
tar -xzvf ucspi-tcp-0.88.tar.gz
cd ucspi-tcp-0.88

patch -p1 < ../ucspi-tcp-0.88.errno.patch
make
make setup check

5.安装smtp支持

vi /etc/tcp.smtp
127.0.0.1:allow,RELAYCLIENT=""
172.18.1.:allow,RELAYCLIENT=""
192.168.7.:allow,RELAYCLIENT=""
172.18.2.:allow,RELAYCLIENT=""

/usr/local/bin/tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp

6.qmail的设置参数
cd /var/qmail/control/
vi defaultdomain
51mymail.com

vi concurrencyremote 
    120
用来决定qmail可以同时运行的远程投递进程的数目,默认值是20,标准安装的qmail最大可设值是120。

vi smtproutes
#21cn.net:172.18.1.37
#21cn.com:172.18.1.37
#sohu.com:172.18.1.37
#tom.com:172.18.1.37
#163.com:172.18.1.37
#126.com:172.18.1.37
#yeah.net:172.18.1.37
#netease.com:172.18.1.37
#sina.com:172.18.1.37
#sina.com.cn:172.18.1.37
#sina.com:202.106.182.239
#sina.com.cn:202.106.182.239
#lenovo.com:211.100.14.37
#right.com:172.18.1.39

vi queuelifetime
    400
用来指定一个邮件在队列中的最大存活时间,默认是604800秒

vi virtualdomains
mail.com:mail


7.添加别名用户
cd /var/qmail/alias/
../bin/maildirmake Maildir
ls -al
cp .qmail-mailer-daemon .qmail-mail-bounce
vi .qmail-mail-bounce
    ./Maildir/
cp .qmail-mail-bounce .qmail-mail-message
chown -R alias.qmail  ./
ls -al

8、配置开机时qmail自动启动
vi /etc/rc.d/init.d/qmail
##########################################################

#!/bin/sh
######## define the ok function
echook ()
{
echo -ne "\033[40C ["
echo -ne "\033[32m"
echo -ne "\033[1C ok"
echo -ne "\033[39m"
echo -ne "\033[1C ]\n"
}

####### get qmail sid and uid
QMAILDUID=`id -u qmaild`
NOFILESGID=`id -g qmaild`

###### touch tcpserver log file
if [ -z /var/qmail/tcpserver.log ]
then
    touch /var/qmail/tcpserver.log
else :
fi

####### mail
case "$1" in
start)
echo -en "Note: You can find the tcpserver log in /var/qmail/tcpserver.log.\n"
date >/var/qmail/tcpserver.log
echo -n "Start qmail service:  "
/var/qmail/rc &
echook

echo -n "Start smtp  service:  "
#echo -n "you can find the tcpserver log in /var/qmail/tcpserver.log."
/usr/local/bin/tcpserver -v -x /etc/tcp.smtp.cdb \
-u $QMAILDUID -g $NOFILESGID 0 smtp /var/qmail/bin/qmail-smtpd >>/var/qmail/tcpserver.log 2>&1  &
echook

#echo -en "Note: You can find the tcpserver log in /var/qmail/tcpserver.log.\n"

#echo -n "start pop3 service:"
#/usr/local/bin/tcpserver -R -H 0 pop3 \
#/var/qmail/bin/qmail-popup mail.madeforchina.com \
#/home/vpopmail/bin/vchkpw /var/qmail/bin/qmail-pop3d Maildir &
;;

stop)
echo -n "Stop  qmail service:  "
echook
killall qmail-remote >/dev/null 2>&1
killall -9 qmail-send >/dev/null 2>&1
killall tcpserver >/dev/null 2>&1
;;

restart|reload)
cd `pwd`
$0 stop
$0 start
;;

*)
echo $"Usage: $0 {start|stop|restart|reload}"
exit 1
;;

esac
exit 0


##########################################################

chmod 755 /etc/rc.d/init.d/qmail

qmail安装完成


第三部分:配置及启动
注:一定要先启动memcached,然后再启动qmail

1.编译带控制发送的程序
把qmail-remote.c,domain_init.c,domain_check.c放到qmail-1.03源码目录中。
    
使用makeremote.sh编译qmail-remote;
    注:关于报错:qmail-remote.c: In function 'main':
                 qmail-remote.c:434: warning: return type of 'main' is not 'int'
       这个错误没关系,不用管
   
使用gcc编译域控制模块
gcc -o domain_init domain_init.c /usr/local/lib/libmemcached.a
gcc -o domain_check domain_check.c /usr/local/lib/libmemcached.a
       
替换qmail-remote,及拷贝域控制模块
cp qmail-remote /var/qmail/bin/
cp domain_init  /var/qmail/bin/
cp domain_check  /var/qmail/bin/


2.启动memcached
/usr/local/memcached/bin/memcached -d -m 10 -p 11211 -u root

3.初始化域信息
配置文件格式 如:conf.txt
@hotmail.com  #a2
@yahoo.com     #b1

域名前面用@标记,域名结束后,添加一个或一个以上的空格,然后使用#作分隔符.a模
式标记从邮件开始发送时开始计时,直到规定的秒数后开始下一封邮件发送.b模式
从当前邮件发送结束开始计时,直到规定的秒数后开始下一封邮件.

4.执行域信息初始化
/var/qmail/bin/domain_init /var/qmail/control/conf.txt
命令行参数为域信息配置文件,我的放在了control下

5.启动qmail
/etc/rc.d/init.d/qmail start

6.检查当前域控制状态
/var/qmail/bin/domain_check /var/qmail/control/conf.txt
命令行参数为域信息配置文件


第四部分:qmail外发循环变换ip
新建/var/qmail/control/bindroutes文件,内容为
:12.113.140.70
该ip即为qmail外发使用ip,不需重启qmail

循环变换ip脚本
#!/bin/sh
while [ 1 ]
do
for i in "192.168.7.157" "192.168.7.158" "192.168.7.242"
do
echo ":$i">/var/qmail/control/bindroutes
sleep 1
done
done
每1秒变换一次ip。



第四部分:测试
echo "helllo" |/var/qmail/bin/qmail-inject test@rhel5.com


 
阅读(3495) | 评论(2) | 转发(0) |
0

上一篇:MTR

下一篇:【转】Outlook中多邮箱管理技巧

给主人留下些什么吧!~~

chinaunix网友2009-06-17 19:04:16

非常感谢!博主真牛,对qmail了解透彻,增加的这两个功能巧妙!我先深入学习一下博主的大作,有问题再向你请教!

chinaunix网友2009-06-16 14:30:22

请问, qmail-remote.c,domain_init.c,domain_check.c 是从那里来的 ?