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毫秒。
6.當用dig指令在此解析www.google.com.cn域名時,伺服器會直接調用本機的DNS緩存記錄,DNS解析效率大大提升,幾乎在瞬間就可以完成。
7.通過nslookup指令可以看到,當第二次解析www.google.com.cn域名的時候,是通過127.0.0.1,即本地DNS緩存傳回的主機記錄。
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緩存日志。
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