簡述:qmail有一個(gè)名為rcpthosts(該文件名源于RCPTTO命令)的配置文件,其決定了是否接受一個(gè)郵件。只有當(dāng)一個(gè)RCPTTO命令中的接收者地址的域名存在于rcpthosts文件中時(shí),才接受該郵件
qmail有一個(gè)名為rcpthosts(該文件名源于RCPTTO命令)的配置文件,其決定了是否接受一個(gè)郵件。只有當(dāng)一個(gè)RCPTTO命令中的接收者地址的域名存在于rcpthosts文件中時(shí),才接受該郵件,否則就拒絕該郵件。若該文件不存在,則所有的郵件將被接受。當(dāng)一個(gè)郵件服務(wù)器不管郵件接收者和郵件接收者是誰,而是對(duì)所有郵件進(jìn)行轉(zhuǎn)發(fā)(relay),則該郵件服務(wù)器就被稱為開放轉(zhuǎn)發(fā)(openrelay)的。當(dāng)qmail服務(wù)器沒有rcpthosts時(shí),其是開放轉(zhuǎn)發(fā)的。
設(shè)置自己服務(wù)器為非openrelay的最簡單的辦法就是將你的郵件服務(wù)器的所有域名(若DNS的MX記錄指向該機(jī)器,也應(yīng)該包括該域名。但是這將導(dǎo)致你的本地客戶也被拒絕使用你的服務(wù)器轉(zhuǎn)發(fā)郵件,而要支持客戶使用MUA來發(fā)送郵件,必須允許客戶使用服務(wù)器轉(zhuǎn)發(fā)郵件。qmail-smtpd支持一種有選擇性的忽略rcpthosts文件的方法:若qmail-smtpd的環(huán)境變量RELAYCLIENT被設(shè)置,則rcpthost文件將被忽略,relay將被允許。但是如何識(shí)別一個(gè)郵件發(fā)送者是否是自己的客戶呢?qmail并沒有采用密碼認(rèn)證的方法,而是判斷發(fā)送郵件者的源IP地址,若該IP地址屬于本地網(wǎng)絡(luò),則認(rèn)為該發(fā)送者為自己的客戶。
這里就要使用ucspi-tcp軟件包。在這里我們要使用該軟件包的tcpserver程序。該程序的功能類似于inetd-監(jiān)聽進(jìn)入的連接請(qǐng)求,為要啟動(dòng)的服務(wù)設(shè)置各種環(huán)境變量,然后啟動(dòng)指定的服務(wù)。
tcpserver的配置文件是/etc/tcp.smtp,該文件定義了是否對(duì)某個(gè)網(wǎng)絡(luò)設(shè)置RELAYCLIENT環(huán)境變量。例如,本地網(wǎng)絡(luò)是地址為192.168.10.0/24的C類地址,則tcp.smtp的內(nèi)容應(yīng)該設(shè)置如下:
127.0.0.1:allow,RELAYCLIENT=""
192.168.10.:allow,RELAYCLIENT=""
:allow
這幾個(gè)規(guī)則的含義是指若連接來自127.0.0.1和192.168.10則允許,并且為其設(shè)置環(huán)境變量RELAYCLIENT,否則允許其他連接,但是不設(shè)置RELAYCLIENT環(huán)境變量。這樣當(dāng)從其他地方到本地的25號(hào)連接將會(huì)被允許,但是由于沒有被設(shè)置環(huán)境變量,所以其連接將會(huì)被qmail-smptd所拒絕。
但是tcopserver并不直接使用/etc/tcp.smtp文件,而是需要先將該文件轉(zhuǎn)化為cbd文件: [lix@mail/etc]$#tcprulestcp.smtp.cdbtcp.smtp.temp<tcp.smtp
然后再回頭看在/service/qmail-smtpd目錄下的run文件中有
/usr/local/bin/tcpserver-v-p-x/etc/tcp.smtp.cdb
可以看到,tcpserver利用了/etc/smtp.cbd文件。若本地有多個(gè)網(wǎng)絡(luò),則需要這些網(wǎng)絡(luò)都出現(xiàn)在/etc/tcp.smtp文件中。
這樣就實(shí)現(xiàn)了允許本地客戶relay郵件,而防止relay被濫用。
騰佑科技IDC服務(wù)有雙線服務(wù)器租用、網(wǎng)通服務(wù)器租用、電信服務(wù)器租用。
搜索詞
熱門產(chǎn)品推薦