Sendmail 配置具體命令詳解
學linux久了,也寫點東西讓大家共享,為了能從網絡上接收SMTP電子郵件,我們必須在Linux系統上運行Sendmail守護進程。以下是具體命令和實現。
為了方便起見,我們應該使用ntsysv命令把Sendmail守護進程加到引導程序中,在多數情況下,安裝時Linux就已經自動將Sendmail 配置包含在引導程序中了。這樣每次開機時,Linux都會啟動Sendmail守護進程并偵聽端口25,處理進入的郵件。
Sendmail配置文件是/etc/sendmail.cf文件,它包含大部分的Sendmail配置的信息,包括在用戶郵件程序和郵件傳輸程序之間為郵件選擇路由所需的信息。Sendmail.cf文件有三個主要功能:
·定義Sendmail環境。
·按照接收郵件程序的語法重寫地址。
·將地址映射成傳送郵件所需的指令。
執行所有這些功能需要若干命令。一些宏定義和可選用的命令可定義其環境,一些重寫規則可以重寫電子郵件的地址,一些郵件程序定義可定義傳送郵件所必需的指令。
sendmail.cf文件很大,看上去可復雜,但我們需要改動的地方很少。主要在local info中做文章。請在文件中尋找“Cw”,原來產生的cf 文件,Cw應是:
Cwlocalhost
請在localhost之后加上我們那一臺機器所有可能用來當收信地址的主機的名字。例如,在局域網絡Virtual Brewery中的一臺機器叫:vlager.vbrew.com,而且也叫gopher.vbrew.com,而該網絡的管理員希望這一臺機器的這兩個名字都能收信,那么他需要這樣修改sendmail.cf文件:
Cwlocalhost vlager.vbrew.com gopher.vbrew.com
上面只是一種簡便的方法,如果系統中運行著DNS,我們可以通過DNS來解析主機別名(如下所示),而不用加上主機別名gopher.vbrew.com。如果沒有運行DNS,那么必須將本機器的所有名字都寫上。
如果用作郵件服務器的主機有多個名字(hostname),例如:
vlager IN A 191.72.1.1
gopher IN CNAME vlager
那么我們可以不必在Cw上標明,系統會透過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,那么局域網Virtual Brewery中的用戶將無法使用郵件地址 username@gopher.vbrew.com 而只能用username@vlager.vbrew.com,否則將出現上述錯誤。
如果一臺機器有多interface,各interface有其本身的名字,而且要收信。 這種情況也要在Cw之後寫明所有要收信的hostname。 在我們的例子中F命令是作為注釋處理的,如果去掉它前面的“ sendmail將從/etc/sendmail.cw中讀取主機的別名,并將別名儲存在類w中。將F命令做注釋處理,并讓sendmail在內部定義別名這是一種最常用的方法。
打開/etc/mail/access文件時,會看到(注意一些系統的access文件不再/etc/mail下,如找不到請用whereis查找或檢查是否安裝正常):
- iption le)
- l-doc
- localhost.localdomain RELAY
- localhost RELAY
如果我們主機的IP地址是191.72.1.1的話,就應該在最后一行加上它的記錄項,這樣,我們修改后的文件的最后三行應是:
- localhost.localdomain RELAY
- localhost RELAY
- 191.72.1.1 RELAY
加上這句話我們就可以用sendmail發送接收mail了。但是如果我們想讓別人也可以使用sendmail的話,而他的IP是202.168.25.22,這樣就在在最后一行加入他的主機的記錄項,這時文件的最后四行應是:
- 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
這樣,我們就是把整個網絡都加入的sendmail中,這個地址中的用戶,如果在我們的系統里有賬號的話,可以使用sendmail收發信件了。 Linux還允許我們設置郵局協議(POP)郵件服務器,POP協議分兩個版本POP2和POP3,很顯然POP3是新版本的郵局協議,現在Internet網上主要是POP3協議。 POP3并不需要我們來配置,RedHat已經為我們做好了這一工作。我們只需要修改一下 /etc/inetd.conf文件,確保POP3能正常工作即可:
在我們配置完sendmail后,可以運行以下的命令來檢查目錄的讀寫權限以檢查潛在的安全漏洞。
這時,sendmail將開始初始化alias數據,如果在屏幕上回顯:
- WARNING: writable directory /etc
- WARNING: writable directory /usr/spool/mqueue
那么這個目錄列出了不適當的寫特權,應該使用chmod和 chown命令以避免多方面的的安全攻擊。一般我們需要對如下目錄運行chmod和chown命令: mqueue
sendmail 的有一些參數可以用于驗證地址處理的結果,以確保其新配置的合理性。一旦認為配置可以正常工作了,我們就可以選擇各個站點上的朋友,并將郵件發送給他們。發送時使用-v參數就可以顯示郵件傳輸的各個細節和兩個站點之間進行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之前輸入所有的內容,而sendmail則顯示^D之后的內容。通過對sendmail的測試,我們就可以發現潛在的配置問題,并使用sendmail提供的一些附加查錯工具解決這些問題。
文章轉載自網管網:http://www.bitscn.com/os/linux/200604/6356.html
【編輯推薦】
- Sendmail 配置的排錯方法
- Sendmail 配置的使用說明
- Linux 性能檢測工具Uptime簡單介紹
- Sendmail 配置E-Mail服務器實現E-Mail靈活運用
- Sendmail 配置E-Mail服務器