sendmail郵件服務(wù)權(quán)限的設(shè)定
設(shè)定sendmail 郵件服務(wù)器使用權(quán)限:
/etc/mail/access
在你啟動(dòng)了 Sendmail 以及設(shè)定好主機(jī)名稱(chēng) ( local-host-names )之后,那你就可以利用『在你的主機(jī)上面利用你的主機(jī)來(lái)寄信』了!為什么要加上『在你的主機(jī)上面』呢?還記得我們?cè)谇懊嬗刑徇^(guò),為了杜絕廣告與垃圾信件,所以預(yù)設(shè)的情況中, Sendmail 是關(guān)閉 Open Relay 的對(duì)吧!但是為了主機(jī)使用者的方便,所以我們預(yù)設(shè)是有啟動(dòng) local 這個(gè) Mailer ,也就是說(shuō):
1. 只有使用者是在主機(jī)上面發(fā)信的,例如使用 SSH 登入主機(jī)后,以 mail 這個(gè)指令來(lái)發(fā)信;
2. 又或者使用者直接在主機(jī)上面使用 X-Window System 里面的郵件代理人,亦即是 Netscape 或者是 Kmail 等軟件來(lái)發(fā)信
的時(shí)候,我們的 Sendmail 才會(huì)幫使用者『寄信』喔!至于其它的計(jì)算機(jī)來(lái)源的『寄信』郵件,Sendmail 一概將他退信回去!那么如果我想要在其它的計(jì)算機(jī)上面使用我這部 Mail Server 來(lái)寄信呢?這個(gè)時(shí)候就要編輯『/etc/mail/access』這個(gè)信任網(wǎng)域設(shè)定的檔案啦!假設(shè)一個(gè)例子好了:
我的 Sendmail 主機(jī)想要支持我內(nèi)部網(wǎng)域的所有計(jì)算機(jī)來(lái)寄信,而我內(nèi)部網(wǎng)域的計(jì)算機(jī) IP 網(wǎng)段為 192.168.0.0/24 這一段;
還有,我另外有一個(gè)公共 IP ( Public IP )為 140.116.44.125 ,也想要讓他可以寄信;
此外,我發(fā)現(xiàn) 192.168.1.100 計(jì)算機(jī)使用者都會(huì)亂寄垃圾給我的郵件主機(jī),所以我想要擋掉他;
那個(gè) h8h.com 也有問(wèn)題,我也要擋掉這個(gè)網(wǎng)域 (domain) 的來(lái)源;
更發(fā)現(xiàn)有個(gè)使用者叫做 test@testing.domain.name 也是色情廣告信業(yè)者!那么我可以怎樣設(shè)定 Sendmail 的存取權(quán)限呢?
在 /etc/mail/access 當(dāng)中,只要有加上 # 就是批注內(nèi)容,所以不會(huì)被讀入數(shù)據(jù)庫(kù)當(dāng)中!其實(shí)真正的 Sendmail 可以讀得到的數(shù)據(jù)庫(kù)是 /etc/mail/access.db 這個(gè)檔案,不過(guò),我們必需先在 /etc/mail/access 編輯完畢后,再以 makemap 這支程序?qū)⑺膶?xiě)成為數(shù)據(jù)庫(kù)!所以,不要忘記 makemap 那個(gè)步驟喔!由上面的檔案我們就可以知道啦, access 的語(yǔ)法為
規(guī)定的范圍:規(guī)定可以在sendmail上面的動(dòng)作
IP/不完整IP/主機(jī)名稱(chēng)/E-mail RELAY/DISCARD/REJECT
在『規(guī)定范圍』與『規(guī)定可以在 sendmail 上面的動(dòng)作』兩項(xiàng)目之間最好以
from:test@your-domain.com.tw REJECT
to:blah@your-domain.com.tw REJECT
當(dāng)信件想要使用我們的郵件主機(jī)來(lái)進(jìn)行寄信或者是 Relay 的動(dòng)作時(shí),首先會(huì)傳送 mail header 到我們的 mail server 上面,這也就是一些郵件的基本數(shù)據(jù)(如認(rèn)證信息、來(lái)源IP、目標(biāo)的 MTA 等等),但并不包含郵件的內(nèi)容(例如信件本體、附件夾帶等等的內(nèi)容)。也就是說(shuō),一封郵件基本上可以分為兩大部分,分別是 Header 與 Body ,Header 僅記錄郵件基本信息,Body 才是真正的信件內(nèi)容。當(dāng)郵件想要進(jìn)入 MTA 時(shí),會(huì)先發(fā)送 Header 給 MTA ,MTA 判斷這個(gè) Header 的信息是可接受的之后,才后繼續(xù)接受來(lái)源主機(jī)的郵件 Body 內(nèi)容!如果這些基本訊息傳送過(guò)來(lái)的主機(jī)信息包括在 /etc/mail/access.db 里面所記錄到的主機(jī)(或IP)范圍時(shí),就可以指定底下這些動(dòng)作:
RELAY:允許該來(lái)源主機(jī)所傳送過(guò)來(lái)的郵件可以被接受,然后再進(jìn)行 Relay 的動(dòng)作。以上面的范例為例,則 192.168.0.0/24 來(lái)源的計(jì)算機(jī)所發(fā)送來(lái)我們 Mail Server 的郵件將會(huì)被接受喔!•REJECT:若來(lái)源主機(jī)的主機(jī)名稱(chēng)或 IP 在 REJECT 的情況下,則我們 Mail Server 將不會(huì)接受對(duì)方的郵件內(nèi)容(就是 body 部分),『并且會(huì)回傳一個(gè)錯(cuò)誤或警告訊息給原發(fā)信端』喔!•DISCARD:與 REJECT 相似,亦即關(guān)閉規(guī)定范圍內(nèi)的計(jì)算機(jī)主機(jī)的 RELAY 功能,不過(guò), Sendmail 會(huì)直接將該信件『丟棄』而不會(huì)『退回』!通常我們比較建議使用 DISCARD 啦!為什么呢?如果該 IP 來(lái)源傳送的是廣告信件,您又使用 REJECT 的話,那么兩方面的郵件主機(jī)將會(huì)一再地進(jìn)行 mail header 的傳送,也是挺消耗頻寬的!所以我們比較建議使用 DISCARD!再來(lái),由于 access 不支持網(wǎng)域的寫(xiě)法,亦即
192.168.0.0/24
192.168.0.0/255.255.255.0
這種類(lèi)型的網(wǎng)域?qū)懛ú⒉荒鼙皇褂玫?所以,只能以 192.168.0 這種寫(xiě)法來(lái)達(dá)成整個(gè)網(wǎng)域的設(shè)定了!也就是說(shuō), access 里面大概只能支持 A/B/C Class 的網(wǎng)域, subnet 大概就無(wú)法達(dá)成了!只能一個(gè)一個(gè) IP 的 Keyin 啰!編輯完這個(gè)檔案之后,就可以讓你的其它主機(jī)使用 Sendmail 的 Relay 功能啰!還不賴(lài)吧!
【編輯推薦】