Sendmail 配置具體命令詳解
學linux久了,也寫點東西讓大家共享,為了能從網(wǎng)絡(luò)上接收SMTP電子郵件,我們必須在Linux系統(tǒng)上運行Sendmail守護進程。以下是具體命令和實現(xiàn)。
為了方便起見,我們應(yīng)該使用ntsysv命令把Sendmail守護進程加到引導程序中,在多數(shù)情況下,安裝時Linux就已經(jīng)自動將Sendmail 配置包含在引導程序中了。這樣每次開機時,Linux都會啟動Sendmail守護進程并偵聽端口25,處理進入的郵件。
Sendmail配置文件是/etc/sendmail.cf文件,它包含大部分的Sendmail配置的信息,包括在用戶郵件程序和郵件傳輸程序之間為郵件選擇路由所需的信息。Sendmail.cf文件有三個主要功能:
·定義Sendmail環(huán)境。
·按照接收郵件程序的語法重寫地址。
·將地址映射成傳送郵件所需的指令。
執(zhí)行所有這些功能需要若干命令。一些宏定義和可選用的命令可定義其環(huán)境,一些重寫規(guī)則可以重寫電子郵件的地址,一些郵件程序定義可定義傳送郵件所必需的指令。
sendmail.cf文件很大,看上去可復雜,但我們需要改動的地方很少。主要在local info中做文章。請在文件中尋找“Cw”,原來產(chǎn)生的cf 文件,Cw應(yīng)是:
Cwlocalhost
請在localhost之后加上我們那一臺機器所有可能用來當收信地址的主機的名字。例如,在局域網(wǎng)絡(luò)Virtual Brewery中的一臺機器叫:vlager.vbrew.com,而且也叫g(shù)opher.vbrew.com,而該網(wǎng)絡(luò)的管理員希望這一臺機器的這兩個名字都能收信,那么他需要這樣修改sendmail.cf文件:
Cwlocalhost vlager.vbrew.com gopher.vbrew.com
上面只是一種簡便的方法,如果系統(tǒng)中運行著DNS,我們可以通過DNS來解析主機別名(如下所示),而不用加上主機別名gopher.vbrew.com。如果沒有運行DNS,那么必須將本機器的所有名字都寫上。
如果用作郵件服務(wù)器的主機有多個名字(hostname),例如:
vlager IN A 191.72.1.1
gopher IN CNAME vlager
那么我們可以不必在Cw上標明,系統(tǒng)會透過DNS 找到它的別名
如果一臺機器有多個名字,但是每一個別名是用A record 建立的,例如:
vlager IN A 191.72.1.1
gopher IN A 191.72.1.1
在這種情況下【一定】要記得在Cw后寫上所要收信主機的名字。如果忘 記了,那么從外面寄來的以別名為地址的信件將無法正常接收,機器會抱怨:
“Local configuration error” 例如,如果在sendmail.cf中的Cw這行是Cw vlager.vbrew.com,那么局域網(wǎng)Virtual Brewery中的用戶將無法使用郵件地址 username@gopher.vbrew.com 而只能用username@vlager.vbrew.com,否則將出現(xiàn)上述錯誤。
如果一臺機器有多interface,各interface有其本身的名字,而且要收信。 這種情況也要在Cw之後寫明所有要收信的hostname。 在我們的例子中F命令是作為注釋處理的,如果去掉它前面的“ sendmail將從/etc/sendmail.cw中讀取主機的別名,并將別名儲存在類w中。將F命令做注釋處理,并讓sendmail在內(nèi)部定義別名這是一種最常用的方法。
打開/etc/mail/access文件時,會看到(注意一些系統(tǒng)的access文件不再/etc/mail下,如找不到請用whereis查找或檢查是否安裝正常):
- iption le)
- l-doc
- localhost.localdomain RELAY
- localhost RELAY
如果我們主機的IP地址是191.72.1.1的話,就應(yīng)該在最后一行加上它的記錄項,這樣,我們修改后的文件的最后三行應(yīng)是:
- localhost.localdomain RELAY
- localhost RELAY
- 191.72.1.1 RELAY
加上這句話我們就可以用sendmail發(fā)送接收mail了。但是如果我們想讓別人也可以使用sendmail的話,而他的IP是202.168.25.22,這樣就在在最后一行加入他的主機的記錄項,這時文件的最后四行應(yīng)是:
- localhost.localdomain RELAY
- localhost RELAY
- 191.72.1.1 RELAY
- 202.168.25.22 RELAY
當我們考慮到多用戶的時候,sendmail允許我們添入整個B類或C類地址,其格式如下:
- localhost.localdomain RELAY
- localhost RELAY
- 191.72 RELAY
- 202.168.25 RELAY
這樣,我們就是把整個網(wǎng)絡(luò)都加入的sendmail中,這個地址中的用戶,如果在我們的系統(tǒng)里有賬號的話,可以使用sendmail收發(fā)信件了。 Linux還允許我們設(shè)置郵局協(xié)議(POP)郵件服務(wù)器,POP協(xié)議分兩個版本POP2和POP3,很顯然POP3是新版本的郵局協(xié)議,現(xiàn)在Internet網(wǎng)上主要是POP3協(xié)議。 POP3并不需要我們來配置,RedHat已經(jīng)為我們做好了這一工作。我們只需要修改一下 /etc/inetd.conf文件,確保POP3能正常工作即可:
在我們配置完sendmail后,可以運行以下的命令來檢查目錄的讀寫權(quán)限以檢查潛在的安全漏洞。
這時,sendmail將開始初始化alias數(shù)據(jù),如果在屏幕上回顯:
- WARNING: writable directory /etc
- WARNING: writable directory /usr/spool/mqueue
那么這個目錄列出了不適當?shù)膶懱貦?quán),應(yīng)該使用chmod和 chown命令以避免多方面的的安全攻擊。一般我們需要對如下目錄運行chmod和chown命令: mqueue
sendmail 的有一些參數(shù)可以用于驗證地址處理的結(jié)果,以確保其新配置的合理性。一旦認為配置可以正常工作了,我們就可以選擇各個站點上的朋友,并將郵件發(fā)送給他們。發(fā)送時使用-v參數(shù)就可以顯示郵件傳輸?shù)母鱾€細節(jié)和兩個站點之間進行SMTP交換的全過程。下面是一個測試的例子,使用的文件是test.cf,一旦測試成功,我們就可以將這個文件拷貝到/etc下并可以改名為sendmail.cf。
- To: lack@vlager.vbrew.com
- From:janet
- Subject:Test for sendmail
- Lack,please reply if you see this,Thanks.
- ^D
- lark@ vlager.vbrew.com…..Connecting to vlager.vbrew.com via t
- cp…
- Trying 191.72.1.1 ….connected.
- 220 VLAGER.VBREW.COM on Web, 30 Sep 99 16:23:23 CST
- >>> HELLO maths.groucho.edu
- 250 VLAGER.VBREW.COM is my domain name
- >>> MAIL From:< gauss.maths.groucho.edu.>
- 250 OK
- >>> DATE
- 354 Enter mail body, End by new line with just a ‘.’
- >>>.
- 250 Mail Delivered
- >>> QUIT
- 221 VLAGER.VBREW.COM closing connection
- lack@vlager.vbrew.com …sent
我們在CTRL-D之前輸入所有的內(nèi)容,而sendmail則顯示^D之后的內(nèi)容。通過對sendmail的測試,我們就可以發(fā)現(xiàn)潛在的配置問題,并使用sendmail提供的一些附加查錯工具解決這些問題。
文章轉(zhuǎn)載自網(wǎng)管網(wǎng):http://www.bitscn.com/os/linux/200604/6356.html
【編輯推薦】
- Sendmail 配置的排錯方法
- Sendmail 配置的使用說明
- Linux 性能檢測工具Uptime簡單介紹
- Sendmail 配置E-Mail服務(wù)器實現(xiàn)E-Mail靈活運用
- Sendmail 配置E-Mail服務(wù)器