天天看點

安裝djbdns優化qmail郵件系統發送郵件速度

    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緩存。

安裝djbdns優化qmail郵件系統發送郵件速度

5.用dig 指令測試www.google.com.cn,第一次解析是通過網際網路上面的DNS伺服器進行解析www.google.com.cn,整個解析過程用了181毫秒。

安裝djbdns優化qmail郵件系統發送郵件速度

 6.當用dig指令在此解析www.google.com.cn域名時,伺服器會直接調用本機的DNS緩存記錄,DNS解析效率大大提升,幾乎在瞬間就可以完成。

安裝djbdns優化qmail郵件系統發送郵件速度

7.通過nslookup指令可以看到,當第二次解析www.google.com.cn域名的時候,是通過127.0.0.1,即本地DNS緩存傳回的主機記錄。

安裝djbdns優化qmail郵件系統發送郵件速度

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

繼續閱讀