You are on page 1of 9

1. 認識 DNS.........................................................................................................................................................

1
2. 系統環境..........................................................................................................................................................1
3. 檔案及指令 (File, RPM Info)..........................................................................................................................2
4. /etc/named.conf 及 Dns 正反解檔基本設定...................................................................................................3
5. Sendmail 設定及問題與解答..........................................................................................................................6
6. 如何使用 sendmail 寄發暱名信件..................................................................................................................8
7. Url Links 網路連結..........................................................................................................................................9

1. 認識 DNS

 此參考文件是一份非常基礎且簡易的 DNS / Sendmail 架設應用參考資料。 本文最主要的目的在於


基本的 DNS/Sendmail 結合與應用。 有關更詳細的 DNS / Sendmail 介紹請參考 Internet Links 網路連
結的參考網站。

Linux 伺服器最普遍應用的服務莫過於名稱伺服器(DNS)與郵件伺服器(Sendmail)的搭配使用。 雖然說


這兩者的功能似乎在作業系統安裝完畢後就可輕易的啟用。 但是如果想要進一步去設定及除錯就必須
要有基本的網路管理觀念和實務上的應用管理經驗才能有效率的進行管理工作。

DNS 網域名稱服務(Domain Name Service).為機器命名的規則以及將這些名稱轉換為 IP 數字的軟體。


簡單來說 DNS 就是將 IP 與電腦/網域名稱做一個連結。 本文將先帶領您設定一個主要的 DNS 伺服器
(primary DNS) 所需要了解的幾項設定。 接著將為您說明 DNS 的除錯方式以提昇網路的整體效能。

Sendmail 是許多 Unix 的預設郵件服務。 您可以經由此服務與 Internet 上的任一主機交換郵件。 本文最


主要在提供 DNS 與 sendmail 的結合與應用。 您將會看到許多實際的範例及許多問題與解答(FAQ)。並
將帶領您管理多重網域及在此環境下的使用者身份的處理方式。

2. 系統環境

本文將以 RedHat 預設的系統環境為主。 雖然 RedHat 已經有預設的 DNS 及 Sendmail 但是某些版本的


服務需要更新以防止服務停擺及問題的發生,因此必需要重新安裝或昇級。
首先用 RPM 的工具去了解系統版本: rpm –q sendmail 及 rpm –q bind 或是如果您的服務正在執行可由
以下指令來查詢:
 DNS Version 8.2.2-P3

1
檢查 Bind 版本。

[denny@server]# /usr/sbin/named -v
named 8.2.2-P3 Thu Nov 11 00:04:50 EST 1999
root@porky.devel.redhat.com:/usr/src/bs/BUILD/bind-8.2.2_P3/src/bin/named

 Sendmail 8.9.3

檢查 Sendmail 版本。

[denny@server]# telnet localhost 25


Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 server ESMTP Sendmail 8.9.3/8.9.3; Tue, 30 Jan 2001 06:39:12 +0800
quit
221 server closing connection
Connection closed by foreign host.

3. 檔案及指令 (File, RPM Info)

rpm -q bind DNS RPM 版本 - query


rpm -q sendmail
rpm –qi bind 說明基本資料 - information
rpm -ql bind 檔案清單 - list

/etc/named.conf DNS 主控設定檔


/var/named/domain.hosts DNS 正查設定檔
/var/named/domain.rev DNS 反查設定檔
/etc/sendmail.cf Sendmail Configuration(cf) 設定檔案
/var/spool/mqueue Sendmail 郵件(傳送中,問題信)暫存區
/var/spool/mail Sendmail 個人新郵件存檔區

指令 mailq – 用來查詢尚未寄出的郵件
Mail Queue (1 request)
--Q-ID-- --Size-- -----Q-Time----- ------------Sender/Recipient------------

2
MAA08230* 6 Thu May 10 12:33 root denny@yahoo.com

4. /etc/named.conf 及 Dns 正反解檔基本設定

/etc/named.conf

options {
directory "/var/named";  設定 檔案目錄
};
zone "domain2.com.tw"{
type master;  主要 DNS
file "domain2.hosts";
notify yes;
};
zone "chuang.com"{
type slave;  次要 DNS
file "sec/chuang.com";  檔案將存到 /var/named/sec/chuang.com 的次目錄下
notify yes;
};

IP 正解檔設定 (A Record 及 Mail eXchange Setup)


;-------------------------------------------
$TTL 259200 ; minimun Time-To-Live = 3 days
;-------------------------------------------
; Start Of Authority 宣告管轄這個網域的 DNS
; 其 Domain Name。
;--------------------------------------------

@ IN SOA ns.taching.com.tw. hostmaster.ns.taching.com.tw. (


2001020601 ; serial 修改此檔後請更新
3600 ; refresh
900 ; retry
1209600 ; expire
43200 ; default_ttl
)
;--------------------------------------------
; 指定 NameServer 主機 以下設定 master 和 slave

3
;--------------------------------------------
IN NS ns.taching.com.tw.
IN NS ns2.taching.com.tw.
;--------------------------------------------
; Mail eXchange 郵件主機優先順序設定
;--------------------------------------------
@ IN MX 10 mail.taching.com.tw.
@ IN MX 20 mail2.taching.com.tw.
;--------------------------------------------
; Address 宣告 Domain 與 IP Address 的對映關係。
;--------------------------------------------

ns IN A 210.243.165.66
taching.com.tw. IN A 210.243.165.66
mail IN CNAME ns.taching.com.tw.
ftp IN CNAME ns.taching.com.tw.

IP 反解檔設定 (Reverse Table Setup)

;-------------------------------------------
; DNS 反解檔(由 IP 反解出 Domain Name)
;-------------------------------------------
$TTL 259200 ; minimun Time-To-Live = 3 days
;-------------------------------------------
; Start Of Authority 宣告管轄這個網域的 DNS
; 其 Domain Name。
;--------------------------------------------
@ IN SOA dns.domain1.com.tw. root.dns.domain1.com.tw. (
2001020701 ; Serial 這是 2001 年 2 月 7 日第一次更改
4H ; Refresh
2H ; Retry
1W ; Expire
1D ) ; For Negative Caching

;--------------------------------------------
; 本網域的主要 Name Server,協助 DNS 的查詢速率
;--------------------------------------------
IN NS ns1.domain1.com.tw. ; 本機 dns
IN NS ns2.domain1.com.tw. ; slave

4
;--------------------------------------------
; 這裡是反解網域設定檔最重要的地方。 Subnet.
;--------------------------------------------
$Origin 64-26.224.19.163.in-addr.arpa. ; IP 的分段(此處為第 2 段)。
;--------------------------------------------

;--------------------------------------------
; Domain Name Pointer
; 網域內的 IP,全部表列出來。
;--------------------------------------------
65 IN PTR client65.domain1.com.tw.
66 IN PTR client66.domain1.com.tw.
67 IN PTR client67.domain1.com.tw.

5. DNS 除錯 (Troubleshooting) 與 nslookup, dip, host 工具


您可使用下列指令來將 named 的系統訊息一一列出:
less /var/log/messages |grep named |more

nslookup  這是一支歷史悠久的 nameserver 程式, 將來會被 host 取代。


此程式將會用 /etc/resolv.conf 預設的 nameserver 來做查詢
set q=a A record 查詢
set q=mx Mail 主機查詢
set q=ptr 反解查詢
set q=soa NS 主機查詢

host 程式可用來查詢 DNS 設定的資料


# host yahoo.com.tw  查詢 yahoo.com.tw 的 IP 及 mail server 設定
yahoo.com.tw has address 202.1.234.8
yahoo.com.tw has address 202.1.234.7
yahoo.com.tw has address 202.1.234.6
yahoo.com.tw mail is handled (pri=0) by mx1.mail.tw.yahoo.com
yahoo.com.tw mail is handled (pri=1) by mx2.mail.tw.yahoo.com

# host -v yahoo.com  查詢 yahoo.com.tw 的 IP 及所有詳細資料 -verbose


Trying null domain
rcode = 0 (Success), ancount=2

5
The following answer is not authoritative:
The following answer is not verified as authentic by the server:
yahoo.com 35 IN A 216.115.108.245
yahoo.com 35 IN A 216.115.108.243
For authoritative answers, see:
yahoo.com 30331 IN NS NS3.EUROPE.yahoo.com
yahoo.com 30331 IN NS NS1.yahoo.com
yahoo.com 30331 IN NS NS5.DCX.yahoo.com
Additional information:
NS3.EUROPE.yahoo.com 164169 IN A 217.12.4.71
NS1.yahoo.com 164169 IN A 204.71.200.33
NS5.DCX.yahoo.com 164169 IN A 216.32.74.10

# host 202.1.234.8  查詢 202.1.234.8 的 網域名稱及反查設定 (reverse lookup)


8.234.1.202.IN-ADDR.ARPA domain name pointer w3.tpe.yahoo.com

# host -t ptr 216.115.106.34  進行反查 216.115.106.34


34.106.115.216.IN-ADDR.ARPA domain name pointer l3.login.vip.snv.yahoo.com

# host www  查詢本網域中的 www 主機的 IP


# host –t ns mail.yahoo.com  僅列出 mail.yahoo.com 的 nameserver (ns)
# host -t mx uk.com.tw dns.seed.net.tw  利用 seednet dns 查詢 uk.com.tw 的 MX 主機

-t 查詢選項 ``a'', ``ns'', ``md'', ``mf'', ``cname'', ``soa'', ``mb'', ``mg'', ``mr'', ``null'', ``wks'', ``ptr'', ``hinfo'',
`minfo'', ``mx'', ``uinfo'', ``uid'', ``gid'', ``unspec'' ``any'' 或 ``*'' 都可用來 查詢特別的格式設定。

# dig @dns.hinet.net your.domain.name mx


# dig @dns.hinet.net your.domain.name a

5. Sendmail 設定及問題與解答

Q: 我想要收信時能夠將 user@abc.com 的信送至 mail.abc.com 但是在 MX 設定後郵件退回並指出出現


以下問題 config error: mail loops back to me (MX problem?) Local configuration error

Answer:
這個問題最主要是 Sendmail 上的設定無法依照 MX 來運作. 通常 MX 的主機是設定為

abc.com IN MX 10 mail.abc.com
abc.com IN MX 20 mail2.abc.com

6
mail.abc.com 本身是 CNAME 所以 sendmail 無法解析 mail.abc.com 請在 /etc/sendmail.cw 加入 mail.abc.com 或是直接在
/etc/sendmail.cf 加入 Cw mail.abc.com, domain2.com, domain3.com
如果本身還有接受 domain2 和 domain3 之 mail 請全部加在 Cw 之後
Q: 我想要在主機設定拒絕某個人的來信, 或者是某個網域的來信

Answer:
您可以在 /etc/access 內加入 所要接受(RELAY),作廢(DISCARD),拒絕(DENY)之 IP, 網域,及 email 帳號, 請參考以下範例.

kitty@yahoo.com DENY
john@yahoo.com I Love You
usa.net DISCARD
第一行設定將會把信件退回到寄件者 kitty@yahoo.com, 第二行設定將會把 john@yahoo.com 寄出標題為 I Love You 的信件
退回第三行設定將會把 usa.net 寄出的信件作廢

Q: 我想要在個人帳戶內設定拒絕某個人的來信

Answer:
您可以在 .procmailrc 內將某寄件人的信件分類, 如果是要拒絕掉最快的方式就是把它指向 /dev/null 的垃圾桶內. 請參考
procmail 範例.

Q: 請問 Hi, sendmail 可不可以將信件交給上游處理,這樣的話就不會佔用頻寬了?

Answer: /etc/sendmail.cf 裡有一個 DS 的區段,只要在後面加上上游的 server 就可以了


如: Smsa.hinet.net

Q: 如何架設多網域的虛擬郵件主機?

Answer:

對外要設定 /etc/genericstable
servicea service@a.com
serviceb service@b.com

設定完畢後
makemap hash /etc/genericstable < /etc/genericstable

對內收信時要用 /etc/mail/virtusertable
(有相同名稱才需要)
service@a.com servicea
service@b.com serviceb

設定完畢後

7
makemap hash /etc/mail/virtusertable < /etc/mail/virtusertable

信件由 servicea 寄出時發信人會改成 service@a.com


serviceb 會變成 service@b.com

Q: 我想要禁止用戶寄出大於 10 MB 的信件, 請問要如何設定?

將/etc/sendmail.cf 檔案中的 MaxMessageSize 將 # 的註解移除再重新啟動 sendmail 即可。


# maximum message size
#O MaxMessageSize=1000000

6. 如何使用 sendmail 寄發暱名信件

1. 先 telnet 到某一台有跑 sendmail 主機, 並指定連上 port 號 25


telnet hacker.ols3.com.tw 25
該主機會回應自己的 hostname 及所使用的協定. 如下所示:
220 ms1.abc.com.tw ESMTP Sendmail 8.9.3/8.9.3; Sun, 18 Jul 1999 15:37:13 +08 00
hacker 這台主機回應說它現在正跑 ESMTP (SMTP 的加強版), sendmail 的版本是 8.9.3

2. 偽造自己的 domain
helo nono.com.tw
該主機會回應歡迎的訊息, 如下所示:
250 ms1.abc.com.tw Hello [192.168.54.4], pleased to meet you

3. 偽造發信人
mail from: jack@nono.com.tw
該主機會回應以下訊息, 表示發信人的位址被接受了.
250 jack@nono.com.tw... Sender ok

4. 指定收信人
rcpt to: test@yahoo.com.tw
該主機會回應以下訊息, 表示收信人的位址被接受了.
250 test@yahoo.com.tw... Recipient ok

5. 送出信件內容
送出信件內容之前, 應先通知對方:
data
該主機回應如下, 表示你可以開始送出信件內容, 信件結束時用 . 號檔結尾符號
354 Enter mail, end with "." on a line by itself

8
Hey, this is a junk e-mail.
Bye bye!
.

該主機回應:
250 PAA01122 Message accepted for delivery
表示信件件已被接收了.

6. 離線
quit

7. Url Links 網路連結

http://www.ibiblio.org/pub/Linux/docs/HOWTO/ Linux HOWTO 的英文站台


http://www.sendmail.org sendmail 英文站台
http://www.linux.org.tw/CLDP/DNS-HOWTO-2.html 中文 Howto 資料
http://rpmfind.net RPM 的檔案搜詢站台

You might also like