{
\"code\": 200,
\"title\": \"\",
\"content\": \"**TP(SimpleMailTransferProtocol)即簡單郵件傳輸協議,它是一組用於由源地址到目的地址傳送郵件的規則,由它來控製信件的中轉方式。**TP協議屬於TCP\\/IP協議族,它幫助每台計算機在發送或中轉信件時找到下一個目的地。通過**TP協議所指定的服務器,就可以把E-mail寄到收信人的服務器上了,整個過程隻要幾分鐘。**TP服務器則是遵循**TP協議的發送郵件服務器,用來發送或中轉發出的電子郵件。\\n\\n**TP是一種提供可靠且有效電子郵件傳輸的協議。**TP是建立在FTP檔案傳輸服務上的一種郵件服務,主要用於傳輸係統之間的郵件資訊並提供來信有關的通知。\\n\\n**TP獨立於特定的傳輸子係統,且隻需要可靠有序的數據流通道支援。**TP重要特性之一是其能跨越網\\n\\n**TP\\n\\n絡傳輸郵件,即“**TP郵件中繼”。通常,\\n\\n**TP一個網絡可以由公用互聯網上\\n\\nTCP可相互訪問的主機、防火牆分隔的TCP\\/IP網絡上TCP可相互訪問的主機,及其它LAN\\/WAN中的主機利用非TCP傳輸層協議組成。使用**TP,可實現相同網絡上處理機之間的郵件傳輸,也可通過中繼器或網關實現某處理機與其它網絡之間的郵件傳輸。\\n\\n在這種方式下,郵件的發送可能經過從發送端到接收端路徑上的大量中間中繼器或網關主機。域名服務係統(DNS)的郵件交換服務器可以用來識彆出傳輸郵件的下一跳IP地址。\\n\\n在傳輸檔案過程中使用25號\\n\\n協議原理\\n\\n**TP-簡單郵件傳輸協議(SimpleMailTransferProtocol),是定義郵件傳輸的協議,它是基於TCP服務的應用層協議,由RFC821所定義。**TP協議規定的命令是以明文方式進行的。為了說明**TP的工作原理,我們以向163發送郵件為實例進行說明。\\n\\n在linux環境下,使用\\\"telnetsmtp.163.com25\\\"連接smtp.163.com的25號(**TP的標準服務);在windows下使用telnet程式,遠程主機指定為smtp.163.com,而號指定為25,然後連接smtp.163.com:交\\n\\n**TP\\n\\n互過程如下:\\n\\n**TP[lix@nslix]$telnetsmtp.163.com25\\n\\n220163.comAnti-spamGTforCoremailSystem(163com[071018])\\n\\nHELOsmtp.163.com\\n\\n250OK\\n\\nauthlogin\\n\\n334dXNlcm5hbWU6\\n\\nUSERbase64加密後的用戶名\\n\\n334UGFzc3dvcmQ6\\n\\nPASSbase64加密後的密碼\\n\\n235Authenticationsuccessful\\n\\nMAILFROM:[email protected]\\n\\n250MailOK\\n\\nRCPTTO:[email protected]\\n\\n250MailOK\\n\\nDATA\\n\\n354Enddatawith.\\n\\n**TP\\n\\nQUIT\\n\\n**TP250MailOKqueuedassmtp5,D9GowLArizfIFTpIxFX8AA==.41385S2\\n\\n1211766217\\n\\nHELO是客戶向對方郵件服務器發出的標識自己的身份的命令,這裡假設發送者為ideal;MAILFROM命令用來表示發送者的郵件地址;RCPTTO:標識接收者的郵件地址,這裡表示希望發送郵件給[email protected],如果郵件接收者不是本地用戶,例如RCPTTO:ideal,則說明希望對方郵件服務器為自己轉發(Relay)郵件,若該機器允許轉發這樣的郵件,則表示該郵件服務器是OPENRELAY的,否則說明該服務器不允許RELAY;DATA表示下麵是郵件的數據部分,輸入完畢以後,以一個\\\".\\\"開始的行作為數據部分的結束標識;QUIT表示退出這次會話,結束郵件發送。\\n\\n這就是一個簡單的發送郵件的會話過程,其實當使用outlookexpress等客戶軟件發送時,後台進行的互動也是這樣的,當然,**TP協議為了處理複雜的郵件發送情況如附件等等,定義了很多的命令及規定,具體可以通過閱讀RFC821來獲得。\\n\\n**TP\\n\\n當你的一個朋友向你發送郵件時,他的郵件服務器和你的郵件服務器通過S\\n\\n**TPMTP協議通訊,將郵件傳遞給你\\n\\n郵件地址所指示的郵件服務器上(這裡假設你的本地郵件服務器是Linux係統),若你通過telnet協議直接登錄到郵件服務器上,則可以使用mail等客戶軟件直接閱讀郵件,但是若你希望使用本地的MUA(MailUserAgent,如outlookexpress等客戶軟件)來閱讀郵件,則本地客戶端通過POP3或IMAP協議與郵件服務器互動,將郵件資訊傳遞到客戶端(如:win98係統)。而如果你向你的朋友回覆一封信件時,你所使用的MUA也是通過**TP協議與郵件服務(一般為發送郵件地址對應的email地址)器通訊,指示其希望郵件服務器幫助轉發一封郵件到你朋友的郵件地址指定的郵件服務器中。若本地郵件服務器允許你通過它轉發郵件,則服務器通過**TP協議發送郵件到對方的郵件服務器。這就是接受和發送郵件的全部過程。\\n\\n個人**TP服務器的配置方法\\n\\n安裝POP3和**TP服務組件\\n\\nWindowsServer2003默認情況下是冇有安裝POP3和**TP服務組件的,因此我們要手工新增。\\n\\n1.安裝POP3服務組件\\n\\n以係統管理員身份登錄WindowsServer2003係統。依次進入“控製麵板→新增或刪除程式→新增\\/刪除Windows組件”,在彈出的“Windows組件嚮導”對話框中選中“電子郵件服務”選項,點擊“詳細資訊”按鈕,可以看到該選項包括兩部分內容:POP3服務和POP3服務Web管理。為方便用戶遠程Web方式管理郵件服務器,建議選中“POP3服務Web管理”。\\n\\n2.安裝**TP服務組件\\n\\n選中“應用程式服務器”選項,點擊“詳細資訊”按鈕,接著在“Internet資訊服務(IIS)”選項中檢視詳細資訊,選中“**TPService”選項,最後點擊“確定”按鈕。此外,如果用戶需要對郵件服務器進行遠程Web管理,一定要選中“萬維網服務”中的“遠程管理(HTML)”組件。完成以上設置後,點擊“下一步”按鈕,係統就開始安裝配置POP3和**TP服務了。\\n\\n配置POP3服務器\\n\\n1.創建郵件域\\n\\n點擊“開始→管理工具→POP3服務”,彈出POP3服務控製檯視窗。選中左欄中的POP3服務後,點擊右欄中的“新域”,彈出“新增域”對話框,接著在“域名”欄中輸入郵件服務器的域名,也就是郵件地址“@”後麵的部分,\\n\\n2.創建用戶郵箱\\n\\n選中剛纔新建的,在右欄中點擊“新增郵箱”,彈出新增郵箱對話框,在“郵箱名”欄中輸入郵件用戶名,然後設置用戶密碼,最後點擊“確定”按鈕,完成郵箱的創建。\\n\\n完成POP3服務器的配置後,就可開始配置**TP服務器了。點擊“開始→程式→管理工具→Internet資訊服務(IIS)管理器”,在“IIS管理器”視窗中右鍵點擊“默認**TP虛擬服務器”選項,在彈出的菜單中選中“屬性”,進入“默認**TP虛擬服務器”視窗,切換到“常規”標簽頁,在“IP地址”下拉選單框中選中郵件服務器的IP地址即可。點擊“確定”按鈕,此時**TP服務器默認的是匿名訪問,打開切換到“訪問”標簽頁,點擊“身份驗證”按鈕,在對話框中去掉“匿名訪問“選項,選中”基本身份驗證(Basicauthentication)“。這樣一個簡單的郵件服務器就架設完成了。\\n\\n工作過程\\n\\n簡單郵件傳輸協議(**TP)是一種基於文字的電子郵件傳輸協議,是在因特網中用於在郵件服務器之間交換郵件的協議。**TP是應用層的服務,可以適應於各種網絡係統。\\n\\n**TP的命令和響應都是基於文字,以命令列為單位,換行符為CR\\/LF。響應資訊一般隻有一行,由一個3位\\n\\n**TP\\n\\n數的代碼開始,後麵可附上很簡短的文字說明。\\n\\n**TP**TP要經過建立連接、傳送郵件和釋放連\\n\\n接3個階段。具體為:\\n\\n(1)建立TCP連接。\\n\\n(2)客戶端向服務器發送HELLO命令以標識發件人自己的身份,然後客戶端發送MAIL命令。\\n\\n(3)服務器端以OK作為響應,表示準備接收。\\n\\n(4)客戶端發送RCPT命令。\\n\\n(5)服務器端表示是否願意為收件人接收郵件。\\n\\n(6)協商結束,發送郵件,用命令DATA發送輸入內容。\\n\\n(7)結束此次發送,用QUIT命令退出。\\n\\n**TP服務器基於DNS中的郵件交換(MX)記錄路由電子郵件。電子郵件係統發郵件時是根據收信人的地址後綴來定位郵件服務器的。**TP通過用戶代理程式(UA)完成郵件的編輯、收取和閱讀等功能;通過郵件傳輸代理程式(MTA)將郵件傳送到目的地。\\n\\nX.25上應用\\n\\n1.本備忘錄的狀態\\n\\n本備忘錄講述了一種基於CCITT的X.25標準提供的虛電路業務的**TP標準。\\n\\n本備忘錄的釋出不受任何限製。\\n\\n2.簡介\\n\\n在RFC821(\\\"SIMPLEMAILTRANSPORTPROTOCOL\\\",**TP,簡單郵件傳輸協議)\\n\\n的附錄D中提到了直接將**TP置於X.25虛電路(ISO第3層)上的可能性。並建議“利\\n\\n用一種類似於TCP可靠的端到端協議在X.25的連接上”。在1981年時,考慮到PSDNs的\\n\\n總體的可靠性,這毫無疑問是可行的。這一業務現在(1989年)已經非常可靠,它允許直\\n\\n接將其置於虛電路業務上。\\n\\n在包括22個不同的國家的24個PSDN網的許多產品,證明瞭這種方法是成功的,結\\n\\n果證明,即使使用在一些花費比較昂貴的PSDN中,這種方法還是十分經濟的,在X.25專\\n\\n網和X.25局域網中,這種方法也是成功。\\n\\n每一個**TP會話必須打開一條X.25虛電路(VirtualCircuit,VC),**TP會話將\\n\\n使用由VC提供的全雙工通道。通常,VC是由發起呼叫的一方關閉的。\\n\\n3.協議ID和呼叫用戶數據\\n\\n呼叫用戶數據區的前4個字節應該是0xC0F7,0000(十六進製),十進製是19224700。\\n\\n這個欄位通常用來標識一個協議ID,或者PRID。\\n\\n但是在實際的操作中,應該有能力在基本前綴地址上配置呼叫用戶數據,包括協議ID\\n\\n欄位。\\n\\n4.數據流\\n\\n在發送端通常把**TP數據分成許多數據包,相應地,在數據包封裝的時候應該置M\\n\\n位(表示有後續數據包)。數據包的總長度可以達到2048個字節。\\n\\n通常我們建議**TP命令和響應應在一個數據包發送出去,或者隻有一個後續數據包。\\n\\n隻要對調試協議方便即可。但這並不要求是必須的。\\n\\n5.識彆數據\\n\\nQ位元被置位的分組和中斷分組是冇有用的。如果收到了,應該被忽略掉。\\n\\n6.電路複位\\n\\n如果收到了一個3層的電路複位指示,這條VC應該清除,**TP連接應該重新建立。\\n\\n重新建立會帶來一些時延,也可能是不同的呼叫業務。\\n\\n7.呼叫業務\\n\\n任何被X.25呼叫請求業務選擇的協商特征都可以使用。使用時應有能力為每一個被叫\\n\\n地址指定業務。\\n\\n8.字元編碼\\n\\nX.25使用的字元編碼是完整的8位ASCII碼,冇有任何遺漏和修改。一行應該以CRLF\\n\\n(十進製:1310)結尾,也可以僅僅以LF(十進製:10)來標識一行的結束。\\n\\n9.關閉連接\\n\\n跟TCP協議不同,在清除請求的過程中,X.25不提供數據的同步傳送;當清除虛電\\n\\n路時,就丟棄所有正在傳送的數據包。因此,當收到“服務關閉”訊息時,主叫的一邊關閉\\n\\n**TP會話層(在X.25上),這種訊息要麼是QUIT命令的響應,或者是因為服務必須中止。\\n\\n**TP\\n\\n10.超時\\n\\n**TP**TP通常不提供超時會話,在X.25,以下幾項是有效的:\\n\\n10.1呼叫請求\\n\\n如果在100秒內冇有收到“呼叫接受”資訊,或者在120秒(另外)內冇有收到“服\\n\\n務準備好”資訊,那麼應該清除這次呼叫,然後重試。\\n\\n10.2已經建立的呼叫\\n\\n當協議會話建立之後,在10分鐘內如果冇有收到任何響應,那麼就應該清除這條虛\\n\\n電路。\\n\\n10.3關閉\\n\\n執行QUIT命令後,超時時間縮短為20秒。這可能會導致不經意地退出,但它不會影\\n\\n響已經完成的**TP業務。\\n\\n10.4清除\\n\\n當X.25“清除請求”發出時,這條虛電路將在X.25協議指定的時間內超時。\\n\\n11.其他特性\\n\\nX.25的其他特性,如永久虛電路和D位元的選擇,都冇有用到。\\n\\n垃圾郵件\\n\\n最初的**TP的侷限之一在於它冇有對發送方進行身份驗證的機製。因此,後來定義了**TP-AUTH擴展。\\n\\n儘管有了身份認證機製,垃圾郵件仍然是一個主要的問題。但由於龐大的**TP安裝數量帶來的網絡效應,大刀闊斧地修改或完全替代**TP被認為是不現實的。InternetMail2000就是一個替代**TP的建議方案。\\n\\n因此,出現了一些同**TP工作的輔助協議。IRTF的反垃圾郵件研究小組正在研究一些建議方案,以提供簡單、靈活、輕量級的、可升級的源端認證。最有可能被接受的建議方案是發送方策略框架協議。\\n\\n**TP模型\\n\\nsmtp提供了一種郵件傳輸的機製,當收件方和發件方都在一個網絡上時,可以把郵件直傳給對方;當雙方不在同一個網絡上時,需要通過一個或幾箇中間服務器轉發。smtp首先由發件方提出申請,要求與接收方smtp建立雙向的通訊渠道,收件方可以是最終收件人也可以是中間轉發的服務器。收件方服務器確認可以建立連接後,雙發就可以開始通訊。\\n\\n發件方smtp向收件方發處mail命令,告知發件方的身份;如果收件方接受,就會回答ok。發件方再發出rcpt命令,告知收件人的身份,收件方smtp確認是否接收或轉發,如果同意就回答ok;接下來就可以進行數據傳輸了。通訊過程中,發件方smtp與收件方smtp采用對話式的互動方式,發件方提出要求,收件方進行確認,確認後才進行下一步的動作。整個過程由發件方控製,有時需要確認幾回纔可以。\\n\\n為了保證回覆命令的有效,smtp要求發件方必須提供接收方的服務器及郵箱。郵件的命令和答覆有嚴格的語法定義,並且回覆具有相應的數字代碼。所有的命令由ascii碼組成。命令代碼是大小寫無關的,如mail和mail﹑mail是等效的。\\n\\n服務擴展\\n\\n**TP提供一種可靠的有效的傳送機製,它用於傳送電子郵件。雖然十幾年來,它的作用已經有目共睹,可是對它功能的擴充也是必不可少的。對**TP服務的擴展我們介紹一下:在**TP轉發的郵件中包括信封和內容這兩種東西。我們寫信也寫信封和信皮,我們可以借生活中的信件來幫助理解。\\n\\n(1)**TP信封比較容易理解,它被作為一係列的**TP協議單元傳送,它包括髮送者地址,傳送模式,還有一個或多個接收者地址。如果有不清楚的地方,請參閱《**TP協議標準》。\\n\\n**TP\\n\\n**TP(2)至於內容,它是由兩部分組成的,一部分是信頭,一部分是信體,信\\n\\n頭是由一個個的域\\/值對(一個域,一個值)組成的,如果信體有結構的話,它的結構是以MIME構造的。內容從根本上來說是文字的,一般也是由ASCII碼構成的,但是由於使用了MIME,所以這個限製應該也是冇有了,但信頭卻不行,一般都應該使用ASCII碼錶示。雖然**TP協議是一個不錯的協議,可是對它的擴展還是不可避免,本文主要說明瞭一種擴展方法,使用這種擴展方法,服務器和用戶之間可以相互知道對方使用了擴展,使用了多少,如果進行通訊。\\n\\n通訊模型\\n\\n**TP協議是TCP\\/IP協議族中的一員,主要對如何將電子郵件從發送方地址傳送到接收方地址,也即是對傳輸的規則做了規定。**TP協議的通訊模型並不複雜,主要工作集中在發送**TP和接收**TP上:首先針對用戶發出的郵件請求,由發送**TP建立一條連接到接收**TP的雙工通訊鏈路,這裡的接收**TP是相對於發送**TP而言的,實際上它既可以是最終的接收者也可以是中間傳送者。發送**TP負責向接收**TP發送**TP命令,而接收**TP則負責接收並反饋應答。**TP協議的命令和應答\\n\\n從前麵的通訊模型可以看出**TP協議在發送**TP和接收**TP之間的會話是靠發送**TP的**TP命令和接收**TP反饋的應答來完成的。在通訊鏈路建立後,發送**TP發送MAIL命令指令郵件發送者,若接收**TP此時可以接收郵件則作出OK的應答,然後發送**TP繼續發出RCPT命令以確認郵件是否收到,如果接收到就作出OK的應答,否則就發出拒絕接收應答,但這並不會對整個郵件操作造成影響。雙方如此反覆多次,直至郵件處理完畢。**TP協議共包含10個**TP命令,列表如下:\\n\\n**TP命令命令說明\\n\\nHELLO識彆發送方到接收**TP的一個HELLO命令\\n\\nMAILFROM:為發送者地址。此命令告訴接收方一個新郵件發送的開始,並對所有的狀態和緩衝區進行初始化。此命令開始一個郵件傳輸處理,最終完成將郵件數據傳送到一個或多個郵箱中。\\n\\nRCPTTO:標識各個郵件接收者的地址\\n\\nDATA\\n\\n接收**TP將把其後的行為看作郵件數據去處理,以.標識數據的結尾。\\n\\nREST退出\\/複位當前的郵件傳輸\\n\\nNOOP要求接收**TP僅做OK應答。(用於測試)\\n\\nQUIT要求接收**TP返回一個OK應答並關閉傳輸。\\n\\nVRFY驗證指定的郵箱是否存在,由於安全因素,服務器多禁止此命令。\\n\\nEXPN驗證給定的郵箱列表是否存在,擴充郵箱列表,也常禁止使用。\\n\\nHELP查詢服務器支援什麼命令\\n\\n通訊安全\\n\\nsendmail是在Unix環境下使用最廣泛的實現郵件發送\\/接受的郵件傳輸代理程式。由於Sendmail郵件服務器的特點是功能強大而複雜,因此為保證Sendmail的安全性,需要作以下一些工作。\\n\\n1、設置Sendmail使用\\\"smrsh\\\"\\n\\nsmrsh程式的目的是作為在mailer中為sendmail定義的\\\"\\/bin\\/sh\\\"的替代shell。smrsh是一種受限shell工具,它通過\\\"\\/\\n\\netc\\/smrsh\\\"目錄來明確指定可執行檔案的列表。簡而言之smrsh限製了攻擊者可以執行的程式集。當它與sendmail程式一起使用的時候,smrsh有效的將sendmail可以執行的程式的範圍限製在smrsh目錄之下。\\n\\n第一步:\\n\\n決定smrsh可以允許sendmail運行的命令列表。預設情況下應當包含以下命令,但不侷限於這些命令:\\n\\n\\\"\\/bin\\/mail\\\"(如果在你的係統中安裝了的話)\\n\\n\\\"\\/usr\\/bin\\/procmail\\\"(如果在你的係統中安裝了的話)\\n\\n注意:不可在命令列表裡包括命令解釋程式,例如sh(1),csh(1),perl(1),uudecode(1)及流編輯器sed(1)。\\n\\n第二步:\\n\\n在\\\"\\/etc\\/smrsh\\\"目錄中創建允許sendmail運行的程式的符號連接。\\n\\n使用以下命令允許mail程式\\\"\\/bin\\/mail\\\"運行:\\n\\n[root@deep]#cd\\/etc\\/smrsh\\n\\n[root@deep]#ln-s\\/bin\\/mailmail\\n\\n用以下命令允許procmail程式\\\"\\/usr\\/bin\\/procmail\\\"運行:\\n\\n[root@deep]#cd\\/etc\\/smrsh\\n\\n[root@deep]#ln-s\\/usr\\/bin\\/procmailprocmail\\n\\n這將允許位於\\\".forward\\\"和\\\"aliases\\\"中的用戶采用\\\"|program\\\"語法來運行mail及procmail程式。\\n\\n第三步\\n\\n配置sendmail使之使用受限shell。mailer程式在sendmail的配置檔案\\\"\\/etc\\/sendmail.cf\\\"中僅有一行。必須修改\\\"sendmail.cf\\\"檔案中\\\"Mprog\\\"定義的那一行。將\\\"\\/bin\\/sh\\\"替換為\\\"\\/usr\\/sbin\\/smrsh\\\"。\\n\\n編輯\\\"sendmail.cf\\\"檔案(vi\\/etc\\/sendmail.cf)並改動下麵這一行:\\n\\n例如:\\n\\nMprog,P=\\/bin\\/sh,F=lsDFMoqeu9,S=10\\/30,R=20\\/40,D=$z:\\/,T=X-Unix,A=sh-c$u\\n\\n應該被改為:\\n\\nMprog,P=\\/usr\\/sbin\\/smrsh,F=lsDFMoqeu9,S=10\\/30,R=20\\/40,D=$z:\\/,T=X-Unix,A=sh-c$u\\n\\n現在用以下命令手工重起sendmail進程:\\n\\n[root@deep]#\\/etc\\/rc.d\\/init.d\\/sendmailrestart\\n\\n2、\\\"\\/etc\\/aliases\\\"檔案\\n\\n如果冇有加以正確和嚴格的管理的話,彆名檔案被用來獲取特權。例如,很多發行版本在彆名檔案中帶有\\\"decode\\\"彆名。現在這種情況越來越少了。\\n\\n這樣做的目的是為用戶提供一個通過mail傳輸二進製檔案的方便的方式。在郵件的發送地,用戶把二進製檔案用\\\"uuencode\\\"轉換成ASCII格式,並把結果郵遞給接收地\\\"decode\\\"彆名。那個彆名通過管道把郵件訊息發送到\\\"\\/usr\\/bin\\/uuencode\\\"程式,由這個程式來完成從ASCII轉回到原始的二進製檔案的工作。\\n\\n刪除\\\"decode\\\"彆名。類似的,對於所有用於執行冇有被放在smrsh目錄下的程式的彆名,你都要仔細的檢查,可能它們都值得懷疑並應當刪除它們。要想使你的改變生效,需要運行:\\n\\n[root@deep]#\\/usr\\/bin\\/newaliases\\n\\n編輯彆名檔案(vi\\/etc\\/aliases)並刪除以下各行:\\n\\n#Basicsystemaliases--theseMUSTbepresent.\\n\\nMAILER-DAEMON:postmaster\\n\\npostmaster:root\\n\\n#Generalredirectionsforpseudoaccounts.\\n\\nbin:root\\n\\ndaemon:root\\n\\ngames:root??刪除這一行\\n\\ningres:root??刪除這一行\\n\\nnobody:root\\n\\nsystem:root??刪除這一行\\n\\ntoor:root??刪除這一行\\n\\nuucp:root??刪除這一行\\n\\n#Well-knownaliases.\\n\\nmanager:root??刪除這一行\\n\\ndumper:root??刪除這一行\\n\\noperator:root??刪除這一行\\n\\n#trapdecodetocatchsecurityattacks\\n\\ndecode:root??刪除這一行\\n\\n#Personwhoshouldgetroot'smail\\n\\n#root:marc\\n\\n最後應該運行\\\"\\/usr\\/bin\\/newaliases\\\"程式使改動生效\\n\\n3、避免你的Sendmail被未授權的用戶濫用\\n\\n最新版本的Sendmail(8.9.3)加入了很強的防止欺騙的特性。它們可以防止你的郵件服務器被未授權的用戶濫用。編輯你的\\\"\\/etc\\/sendmail.cf\\\"檔案,修改一下這個配置檔案,使你的郵件服務器能夠擋住欺騙郵件。\\n\\n編輯\\\"sendmail.cf\\\"檔案(vi\\/etc\\/sendmail.cf)並更改下麵一行:\\n\\nOPrivacyOptions=authwarnings\\n\\n改為:\\n\\nOPrivacyOptions=authwarnings,noexpn,novrfy\\n\\n設置\\\"noexpn\\\"使sendmail禁止所有**TP的\\\"EXPN\\\"命令,它也使sendmail拒絕所有**TP的\\\"VERB\\\"命令。設置\\\"novrfy\\\"使sendmail禁止所有**TP的\\\"VRFY\\\"命令。這種更改可以防止欺騙者使用\\\"EXPN\\\"和\\\"VRFY\\\"命令,而這些命令恰恰被那些不守規矩的人所濫用。\\n\\n4、**TP的問候資訊\\n\\n當sendmail接受一個**TP連接的時候,它會向那台機器發送一個問候資訊,這些資訊作為本台主機的標識,而且它所做的第一件事就是告訴對方它已經準備好了。\\n\\n編輯\\\"sendmail.cf\\\"檔案(vi\\/etc\\/sendmail.cf)並更改下麵一行:\\n\\nOSmtpGreetingMessage=$jSendmail$v\\/$Z;$b\\n\\n改為:\\n\\nOSmtpGreetingMessage=$jSendmail$v\\/$Z;$bNOUCEC=xxL=xx\\n\\n現在手工重起一下sendmail進程,使剛纔所做的更改生效:\\n\\n[root@deep]#\\/etc\\/rc.d\\/init.d\\/sendmailrestart\\n\\n以上的更改將影響到Sendmail在接收一個連接時所顯示的標誌資訊。你應該把\\\"`C=xxL=xx\\\"條目中的\\\"xx\\\"換成你所在的國家和地區代碼。後麵的更改其實不會影響任何東西。但這是\\\"news.admin.net-abuse.email\\\"新聞組的夥伴們推薦的合法做法。\\n\\n5、限製可以稽覈郵件隊列內容的人員\\n\\n通常情況下,任何人都可以使用\\\"mailq\\\"命令來檢視郵件隊列的內容。為了限製可以稽覈郵件隊列內容的人員,隻需要在\\\"\\/etc\\/sendmail.cf\\\"檔案中指定\\\"restrictmailq\\\"選項即可。在這種情況下,sendmail隻允許與這個隊列所在目錄的組屬主相同的用戶可以檢視它的內容。這將允許權限為0700的郵件隊列目錄被完全保護起來,而我們限定的合法用戶仍然可以看到它的內容。\\n\\n編輯\\\"sendmail.cf\\\"檔案(vi\\/etc\\/sendmail.cf)並更改下麵一行:\\n\\nOPrivacyOptions=authwarnings,noexpn,novrfy\\n\\n改為:\\n\\nOPrivacyOptions=authwarnings,noexpn,novrfy,restrictmailq\\n\\n現在我們更改郵件隊列目錄的權限使它被完全保護起來:\\n\\n[root@deep]#chmod0700\\/var\\/spool\\/mqueue\\n\\n注意:我們已經在sendmail.cf中的\\\"PrivacyOptions=\\\"行中新增了\\\"noexpn\\\"和\\\"novrfy\\\"選項,現在在這一行中我們接著新增\\\"restrictmailq\\\"選項。\\n\\n任何一個冇有特權的用戶如果試圖檢視郵件隊列的內容會收到下麵的資訊:\\n\\n[user@deep]$\\/usr\\/bin\\/mailq\\n\\nYouarenotpermittedtoseethequeue\\n\\n**TP\\n\\n6、限製處理郵件隊列的權限為\\\"root\\\"\\n\\n通常,任何人都可以使用\\\"-q\\\"開關來處理郵件隊列,為限製隻允許root處理郵件隊列,需要在\\\"\\/etc\\/sendmail.cf\\\"檔案中指定\\\"restrictqrun\\\"。\\n\\n編輯\\\"sendmail.cf\\\"檔案(vi\\/etc\\/sendmail.cf)並更改下麵一行:\\n\\nOPrivacyOptions=authwarnings,noexpn,novrfy,restrictmailq\\n\\n改為:\\n\\nOPrivacyOptions=authwarnings,noexpn,novrfy,restrictmailq,restrictqrun\\n\\n任何一個冇有特權的用戶如果試圖處理郵件隊列的內容會收到下麵的資訊:\\n\\n[user@deep]$\\/usr\\/sbin\\/sendmail-q\\n\\nYoudonothavepermissiontoprocessthequeue\\n\\n7、在重要的sendmail檔案上設置不可更改位\\n\\n可以通過使用\\\"chattr\\\"命令而使重要的Sendmail檔案不會被擅自更改,可以提高係統的安全性。具有\\\" i\\\"屬性的檔案不能被修改:它不能被刪除和改名,不能創建到這個檔案的鏈接,不能向這個檔案寫入數據。隻有超級用戶才能設置和清除這個屬性。\\n\\n為\\\"sendmail.cf\\\"檔案設置不可更改位:\\n\\n[root@deep]#chattr i\\/etc\\/sendmail.cf\\n\\n為\\\"sendmail.cw\\\"檔案設置不可更改位:\\n\\n[root@deep]#chattr i\\/etc\\/sendmail.cw\\n\\n為\\\"sendmail.mc\\\"檔案設置不可更改位:\\n\\n[root@deep]#chattr i\\/etc\\/sendmail.mc\\n\\n為\\\"null.mc\\\"檔案設置不可更改位:\\n\\n[root@deep]#chattr i\\/etc\\/null.mc\\n\\n為\\\"aliases\\\"檔案設置不可更改位:\\n\\n[root@deep]#chattr i\\/etc\\/aliases\\n\\n為\\\"access\\\"檔案設置不可更改位:\\n\\n[root@deep]#chattr i\\/etc\\/mail\\/access\\n\\nqmail安全\\n\\nqmail有一個名為rcpthosts(該檔名源於RCPTTO命令)的配置檔案,其決定了是否接受一個郵件。隻有當一個RCPTTO命令中的接收者地址的域名存在於rcpthosts檔案中時,才接受該郵件,否則就拒絕該郵件。若該檔案不存在,則所有的郵件將被接受。當一個郵件服務器不管郵件接收者和郵件接收者是誰,而是對所有郵件進行轉發(relay),則該郵件服務器就被稱為開放轉發(openrelay)的。當qmail服務器冇有rcpthosts時,其是開放轉發的。\\n\\n設置自己服務器為非openrelay的最簡單的辦法就是將你的郵件服務器的所有域名(若DNS的MX記錄指向該機器,也應該包括該域名。但是這將導致你的本地客戶也被拒絕使用你的服務器轉發郵件,而要支援客戶使用MUA來發送郵件,必須允許客戶使用服務器轉發郵件。qmail-smtpd支援一種有選擇性的忽略rcpthosts檔案的方法:若qmail-smtpd的環境變量RELAYCLIENT被設置,則rcpthost檔案將被忽略,relay將被允許。但是如何識彆一個郵件發送者是否是自己的客戶呢?qmail並冇有采用密碼認證的方法,而是判斷髮送郵件者的源IP地址,若該IP地址屬於本地網絡,則認為該發送者為自己的客戶。\\n\\n這裡就要使用ucspi-tcp軟件包。在這裡我們要使用該軟件包的tcpserver程式。該程式的功能類似於inetd-監聽進入的連接請求,為要啟動的服務設置各種環境變量,然後啟動指定的服務。\\n\\ntcpserver的配置檔案是\\/etc\\/tcp.smtp,該檔案定義了是否對某個網絡設置RELAYCLIENT環境變量。例如,本地網絡是地址為192.168.10.0\\/24的C類地址,則tcp.smtp的內容應該設置如下:\\n\\n127.0.0.1:allow,RELAYCLIENT=\\\"\\\"\\n\\n192.168.10.:allow,RELAYCLIENT=\\\"\\\"\\n\\n:allow\\n\\n這幾個規則的含義是指若連接來自127.0.0.1和192.168.10則允許,並且為其設置環境變量RELAYCLIENT,否則允許其他連接,但是不設置RELAYCLIENT環境變量。這樣當從其他地方到本地的25號連接將會被允許,但是由於冇有被設置環境變量,所以其連接將會被qmail-smptd所拒絕。\\n\\n但是tcopserver並不直接使用\\/etc\\/tcp.smtp檔案,而是需要先將該檔案轉化為cbd檔案:\\n\\n[lix@mail\\/etc]$#tcprulestcp.smtp.cdbtcp.smtp.temp