Qmail邮件系统在给具有多条MX的大型站点发送邮件的时候会报下面的错误:delivery 55371: deferral: CNAME_lookup_failed_temporarily._(#4.4.3)/,在qmail的官方网站上面了解到通过安装djbdns可以加速DNS解析速度,提高qmail邮件的发送速度和效率,下面是安装djbdns详细过程。

1.安装djbdns,在http://cr.yp.to/djbdns/djbdns-1.05.tar.gz可以下载该软件包。

[root@mail qmail]#tar -zxvf djbdns-1.05.tar.gz

[root@mail qmail]#cd djbdns-1.05

在Centos上面make之前,先在djbdns-1.05目录执行下面的命令:

[root@mail djbdns-1.05]# echo gcc -O2 -include /usr/include/errno.h > conf-cc(否则会报错)

[root@mail djbdns-1.05]# make

[root@mail djbdns-1.05]# make setup check

安装完成后,可以在/usr/local/bin的目录下看到如dnscache,tinydns等程序。

2.建立djbdns的配置文件。

[root@mail djbdns-1.05]# makedir -p /etc/dnscache

[root@mail djbdns-1.05]# dnscache-conf nobody nobody /etc/dnscache 127.0.0.1

[root@mail djbdns-1.05]# ln -s /etc/dnscache /service

[root@mail djbdns-1.05]# svstat /service/dnscache  (启动服务)

3.查看djbdns服务,如果出现127.0.0.1:53端口在说明配置成功。

[root@mail ~]# netstat -antl |grep LISTEN |grep "53"

tcp      0    0 127.0.0.1:53             0.0.0.0:*       LISTEN          

4.修改DNS配置文件,在/etc/resolv.conf下面添加nameserver 127.0.0.1,推荐放在其它nameserver前面,这样DNS解析的时候会优先查找DNS缓存。

5.用dig 命令测试www.google.com.cn,第一次解析是通过互联网上面的DNS服务器进行解析www.google.com.cn,整个解析过程用了181毫秒。

安装djbdns优化qmail邮件系统发送邮件速度_第1张图片

 6.当用dig命令在此解析www.google.com.cn域名时,服务器会直接调用本机的DNS缓存记录,DNS解析效率大大提升,几乎在瞬间就可以完成。

安装djbdns优化qmail邮件系统发送邮件速度_第2张图片

7.通过nslookup命令可以看到,当第二次解析www.google.com.cn域名的时候,是通过127.0.0.1,即本地DNS缓存返回的主机记录。

安装djbdns优化qmail邮件系统发送邮件速度_第3张图片

8.默认djbdns使用1MB的内存作为它的缓存空间,通过下面的命令可以调整缓存空间为100MB,然后重启dnscache即可。
 echo 100000000 > /service/dnscache/env/CACHESIZE
 echo 104857600 > /service/dnscache/env/DATALIMIT
 svc -t /service/dnscache    #重启dnscache服务
9.查看dnscache服务运行状态。
[root@mail ~]# svstat /service/dnscache/
/service/dnscache/: up (pid 19693) 7945 seconds
10.通过tail -f /etc/dnscache/log/main/current查看DNS缓存日志。
安装djbdns优化qmail邮件系统发送邮件速度_第4张图片

11.刷新Dnscache缓存。
有时候互联网上的DNS记录已经发生改变了,而本地DNS缓存还是旧的,可用如下命令来刷新Dnscache。
[root@mail ~]# /usr/bin/svc -t /service/dnscache
通过crontab定期自动刷新Dnscache,脚本内容如下:
[root@mail ~]# vim /root/sh/flush_dns.sh
#!/bin/bash
/usr/bin/svc -t /service/dnscache
[root@mail ~]# chmod o+x /root/sh/dns_flush.sh
添加crontab,每天凌晨自动执行。
[root@mail ~]# crontab -e
00 00 * * * /root/flush_dns.sh