實驗15郵件服務器配置
單擊此處編輯母版文本樣式,第二級,第三級,第四級,第五級,單擊此處編輯母版標題樣式,實驗,15,郵件服務器的配置,一、實驗目的,二、實驗工具與設備,三、實驗預備知識,四、實驗內容和步驟,五、實驗總結,一、實驗目的,1,了解郵件服務器的基本知識。,2,掌握,SendMail,的工作原理。,3,掌握,SendMail,的配置方法。,二、實驗工具與設備,1,交換機(或集線器)。,2,帶網(wǎng)卡的計算機,包括裝有,Windows,系統(tǒng)的學生機和,Linux,系統(tǒng)的計算機服務器。,3,網(wǎng)線若干。,4,Red Hat Linux 9.0,安裝光盤。,三、實驗預備知識,SendMail,最初在,1979,年由,Eric,Allman,編寫,起先運行在,BSD 4.0,平臺上。但這個程序不夠靈活,每次編譯時都需要重新配置。隨著,TCP,協(xié)議和其他方面的發(fā)展,其不靈活性已經(jīng)明顯不能滿足日益增長的需求。,Eric,Allman,決定重新編寫,SendMail,,從而誕生了現(xiàn)在的,MTA,標準(郵件傳輸代理標準)。,SendMail,是,Linux,中的默認郵件傳輸代理(,MTA,),任務是從郵件用戶代理(,MUA,)接收郵件,然后根據(jù)配置文件的定義把它們傳送給配置好的的寄送程序。,SendMail,也能接受網(wǎng)絡連接,并且發(fā)送郵件到本地郵箱或發(fā)送到其他程序。,SendMail,的配置文件見表,15-1,。,文件名,功能,/etc/mail/access,SendMail,訪問數(shù)據(jù)庫文件,/etc/mail/aliases,郵箱別名,/etc/mail/local-host-names,SendMail,接收郵件主機列表,/etc/mail/mailer.conf,郵寄配置程序,/etc/mail/,mailertable,郵件分發(fā)列表,/etc/mail/,sendmail,.,cf,SendMail,的主配置文件,/etc/mail/,virtusertable,虛擬用戶和域列表,表,15-1,SendMail,的配置文件,1,文件,/etc/mail/access,(訪問數(shù)據(jù)庫),該文件定義什么主機或,IP,地址可以訪問本地郵件服務器,以及是哪種類型的訪問。主機可能會列出,OK,、,REJECT,、,RELAY,或簡單的通過,SendMail,出錯處理程序檢測的給定的郵件錯誤。主機默認列出,OK,,只要郵件的最后目的地是本地主機,則允許傳送郵件到主機。若列出,REJECT,,將拒絕所有郵件連接,帶有,RELAY,選項的主機將被允許通過該郵件服務器發(fā)送郵件到任何地方。,例,1,:配置,SendMail,的訪問許可數(shù)據(jù)庫。,cyberspammer,.com550 We do not accept mail from,spammers,FREE.STEALTH.MAILER 550 We do not accept mail from,spammers,another.source.of.,spam,REJECT,okay.,cyberspammer,.comOK,128.32 RELAY,本例有,5,條記錄。與第一列匹配的發(fā)件人受到第二列動作的影響。,前兩個記錄給出,SendMail,出錯處理程序檢測到的錯誤代碼。當一個郵件與第一列相匹配時,該信息被打印到遠程主機上。,第三條記錄拒絕來自,Internet,上的一個特別主機的郵件(,another.source.of.,spam,)。,第四記錄允許來自,okay.,cyberspammer,.com,的郵件連接,這條記錄比上一行,cyberspammer,.com,更準確。更多的準確匹配使不準確的匹配無效。,最后一條記錄允許電子郵件從主機為,128.32,開頭的,IP,地址轉發(fā),這些主機將被允許通過這臺郵件服務器前往其他郵件服務器發(fā)送郵件。,當該文件被升級時,必須在,/etc/mail/,運行,make,升級數(shù)據(jù)庫。,2,文件,/etc/mail/aliases,(別名數(shù)據(jù)庫),該文件包含一個擴展用戶、程序或其他別名的虛擬郵箱列表。以下是一些在,/etc/mail/aliases,中使用的例子。,例,2,:郵件別名。,root:,localuser,ftp-bugs:,joe,eric,paul,bit.bucket:/dev/null,procmail,:|/,usr,/local/bin/,procmail,該文件的格式很簡單。冒號左邊的郵箱名可以被展開成右邊的形式。,第一行簡單地將,root,郵箱擴展為,localuser,,之后將繼續(xù)在別名數(shù)據(jù)庫中進行查找。如果沒有找到匹配的記錄,郵件被發(fā)給本地用戶,localuser,。,第二行展示一個郵件列表。發(fā)送到,ftp-bugs,的郵件可被展開成,joe,、,eric,和,paul,三個郵箱。當然也可以通過,形式指定遠程的郵箱。,第三行展示如何把郵件寫入到文件中,本例是,/dev/null,。,最后一行展示如何將郵件發(fā)給一個程序,這里是通過,UNIX,管道發(fā)到,/,usr,/local/bin/,procmail,的標準輸入。,更新該文件時,需要在,/etc/mail/,中用,make,更新數(shù)據(jù)庫。,3,文件,/etc/mail/local-host-names,該文件是一個本地主機名的列表,可以放入任何,SendMail,將收發(fā)郵件的域名或主機。例如,如果該郵件服務器從域,,和主機,,接收郵件,則,local-host-names,文件可以按以下方式書寫:,,,當該文件被升級時,,SendMail,必須重新啟動,以便更新設置。,4,文件,/etc/mail/,sendmail,.,cf,(,SendMail,的主配置文件),SendMail,.,cf,控制,SendMail,的所有行為,包括從重寫郵件地址到打印拒絕遠程郵件服務器信息等。該配置文件相當復雜,初學者沒有必要弄清楚其細節(jié)(超出本書范圍)。一般而言,該文件對于標準郵件服務器來說,很少需要改動。,SendMail,主配置文件可以用,m4(1),宏定義,SendMail,的特性和行為。其細節(jié)請參考,/,usr,/,src,/,contrib,/,sendmail,/,cf,/README,文件。,該文件被修改時,,SendMail,必須重新啟動,以使新修改生效。,5,文件,/etc/mail/,virtusertable,該文件映射虛擬域名和郵箱到真實的郵箱。這些郵箱可以是本地的、遠程的、,/etc/mail/aliases,中定義的別名或一個文件。,例,3,:虛擬域郵件映射。, root, postmaster,noc,,,joe,本例中映射了一個域,,。該文件按照從上到下,首個匹配的方式來處理。,第一項將,映射到本地郵箱,root,。,第二項將,映射到位于,noc,,的,postmaster,。,如果沒有來自,,的匹配,則使用最后一條映射,表示將所有的其他郵件發(fā)給,,域的某個人。這樣,將映射到本地信箱,joe,。,四、實驗內容和步驟,1,實驗環(huán)境的構建,將實驗的設備按圖,15-1,所示連接好。,其中,在,PC1,上安裝,Red Hat Linux,作為服務器,并配置好網(wǎng)絡。其中,,IP,地址為,192.168.0.1,。,PC1,在本實驗中作為郵件服務器(已安裝,SendMail,的,Linux,系統(tǒng));在,PC1,上啟動并配置,DNS,系統(tǒng),使其能正確解釋域,abc,.com,。,PC2,PC,n,是安裝有,Windows,操作系統(tǒng)的計算機,并配置好網(wǎng)絡,,IP,地址設置為,192.168.0.X,(,X,在,2,254,之間取值)。,本實驗中,,PC2,PC,n,作為裝有郵件客戶端程序(例如,outlook,)的客戶機。,圖,15-1,實驗環(huán)境的連接圖,2,把郵件服務器的主機名和,IP,地址加入到,DNS,中(操作方法參考實驗,12,),設郵件服務器名為,mail.,abc,.com,,本實驗所用局域網(wǎng)的,DNS,服務器和郵件服務器運行在同一主機上,郵件服務器的,IP,地址對應為,192.168.0.1,。,(,1,),用,nslookup,命令確認,DNS,的工作是否正常,運行命令:,root,localhost,/root#,nslookup,-,sil,mail.,abc,.com,如果,DNS,工作正常,將出現(xiàn)以下提示:,Server:192.168.0.1,Address:192.168.0.1#53,Name:mail.,abc,.com,Address:192.168.0.1,(,2,)測試反向域名解析,這項操作對防止郵件延遲有很重要的作用。大部分郵件服務器都把反向域名解析作為郵件傳送時認證的一部分。因此,需要用,IP,地址試一下反向域名解析是否正確。,root,localhost,/root#,nslookup,-,sil,192.168.0.1,Server:192.168.0.1,Address:192.168.0.1#53,1.0.168.192.in-,addr,.,arpa,name=mail.,abc,.com.,以上信息表示,DNS,已經(jīng)工作正常。,3,配置,SendMail,服務,Red Hat Linux 9.0,默認安裝已經(jīng)可以使,SMTP,服務在本機運行。,先用,netstat,-,nl,查看所有后臺程序監(jiān)聽的端口:,root,localhost,/root#,netstat,-,nl,Active Internet connections(only servers),Proto,Recv,-Q Send-Q Local Address Foreign Address State,tcp,0 0 0.0.0.0:32768 0.0.0.0:*LISTEN,tcp,0 0 0.0.0.0:111 0.0.0.0:*LISTEN,tcp,0 0 0.0.0.0:22 0.0.0.0:*LISTEN,tcp,0 0 127.0.0.1:25 0.0.0.0:*LISTEN,udp,0 0 0.0.0.0:32768 0.0.0.0:*,udp,0 0 0.0.0.0:667 0.0.0.0:*,udp,0 0 0.0.0.0:111 0.0.0.0:*,Active UNIX domain sockets(only servers),Proto,RefCnt,Flags Type State I-Node Path,unix,2 ACC STREAM LISTENING 1119/dev/,gpmctl,unix,2 ACC STREAM LISTENING 1172/,tmp,/.font-,unix,/fs7100,注意:,127.0.0.1:25,表示,SendMail,服務已經(jīng)在監(jiān)聽本機的,25(SMTP),端口。但這只是表示郵件服務器目前只接收本機的郵件。為了解決這個問題,需要修改配置,告訴,SendMail,去監(jiān)聽本機以外的網(wǎng)卡地址。,假設服務器上只安裝了一塊網(wǎng)卡(,eth0,),,IP,地址,192.168.0.1,,可以修改,/etc/mail/,sendmail,.,cf,文件來配置,SendMail,的監(jiān)聽端口。,操作:將,#SMTP daemon options,O,DaemonPortOptions,=Port=,smtp,,,Addr,=127.0.0.1,,,Name=MTA,修改為,O,DaemonPortOptions,=Port=,smtp,,,Addr,=192.168.0.1,,,Name=MTA,修改完成后,保存退出,并用以下命令重新啟動,SendMail,服務:,root,localhost,/root#/etc/init.d/,SendMail,restart,再用,netstat,-,nl,來查看所發(fā)生的更改:,root,localhost,/root#,netstat,-,nl,Activ