日韩欧美国产精品免费一二-日韩欧美国产精品亚洲二区-日韩欧美国产精品专区-日韩欧美国产另-日韩欧美国产免费看-日韩欧美国产免费看清风阁

LOGO OA教程 ERP教程 模切知識(shí)交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

開源郵件系統(tǒng)安全

admin
2012年2月17日 0:25 本文熱度 3826
第一章 電子郵件基礎(chǔ)知識(shí)

系統(tǒng)組成

1、郵件分發(fā)代理(mail delivery agent MDA)
在本地郵件服務(wù)器上將郵件分發(fā)給用戶。郵件文件/var/spool/mail or $home/mail or郵件目錄。可進(jìn)行自動(dòng)郵件過濾,自動(dòng)回復(fù),自動(dòng)觸發(fā)程序等功能。開源的MDA程序有:binmail(is mail),procmail

2、郵件傳送代理(mail transfer agent MTA)
負(fù)責(zé)郵件的傳送和接收。開源MTA有:sendmail,qmail,postfix。

3、郵件用戶代理(mail user agent MUA)
在unix郵件模型中,用戶使用一個(gè)本地郵箱來存放自已的郵件。MUA程序向用戶提供了讀取存在他們郵箱中郵件的操作界面。它并不接收郵件,它只是顯示已經(jīng)有用戶郵箱中存在的郵件。開源的MUA程序,文本方式的binmail,圖形方式的pine,kmail。

郵件安全

避免開放式轉(zhuǎn)發(fā),防止垃圾郵件,防范病毒。

第二章 SMTP協(xié)議

基本命令

1、HELO   
HELO hostname 從客戶端打開問候信息,使用SMTP服務(wù)器識(shí)別客戶機(jī)的身份。但客戶機(jī)可隨意修改這個(gè)hostname。存在安全問題,如果真要知道客戶機(jī)的身份,可使用反向域名解析系統(tǒng),根據(jù)客戶機(jī)的IP地址查詢其DNS名字。如果不符可拒絕訪問。
2、MAIL   
標(biāo)識(shí)發(fā)件人,MAIL FROM:XXX@EXAMPLE.COM
3、RCPT   
標(biāo)識(shí)收件人,RCPT TO:XXX@EXAMPLE.COM
4、DATA   
標(biāo)識(shí)郵件開始,命令后的所有內(nèi)空為郵件的正文。以單行的“.”號(hào)為結(jié)束標(biāo)記。
5、SEND   
直接把郵件發(fā)送到登錄用戶的終端,只在用戶登錄進(jìn)來時(shí)有用,通常會(huì)彈出一條信息。有點(diǎn)類似于UNIX的write命令。該命令有一個(gè)很大的安全隱患,外部使用者使用該命令不需登錄進(jìn)計(jì)算機(jī)就可以知道有哪些用戶登錄進(jìn)了系統(tǒng)。黑客利用這一點(diǎn)在互聯(lián)網(wǎng)上搜錄受害者ID和登錄時(shí)間而不被發(fā)覺。絕大多數(shù)SMTP軟件都不再支持這個(gè)命令。
6、SOML(SEND OR MAIL)
發(fā)送或郵寄。如果接收都當(dāng)前登錄到系統(tǒng)上,就執(zhí)行SEND,如果不在就執(zhí)行MAIL,同樣有以上安全問題,通常禁用。
7、SAML(SEND AND MAIL)
發(fā)送和郵寄。同時(shí)完成兩個(gè)功能。同樣有以上安全問題,通常禁用。
8、RSET
即重置。如果客戶機(jī)在接收服務(wù)器的響應(yīng)時(shí)出現(xiàn)了混亂,認(rèn)為當(dāng)前的SMTP連接不再同步,就可以通過發(fā)該命令使連接回到HELO狀態(tài)。
9、VRFY
在進(jìn)入SMTP模式前,可以使用這個(gè)命令來判斷一個(gè)SMTP服務(wù)器是否能將郵件發(fā)送到某個(gè)接收者。VRFY username。它是一個(gè)很好的故障排除工具。但存在可被黑客和垃圾郵件發(fā)送者利用的缺陷,因此很多站點(diǎn)都禁用這個(gè)命令。
10、EXPN
即擴(kuò)展,用來向SMTP服務(wù)器查詢郵件列表和別名。郵件列表是一種只使用一個(gè)地址向一群人發(fā)送郵件的快捷方式。EXPN address。通常禁用。
11、HELP
幫助命令。
12、NOOP
什么都不做,只是返回一個(gè)大于零的應(yīng)答碼。通常用于檢測(cè)連接是否能建立。
13、QUIT
退出系統(tǒng)。
14、TURN
允許兩臺(tái)計(jì)算機(jī)在一個(gè)TCP連接中進(jìn)行雙向郵件傳輸。有安全問題,通常禁用。在ESMTP中有ETRN命令。

服務(wù)器應(yīng)答

1、錯(cuò)誤返回碼
500    語法錯(cuò)誤
501    參數(shù)中語法錯(cuò)誤
502    不支持該命令
503    命令序列錯(cuò)誤
504    不支持該命令參數(shù)
2、信息返回碼
211    系統(tǒng)狀態(tài),或系統(tǒng)幫助
214    幫助信息
3、服務(wù)返回碼
220    服務(wù)已準(zhǔn)備好
221    服務(wù)正在關(guān)閉傳輸通道
421    服務(wù)不可用
4、操作返回碼
250    所請(qǐng)求的郵件操作已進(jìn)行完畢
251    非本地用戶,需要發(fā)送至<forward-path>
354    開始郵件輸入,以單行“.”號(hào)結(jié)束。
450    所請(qǐng)求的郵件操作未進(jìn)行,郵箱不可用。
451    所請(qǐng)求的操作被中止,發(fā)生處理錯(cuò)誤。
452    所請(qǐng)求的操作未進(jìn)行,系統(tǒng)存儲(chǔ)空間不足。
550    所請(qǐng)求的操作未進(jìn)行,郵箱不可用。
551    非本地用戶,請(qǐng)嘗試<forward-path>
552    所請(qǐng)求的郵件操作被中止,超過存儲(chǔ)空間。
553    所請(qǐng)求的操作未進(jìn)行,郵箱名被禁止使用。
554    事務(wù)處理失敗。

詳情可參見:MTA的錯(cuò)誤信息代碼

1982年RFC821定義第一版的SMTP協(xié)議,1995年RFC1869定義了一套擴(kuò)展SMTP功能的方法。使用擴(kuò)展SMTP的標(biāo)志是把最初版本中的問候命令HELO用新的問候命令EHLO代替。一旦服務(wù)器接收到這條命令,它意識(shí)到客戶機(jī)有能力發(fā)送擴(kuò)展的SMTP命令。新的命令有:
1、DSN(Delivery Status Notification),用來提示用戶某封特定郵件的狀態(tài)。
2、ETRN。允許客戶端請(qǐng)求同服務(wù)器建立另一條smtp連接來傳送郵件。它僅僅開始另一個(gè)會(huì)話,并不用原來的已經(jīng)存在的會(huì)話傳輸數(shù)據(jù)。這樣SMTP服務(wù)器就可以用DNS域名解析方法同客戶進(jìn)行聯(lián)系。不依賴于客戶聲明的身份。
3、AUTH。它允許SMTP客戶機(jī)使用用戶ID AND PASSWORD或其他認(rèn)證技術(shù)向服務(wù)器正確標(biāo)識(shí)自己的身份。認(rèn)證機(jī)制參數(shù)如下:
PLAIN                        使用文本方式的用戶名和認(rèn)證id和口令。
LOGIN                    使用基于64位密鑰加密的用戶名和口令。
GRAM-MD5            使用基于MD5加密的用戶名和口令。
DIGEST-MD5        使用基于MD5加密的用戶名和口令的摘要值。
KERBEROS_V4    使用基于Kerberos認(rèn)證密鑰。
GSSAPI                    使用普通安全服務(wù)(Generic Security  Service,GSS)認(rèn)證密鑰。

郵件格式(RFC822規(guī)范定義)

Received段            用來標(biāo)識(shí)將郵件從最初發(fā)送者到目的地進(jìn)行中間轉(zhuǎn)發(fā)的SMTP服務(wù)器
from host name
by host name
via physical-path
with protocol
id message-id
for final e-mail destination
Return-path:route        標(biāo)識(shí)郵件發(fā)送到目的地服務(wù)器所經(jīng)過和路徑
Reply to:address         郵件發(fā)出的地址
From: Sender:              標(biāo)識(shí)原始郵件的作者
Date:date-time             郵件的時(shí)間

Destination段
to:address                     接收方地址   
Cc:address                   抄送方地址
Bcc:address                 密送方地址

option段
Message-ID:Message-id
Resent-Message-ID:Message-id
In-Reply-To:message-id
References:message-id
Keywords:text-list
Subject:text
Comments:text
Encrypted:word

Resent段     由于某種原因需從客戶端再次發(fā)送,該段內(nèi)容在信頭的原始字段前面加上resent。
resend-reply-to
resent-from
resent-sender
resent-cc
resent-to
resent-bcc
resent-date

第三章 pop3協(xié)議

RFC1939定義了一個(gè)頗為流行的允許客戶機(jī)從遠(yuǎn)程服務(wù)器上收取郵件的協(xié)議。稱為郵局協(xié)議(post office protocol,pop)。現(xiàn)在使用的是該協(xié)議的第3版本,通常稱之為POP3。端口110

user/pass命令用于登錄pop服務(wù)器,但它是以ASCII碼格式明文傳送的,存在安全問題。apop命令登錄時(shí)是用MD5加密的。命令格式:apop name digest AUTH命令,AUTH mechanism(PLAIN,LOGIN,SKEY,GSSAPI,KERBEROS)


客戶端命令
STAT        顯示郵箱當(dāng)前狀態(tài)
LIST         顯示郵箱內(nèi)容列表
RETR       從郵箱取回單個(gè)郵件的文本內(nèi)容,參數(shù)是LIST命令返回的郵件號(hào)
DELE       刪除郵箱中的郵件,參數(shù)是LIST命令返回的郵件號(hào),按QUIT退出時(shí)郵件才真正刪除。
UIDL        唯一的郵件ID列表。
TOP         可選安裝的命令,它允許客戶機(jī)以手工方式來獲取郵箱郵件的概要信息 top msg n,
                top 10 5,表示顯示第10封5行的概要信息

NOOP     什么都不做,用于查看服務(wù)器的狀態(tài)響應(yīng)情況。
RSET      重置
QUIT       退出

pop協(xié)議還存在一些缺陷,因此,近年來有一種開發(fā)更高級(jí)郵件收取協(xié)議的趨勢(shì),例如IMAP.

第四章 IMAP

IMAP(Interactive Message Access Protoclo)是由華盛頓大學(xué)開發(fā)的交互郵件訪問協(xié)議。端口143

它允許使用者從多個(gè)地點(diǎn)訪問郵箱而不會(huì)把郵件分割在不同計(jì)算機(jī)上,它把郵箱都存在服務(wù)器上。供客戶隨時(shí)隨地取用。


LOGIN,文本方式的認(rèn)證方法,存在安全問題

AUTHENTICATE命令 (PLAIN,LOGIN,SKEY,GSSAPI,KERBEROS)

IMAP客戶端協(xié)議
IMAP提供了一系列命令對(duì)服務(wù)器上不同郵箱的郵件進(jìn)行讀取,轉(zhuǎn)移和刪除。記住,IMAP把所有的郵件都存放在服務(wù)器端,下載純粹是為了顯示。用戶的缺省郵箱稱為INBOX,所有的新郵件都出現(xiàn)在INBOX中。用戶可以創(chuàng)建新郵箱,把INBOX中的郵件轉(zhuǎn)移到其它地方。郵箱中的每條郵件都有一個(gè)唯一的ID,ID在不同會(huì)話中保護(hù)不變,以便客戶端正確標(biāo)識(shí)郵件。每個(gè)郵箱都有一個(gè)唯一的有效性標(biāo)志(UIDVALIDITY),只要郵件的UID不發(fā)生變化,郵箱的有效性標(biāo)志(UIDVALIDITY)也不會(huì)變化。如果郵箱中出現(xiàn)了不同的UID,那么下一次連接時(shí)的有效性標(biāo)志(UIDVALIDITY)就會(huì)變大,用戶就可以迅速知道有新郵件。

IMAP郵件標(biāo)志
\Seen            已被閱讀
\Answered   已被回復(fù)
\Flagged      標(biāo)識(shí)為緊急
\Delete         標(biāo)識(shí)為已刪除
\Draft            草稿
\Recent        新郵件

IMAP客戶端命令
select              選擇一個(gè)郵箱操作
examine         以只讀方式打開郵箱
create             創(chuàng)建郵箱,默認(rèn)在$home目錄下
delete             刪除郵箱,而不是郵件
rename          郵箱改名
subscribe      在客戶機(jī)的活動(dòng)郵箱列表中增加一個(gè)郵箱
unsubscribe 在客戶機(jī)的活動(dòng)郵箱列表中去掉一個(gè)郵箱
list                   顯示客戶機(jī)可用的郵件列表 list reference mailbox,
                        reference是郵箱路徑參數(shù)相關(guān)的目錄名,如果是“”,則表示用戶登錄目錄。
                        可列出所有文件,包括不是郵箱文件,存在安全問題,可以lsub。

lsub                只列出用subscribe設(shè)定為活動(dòng)的郵箱。
status            查詢郵箱當(dāng)前狀態(tài)
messages    郵箱中的郵件總數(shù)
recent             郵箱中標(biāo)志為\recent的郵件數(shù)
uidnext           可以分配給新郵件的下一個(gè)UID
uidvalidity      郵箱的UID有效性標(biāo)志
unseen          郵箱中沒有被標(biāo)志為\SEEN的郵件數(shù)
append         向某個(gè)郵箱發(fā)送郵件。不安全,最好不要使用
check            在郵箱中設(shè)置一個(gè)檢查點(diǎn),任何未完成的操作,都會(huì)被做完以保護(hù)郵箱的一致性。
                       同unix系統(tǒng)的sync

close             關(guān)閉郵箱,所有\(zhòng)delete標(biāo)志郵件就會(huì)被物理刪除,
                       在打開另一個(gè)郵箱時(shí), 當(dāng)前郵箱隱式地調(diào)用close。

expunge        在不關(guān)閉郵箱的情況下刪除所有標(biāo)志為刪除的郵件。
search          搜索郵件,有很多搜索關(guān)鍵字,書上有,筆記沒列出,可查詢相關(guān)資料。
fetch              用于讀取郵件,fetch messageset datanames(ALL,BODY AND BODY[section])。
                       BODY[section]會(huì)設(shè)置\seen標(biāo)志。           
                       BOOY.PEEK[section]不會(huì)設(shè)置\seen標(biāo)志。

store              用來修改郵件相關(guān)的信息。store messageset dataname datavalue。
                       例如:store 1 +flags \deleted設(shè)置刪除標(biāo)志。

copy               把郵件從一個(gè)郵箱復(fù)制到另一個(gè)郵箱。copy messageset mailboxname。
uid                  同fetch,copy,store or search一起使用,以標(biāo)識(shí)uid號(hào)。
capability      返回請(qǐng)求返回imap服務(wù)器支持的功能列表。
noop              什么都不做,用來向服務(wù)器發(fā)送自動(dòng)命令,防止因長(zhǎng)時(shí)間處于不活動(dòng)狀態(tài)而導(dǎo)至連接中斷。
logout            退出并關(guān)閉所有郵箱。任何作了\deleted標(biāo)志的郵件將在這個(gè)時(shí)候被刪除。


第五章 MIME協(xié)議

向互聯(lián)網(wǎng)上的遠(yuǎn)程主機(jī)傳輸二進(jìn)制數(shù)據(jù)的最流行的編碼方法是uuencode and MMIE(Multipurpose Internet Mail Extension多用途互聯(lián)網(wǎng)郵件擴(kuò)展)格式。

Unencode—在smtp出現(xiàn)幾年前,unix系統(tǒng)管理員向調(diào)制解調(diào)器線路發(fā)送二進(jìn)制數(shù)據(jù)時(shí)首先將其轉(zhuǎn)換為ASCII文本,然后嵌入郵件中,這種把二進(jìn)制數(shù)據(jù)轉(zhuǎn)換成ASCII文本數(shù)據(jù)的方法稱為uuencode,其中uu代表unix to unix,是unix系統(tǒng)間復(fù)制協(xié)議組(UNIX TO UNIX COPY PROTOCOL)的一部份。

使用uuencode編碼/解碼
編碼:uuencode [file] name  
example:uuencode hello hello>hello.uue     
default input is stdin;
default output is stdout.

解碼:uudecode [-o outfile] name   
example:uudecode hello.uue
可以用-o選項(xiàng)輸出另外一個(gè)文件名。


MMIE
很多新開發(fā)的郵件軟件都不使用uuencode,因?yàn)槌隽艘环N對(duì)二進(jìn)制數(shù)據(jù)進(jìn)行編碼的互聯(lián)網(wǎng)標(biāo)準(zhǔn)。MMIE,MMIE的報(bào)文格式在RFC2045 AND RFC2046定義。功能把UUENCODE豐富,它將關(guān)于文件的附加信息也同時(shí)傳送給解碼器。使解碼器可以自動(dòng)檢測(cè)不同類型的二進(jìn)制文件并解碼。

MMIE頭字段
MIME-Version                             所使用的MMIE版本
Content-Transfer-Encoding    將二進(jìn)制數(shù)據(jù)編碼為ASCII文本使用的編碼方案,7種:
                                                      7bit    標(biāo)準(zhǔn)的7位ASCII文本(default)
                                                      8bit    標(biāo)準(zhǔn)的8位ASCII文本
                                                      binary    原始二進(jìn)制數(shù)據(jù)
                                                      quoted-printable    將數(shù)據(jù)編碼成US-ASCII字符集中的可打印字符。
                                                      base64    每6位二進(jìn)制數(shù)據(jù)轉(zhuǎn)換成1個(gè)8位的可打印字符。
                                                      ietf-token    RFC定義的擴(kuò)展令牌編碼。
                                                      x-token    兩人字符X- or x-跟隨,沒有任何令牌產(chǎn)生的分隔空格
Content-ID                                  郵件內(nèi)容部份的唯一標(biāo)識(shí),通過該標(biāo)識(shí)mmie的內(nèi)容可被其它mmie郵件引用
Content-Description                 郵件內(nèi)容部份的簡(jiǎn)短描述
Content-Type:tyep/subtype(必須)        編碼數(shù)據(jù)中的內(nèi)容類型
                                                    type為基本類型
                                                    1、text文本類型
                                                        plain子類型:表示沒有格式的普通ASCII文件
                                                        html子類型:表示使用標(biāo)準(zhǔn)的html標(biāo)記來格式化文本
                                                        enriched子類型:表示文本的格式類似于很多字處理軟件中的豐富文本格式.                                                                                          RTF(有下劃線,粗體等)。
                                                        還應(yīng)該使用字符集參數(shù)charset明確指明數(shù)據(jù)編碼時(shí)采用的字符集。如:
                                                        Content-Type:text/plain;charset=us-ascii
                                                    2、message報(bào)文類型,允許郵件軟件在一條郵件發(fā)送多條RFC822郵件
                                                        rfc822子類型:表示嵌入的是一條普通的RFC822郵件
                                                        partial子類型:表示被分成幾部份的一段長(zhǎng)郵件
                                                        external-body子類型:表示指向郵件外某位置的指針
                                                    3、image圖像類型,jpeg and gif。
                                                     事實(shí)上需用Content-Type-Encoding字段中定義的標(biāo)準(zhǔn)MIME編碼方式來編碼。
                                                    4、video視頻類型,mpeg,同上需用Content-Type-Encoding
                                                    5、audio聲音類型,basic,
                                                        采用8kHz采樣頻率編碼的單信道綜合服務(wù)數(shù)字網(wǎng)mu-law。

                                                       6、application應(yīng)用程序類型。
                                                            postscript子類型:定義以附錄格式出現(xiàn)的打印文檔。
                                                            octet-stream子類型:定義包含任意二進(jìn)制數(shù)據(jù)的郵件。
                                                        7、multipart混合類型
                                                            可包含多種數(shù)據(jù)類型,每種數(shù)據(jù)類型用Conten-Type來定義。
                                                            每種定義間用邊界標(biāo)識(shí)符來分隔

                                                            example:    Conten-Type:mulipart/mixed;boundary=bounds2
                                                                    –bounds2                 分隔符
                                                                    Conten-Type:text/plain;charset=us-ascii
                                                                    –bounds2
                                                                    …
                                                                    –bounds2–          結(jié)束符
                                                           類型有四種:
                                        mixed:表示各部份間互相獨(dú)立,應(yīng)該按照它們?cè)卩]件中嵌入的順序向接收者顯示。
                                        parallel:表示各部份間互相獨(dú)立,可按任意順序向接收者顯示。
                                        alternative:表示各部份都是同一數(shù)據(jù)的不同表示方式,只需要使用最合適的顯示方式顯示其中一部份
                                           digest:表示同mixed一樣的方式,但是郵件體總是rfc822格式。

S/MIME 安全MIME協(xié)議
在S/MIME Multipart中加入一個(gè)signed子類型,郵件由兩部份組成,標(biāo)準(zhǔn)郵件部份和數(shù)字簽名。數(shù)字簽名方法允許發(fā)信人使用唯一的代碼來“簽發(fā)”郵件,其他人可以使用公鑰來驗(yàn)證該代碼。這種方法并不對(duì)郵件進(jìn)行加密。人們創(chuàng)建pkcs7-mime應(yīng)用子類型來提供一些郵件安全功能。每種功能使用pkcs7-mime子類型中的一個(gè)單獨(dú)的參數(shù),通過smime-type標(biāo)志來確定。
example:Conten-Type:multipart/signed;
    protocol="application/pkcs7-signature";
    micalg=sha1;boundary=bound1
    –bound1
    Conten-Type:text/plain
        this is a clear-signed message
    –bound1
    Conten-Type:application/pkcs7-signature;name=smime.p7s
    Conten-Transfer-Encoding:base64
    Content-Disposition:attachment;filename=smime.p7s
    …
    –bound1–

pkcs7/mime功能
data            未加密的郵件文本在其它Content-Type部份中表示郵件內(nèi)容使用了安全服務(wù)措施,但是在pkcs7-mime類型中包含的使用data功能定義的數(shù)據(jù)不被加密。

encrypted-data        加密的郵件文本在其它Content-Type部份中表示郵件內(nèi)容已經(jīng)加密,數(shù)據(jù)是使用公鑰加密方法加密的,加密后的數(shù)據(jù)使用某種標(biāo)準(zhǔn)的MIME編碼方法,例如base-64,轉(zhuǎn)換成ASCII文本。

signed-data        未加密的郵件文本和數(shù)字簽名???????同multipart/signed方法類似,允許發(fā)送方將普通的文本郵件連同數(shù)字簽名一起發(fā)送,不同的是application/signed-data方法使用公鑰加密方式對(duì)原始郵件進(jìn)行加密和簽名。結(jié)果經(jīng)base-64編碼后通過smtp發(fā)送。接收端郵件閱讀軟件必須能夠?qū)⑧]件解密供收信人閱讀。

enveloped-data        加密的郵件文本向郵件提供郵件加密服務(wù),但是不提供認(rèn)證服務(wù)。

signed-and-enveloped-data    加密的郵件文本和數(shù)字簽名在一封郵件中包含了公鑰加密服務(wù)和數(shù)字簽名服務(wù),接收端軟件必須能夠?qū)⑧]件和數(shù)字簽名解密。這樣收信人不但能能夠看到郵件內(nèi)容,同時(shí)也可以判斷是誰發(fā)出的郵件。
digest-data        用來認(rèn)證原始郵件的經(jīng)過散列運(yùn)算的郵件文本用于認(rèn)證郵件內(nèi)容,郵件發(fā)送時(shí),發(fā)送人使用自已的數(shù)字簽名對(duì)郵件進(jìn)行散列運(yùn)算。散列函數(shù)根據(jù)事先確定的算法計(jì)算出一個(gè)散列值,放到digest-data部份,該部份被加進(jìn)普通郵件部份,收信人使用數(shù)字簽名對(duì)收到的郵件進(jìn)行散列運(yùn)算,比較結(jié)果和digest-data中的值,如果相等就認(rèn)為郵件是可信的。

其中data,signed-data,enveloped-data是必須支持的S/MIME功能。

在S/MIME中加密郵件和生成數(shù)字簽名,你必須有一個(gè)有效的,唯一的數(shù)字標(biāo)識(shí)密鑰。有幾家公司提供這種密鑰,通常是收費(fèi)的。關(guān)于獲得數(shù)字標(biāo)識(shí)密鑰的更多信息可以瀏覽verisign網(wǎng)站。

unix 上常用的MIME郵件處理工具:metamail and reformime

小結(jié)

使用smtp發(fā)送二進(jìn)制數(shù)據(jù)是一件復(fù)雜的事,現(xiàn)在有二種方法可以實(shí)現(xiàn),一個(gè)用uuencode程序,將二進(jìn)制數(shù)據(jù)轉(zhuǎn)換成ASCII文件,收信人用uudecode解碼還原。另一種是用mime協(xié)議在郵件發(fā)送前轉(zhuǎn)換并標(biāo)記二進(jìn)制數(shù)據(jù)。MIME格式的郵件包含若干獨(dú)立的部份,封裝了不同類型的發(fā)送數(shù)據(jù)。普通文本不用編碼直接包含進(jìn)來,二進(jìn)制數(shù)據(jù),例如圖像和可執(zhí)行文件,通過base-64編碼后作為獨(dú)立部份包含在郵件中。各部份的定義存放在一個(gè)MIME郵件頭字段中,這樣接收郵件服務(wù)器就可以將各部份解碼。

S/MIME是在標(biāo)準(zhǔn)的MIME中加進(jìn)了安全功能。人們通過增加幾種MIME郵件頭格式來標(biāo)識(shí)簽名的郵件和加密后的郵件,郵件加密過程使用商業(yè)數(shù)字密鑰實(shí)現(xiàn)的。接收者郵件服務(wù)器必須能夠識(shí)別用來加密郵件的數(shù)字密鑰。
S/MIME的另一種使用方法是采用外部加密軟件,pgp程序給用戶提供了一種在郵件發(fā)送前進(jìn)行加密和簽名的方法。收件人知道發(fā)信人的數(shù)字密鑰才能正確認(rèn)證并解密郵件。

第六章 讀取郵件頭

to: and from:字段是代表收信人和發(fā)信人的郵件地址,但它們是可以偽造的。to:錯(cuò)了郵件是不會(huì)被發(fā)送到錯(cuò)誤的地方的。因?yàn)镽CPT命令用來通知遠(yuǎn)程郵件服務(wù)器將郵件發(fā)給誰,服務(wù)器使用該命令的信息而不是郵件頭中的to:字段信息來發(fā)送郵件。對(duì)于垃圾郵件,發(fā)信人使用軟件篡改了郵件頭中的to:字段,將正常的收件人地址放到了Bcc:字段或RCPT命令中。通過篡改to:字段,發(fā)信人就可以把一封同樣的郵件群發(fā)給成千上萬的顧客。決竅不在于to:字段被篡改,而在于郵件沒有使用標(biāo)準(zhǔn)的MTA程序發(fā)送。垃圾郵件發(fā)送人使用了一個(gè)特殊的MTA程序,從目標(biāo)地址列表中讀取郵件地址,然后把它們放到BCC: OR SMTP中的RCPT命令中,而不是使用通常的TO:字段。

received:字段
垃圾郵件發(fā)送人的郵件主機(jī)依賴于遠(yuǎn)程的支持開放式轉(zhuǎn)發(fā)的郵件服務(wù)器,每經(jīng)一部服務(wù)器,就要在郵件頂端加一個(gè)received:字段。記錄時(shí)間戳,可以查詢郵件經(jīng)過服務(wù)器的時(shí)間。

message-id:字段
該字段常常也能發(fā)現(xiàn)最初的發(fā)信人。它由最初發(fā)送郵件的服務(wù)器產(chǎn)生,通常包括服務(wù)器主機(jī)名。

使用dns程序追查郵件主機(jī)
whois     nslookup     dig(A 互聯(lián)網(wǎng)地址,SOA 從正式信息開始,NS  名稱服務(wù)器,MX 郵件服務(wù)器)

利用外部防垃圾郵件的服務(wù)
SpamCop網(wǎng)站
Sam Spade網(wǎng)站

第七章 保護(hù)UNIX服務(wù)器安全

利用syslogd日志程序

安裝防火墻(iptables)

利用Bastille工程加固linux安全

入侵檢測(cè),安裝Tripwire。

第八章 Sendmail郵件軟件

sendmail            組成部份
sendmail            從本地和遠(yuǎn)程接收郵件并決定怎樣進(jìn)行發(fā)送
sendmail.cf        控制sendmail程序運(yùn)行的配置文件
sendmail.cw        包含sendmail收取郵件的域名列表
sendmail.ct        包含可以控制sendmail的信任用戶列表
aliases            包含可以把郵件重定向給其它用戶,文件或程序的有效本地郵件地址列表
newaliases        從文本文件中創(chuàng)建一個(gè)新的別名數(shù)據(jù)庫文件
mailq            檢查郵件隊(duì)列,顯示所有信息
mqueue            存放待發(fā)送郵件的隊(duì)列
mailertable        用來覆蓋向指定域的路由
domaintable        用來把舊域名映射互新域名
virtusertable        用來把用戶和域名映射到其它地址
relay-domains        用來允許特定主機(jī)通過sendmail程序轉(zhuǎn)發(fā)郵件
access            用來拒絕或允許來自某個(gè)域的郵件

sendmail.cf文件包含用來分析每條郵件,并決定怎樣處理的規(guī)則集。它是由一系列的類(定義常用詞組,幫助規(guī)則集指定特定的郵件類型),宏(為減少配置文件中長(zhǎng)字符串的輸入而設(shè)定的值),選項(xiàng)(定義sendmail運(yùn)行的參數(shù))和規(guī)劃集組成。

sendmail    配置文件中使用的字符
C    定義文本的類
D    定義宏
F    定義包含文本類的文件
H    定義郵件頭字段和動(dòng)作
K    定義包含查詢文本的數(shù)據(jù)庫
M    定義發(fā)件人
O    定義sendmail選項(xiàng)
P    定義sendmail優(yōu)先值
R    定義解析地址的規(guī)則集
S    定義規(guī)則集組

D行
Dx value    example:DnMAILER-DAEMON 它把字符串MAILER-DAEMON分配給了宏n,規(guī)則集就可以使用宏$n來代替字符串MAILER-DAEMON。

C行
Cc phrase1 phrase2 …,c是類名,phrase1,phrase2等是希望歸為一組的單詞。example:Cwlocalhost sadrach。這個(gè)例子把單詞localhost,shdrach歸為w類,在規(guī)則集中使用$w變量時(shí),sendmail就將會(huì)用這兩個(gè)單詞來替換該變量。

F行
Fc filename,和C行類似。但F行指向包含類中所有用來單詞列表的文件。c是單字符類名,filename是包含單詞列表的全路徑名文件。

K行
定義sendmail中用來查詢不同類型信息的特殊的映射數(shù)據(jù)庫。Kmapname mapclass arguments。mapname是配置文件中使用的數(shù)據(jù)庫名,mapclass是生成的數(shù)據(jù)庫類型(dbm,btree,hash等)grguments用來幫助sendmail創(chuàng)建數(shù)據(jù)庫。可以用makemap命令從文本文件中創(chuàng)建映射數(shù)據(jù)庫,不同的unix版本使用不同的默認(rèn)映射庫,目前,linux的makemap只支持btree and hash類型的映射類。地者中hash常用。命令例子:makemap mapclass outputfile < textfile

H行
定義sendmail加到郵件中的郵件頭中的行的格式。H[?mflags?]hname:htemplate,mflags是宏標(biāo)志,必須定義。hname是郵件頭中行的名字,htemplate是使用宏的郵件頭行的格式。

M行
定義一個(gè)sendmail用來發(fā)送郵件的發(fā)送程序。每種不同類型的發(fā)送程序都必須有一個(gè)M行定義,這樣sendmail才知道怎樣使用它們。Mprog,[field=value]…。prog是發(fā)送程序的名字,每個(gè)field=value對(duì)定義sendmail使用該發(fā)送程序所需要的屬性。

P行
定義優(yōu)先值。每個(gè)RFC822格式的郵件都可以使用郵件頭中的Precedence:字段來定義郵件的緊急程序。Ptext=value。text是Precedence:中的字符串,value是sendmail根據(jù)Precedence中的文本字符串分配數(shù)字優(yōu)先值。Pfirst-class=0;Pspecial-delivery=100;Plist=-30。

O行
定義控制sendmail運(yùn)行的選項(xiàng)。這些選項(xiàng)也可以在sendmail程序啟動(dòng)時(shí)用-O or -o設(shè)置。
O option=value。
規(guī)則集行是配置文件的核心,它們指示sendmail怎樣獲取接收郵件并決定怎樣將郵件發(fā)給相應(yīng)的接收人。規(guī)則集使用R 和 S行。R行定義對(duì)郵件進(jìn)行的實(shí)際操作,S行定義規(guī)則集分組。

R行
R行用令牌處理發(fā)來的郵件,以確定正確的收件人和將郵件發(fā)給收件人的方法,每一個(gè)R行代表一個(gè)獨(dú)立的規(guī)則。每條規(guī)則由兩部份組成,左手邊(left-hand side,LHS)和右手邊(right-hand side,RHS),LHS定義在發(fā)來的郵件中尋找哪些令牌或單詞,RHS定義怎樣基于LHS發(fā)現(xiàn)的令牌重寫地址。格式如下:Rlhs    rhs    comments字段間至少使用一個(gè)制表符分隔。規(guī)則集中使用的任何宏和類都被展開以匹配獲取的信息。LHS定義特殊的符號(hào)來分析郵件,

LHS    符號(hào)
$*    匹配0個(gè)或更多個(gè)令牌
$+    匹配1個(gè)或更多個(gè)令牌
$-    只匹配1個(gè)令牌
$@    匹配0個(gè)令牌
$=x    匹配x類中的所有條目
$-x    匹配所有不在x類中的條目

RHS        重寫郵件時(shí)所使用的符號(hào)
$n        從LHS中替代令牌n
$[name$]        主機(jī)的正式域名(FQDN)
$(map key $@ arguments $:Default $)    通用的密鑰映射功能
$>n        “調(diào)用”規(guī)則集n
$#mailer        解析郵件發(fā)送程序名
$@host        指定主機(jī)
$:user        指定用戶

S行
標(biāo)識(shí)一組通常用數(shù)字表示的組成規(guī)則集規(guī)則。sendmail共有六個(gè)標(biāo)準(zhǔn)的規(guī)則集,分別是:
0        解析郵件發(fā)送程序,主機(jī)和用戶
1        應(yīng)用于所有發(fā)件人地址
2        應(yīng)用于所有的收件人地址
3        把地址轉(zhuǎn)換成正式的域名格式
4        將內(nèi)部地址翻譯為外部地址
5        應(yīng)用于所有沒有別名的本地地址

典型的郵件通過標(biāo)準(zhǔn)規(guī)則集的路徑:所有郵件都首先通過規(guī)則集3,把主機(jī)名轉(zhuǎn)換成FQDN格式,將地址“清除”。通過規(guī)則集3后,規(guī)則集0從地址中解析出發(fā)件人,主機(jī)名和用戶名。然后郵件被交給由M行定義的相應(yīng)的郵件系統(tǒng)。同樣,規(guī)則集1用來改寫發(fā)送人地址,規(guī)劃集2用來改寫收件人地址。這些信息然后被交給規(guī)則集4,用來把地址轉(zhuǎn)換成外部格式。可用-bt選項(xiàng)來運(yùn)行sendmail,以監(jiān)視不同規(guī)則的動(dòng)作。

m4預(yù)處理器
m4預(yù)處理器用來從一組宏文件中創(chuàng)建sendmail配置文件。宏文件作為輸入被讀進(jìn)來。宏被展開,然后寫到一個(gè)輸出文件。
sendmail            宏定義
divert(n)            為m4定義一個(gè)緩沖動(dòng)作,當(dāng)n=1時(shí)緩沖被刪除,n=0時(shí)開始一個(gè)新緩沖
OSTYPE            定義宏所使用的操作系統(tǒng),該宏允許m4程序增加同相關(guān)操作系統(tǒng)相關(guān)的文件
Domain            定義MTA將使用哪些域來傳輸郵件
Feature            定義配置文件中使用的一個(gè)特定的功能集
Define            定義配置文件中的一個(gè)特定的選項(xiàng)值
MASQUERADE_AS    定義sendmail來應(yīng)答郵件的其它主機(jī)名
MAILER            定義sendmail使用的郵件傳輸方法

啟動(dòng)sendmail。sendmail -bd -q30m  該命令以后臺(tái)進(jìn)程方式(-bd)運(yùn)行,并使其每隔30分鐘(-q30m)輪詢一次未發(fā)送郵件隊(duì)列,檢查是否有新郵件。

保障sendmail安全
文件權(quán)限
正確設(shè)置文件權(quán)限是sendmail系統(tǒng)重要的一部份,如果文件、目錄或用戶的權(quán)限設(shè)置不當(dāng),會(huì)給黑客有機(jī)可乘。如果違背了sendmail的文件權(quán)限策略,sendmail將會(huì)產(chǎn)生警告信息。現(xiàn)在的sendmail程序中對(duì)文件和目錄又增加了很多新約束,絕大多數(shù)限制都?xì)w結(jié)為以下兩種常常被忽視的情況:
1、對(duì)于同組中用戶或全局用戶可寫的文件sendmail不能讀、寫和執(zhí)行。
2、對(duì)于同組中用戶或全局用戶可寫的目錄下的文件sendmail不能讀,寫和執(zhí)行。
這兩種情況覆蓋了絕大多數(shù)缺乏經(jīng)驗(yàn)的郵件管理員所遇到的問題。
如果必須存在組可寫或全局用戶可寫的文件或目錄的郵件環(huán)境,你可以使用sendmail.cf配置文件中的DonBlamesendmail選項(xiàng)參數(shù)禁止sendmail發(fā)出警告。O DonBlamesendmail = option。option是你所希望開放程度的一個(gè)或多個(gè)參數(shù)名,缺省值為safe。表示嚴(yán)格的策略。
如果希望sendmail訪問位于組可寫目錄下的文件,可以用如下格式:
O DonBlamesendmail=GroupWritableDirPathSafe(注意,故障排除時(shí)可用該選項(xiàng),正式工作服務(wù)器不應(yīng)該這樣設(shè)置)

sendmail用戶
sendmail能識(shí)別三種特殊用戶,這三種用戶在sendmail.cf文件中被定義成選項(xiàng)值:
TrustedUser
DefaultUser
RunAsUser

缺省情況下,sendmail假定root用戶將被用來運(yùn)行sendmail并擁有所有特殊的sendmail文件。如sendmail.cf and sendmail.cw。可以使用以下選項(xiàng)來修改sendmail使用的用戶值。
TrustedUser選項(xiàng)允許你指定一個(gè)或多個(gè)用戶作為sendmail訪問的文件屬主,可以用T行來設(shè)置信任用戶Troot,Tdaemon等,也可以用Ft行來定義。DefaultUser允許sendmail使用root以外的用戶名來運(yùn)行獨(dú)立的郵件程序。如(procmail)。
缺省時(shí),sendmail將會(huì)以mailnull來運(yùn)行所有的郵件程序。除非它在系統(tǒng)中找不到該用戶名時(shí)才會(huì)使用root來啟動(dòng)郵件程序。RunAsUser選項(xiàng)指定了運(yùn)行sendmail的用戶名的權(quán)限。
sendmail必須用root用戶啟動(dòng)才能訪問smtp端口,此后,它可以使用setuid功能轉(zhuǎn)變?yōu)橄到y(tǒng)中的另一個(gè)用戶。這個(gè)用戶必須能訪問下面列出的服務(wù)器上的同sendmail相關(guān)的區(qū)域。1、對(duì)/var/spool/mqueue目錄有寫權(quán)限;2、對(duì)/var/log/maillog文件有寫權(quán)限;3、對(duì)sendmail.cf 文件以及其它用來的sendmail列表有讀權(quán)限。

受信應(yīng)用
作為更高級(jí)別安全控制,sendmail允許你在基于別名或.forward文件發(fā)送郵件時(shí)指定所使用的可執(zhí)行的程序。使用受限shell(smrsh)。

第九章 qmail


第十章 postfix

第十一章 防止開放式轉(zhuǎn)發(fā)

配置選擇性轉(zhuǎn)發(fā)
sendmail 8.9版本以后,sendmail在缺省配置時(shí)禁止進(jìn)行開放式轉(zhuǎn)發(fā),你需要指定哪些主機(jī)、網(wǎng)絡(luò)或域被允許通過你的郵件服務(wù)器轉(zhuǎn)發(fā)郵件。下面介紹通過配置sendmail進(jìn)行選擇性轉(zhuǎn)發(fā)。
1、使用訪問列表
sendmail允許你創(chuàng)建一張?jiān)L問列表,記錄可以訪問你的郵件服務(wù)器的主機(jī)。host active。Host可以是主機(jī),子網(wǎng)或域名。active可以是Ok–遠(yuǎn)程主機(jī)可以向你的郵件服務(wù)器發(fā)送郵件;
RELAY–允許中轉(zhuǎn);REJECT–不能向你的郵件服務(wù)器發(fā)郵件和不能中轉(zhuǎn);DISCARD–發(fā)來的郵件將被丟棄,同時(shí)并不向發(fā)送者返回錯(cuò)誤信息。nnn text– 發(fā)來的郵件將被丟棄,但sendmail將會(huì)向發(fā)送者返回nnn確定的smtp代碼和text變量確定的文本描述。
下面是一個(gè)訪問列表的例子:
192.168 RELAY
XXX.NET    OK
XXX.COM REJECT
XXX.COM    550 SORRY,WE DON’T ALLOW SPAMMERS HERE
XXX.ORG    DISCARD
2、在配置中加進(jìn)訪問列表
如果使用m4宏預(yù)處理器,把以下命令加進(jìn)sendmail.mc腳本。FEATURE(`access_db’)。如果沒有m4,你必須手工添加一條K配置行來定義訪問列表。Kaccess hash /etc/mail/access。
3、創(chuàng)建訪問列表
makemap /etc/mail/access < /etc/mail/access.txt
4、其它選擇式轉(zhuǎn)發(fā)選項(xiàng)
可在m4的FEATURE命令中配置
relay_host_only        只允許訪問列表中的列出的主機(jī)
relay_entrie_domain    允許所有聲明是你的域中的遠(yuǎn)程服務(wù)器進(jìn)行轉(zhuǎn)發(fā)
relay_base_on_MX    允許向主機(jī)維護(hù)的域中轉(zhuǎn)發(fā)
relay_local_from    允許來自本地網(wǎng)絡(luò)中所有主機(jī)的轉(zhuǎn)發(fā)
loose_relay_check    不進(jìn)行對(duì)郵件主機(jī)的祥細(xì)的路由檢查
promiscuous_relay    進(jìn)行開放式轉(zhuǎn)發(fā)
注意:使用relay_entrie_domain 和relay_local_from時(shí)要小心,黑客很容易對(duì)SMTP會(huì)話地址進(jìn)行偽裝。

避免開發(fā)式轉(zhuǎn)發(fā)
比好的做法是既不作開放式轉(zhuǎn)發(fā),也不接收來自已知開發(fā)轉(zhuǎn)發(fā)服務(wù)器的郵件。很多MTA軟件都有辦法使郵件服務(wù)器與MAPS RBL(郵件濫用預(yù)防系統(tǒng)的實(shí)時(shí)黑洞列表)相連接,確定某個(gè)遠(yuǎn)程郵件服務(wù)器是否為開放式轉(zhuǎn)發(fā),如果列表中發(fā)現(xiàn)了該主機(jī)地址,那么來自該主機(jī)的郵件將被認(rèn)為是垃圾郵件,并被擋在服務(wù)器之外。

配置sendmail使用MAPS RBL
如果使用m4,加入以下條目:FEATURE(‘DNSBL’,'HOST’)。host指向另一個(gè)rbl服務(wù)器,如果你希望使用標(biāo)準(zhǔn)的RBL服務(wù)器,可以忽略該參數(shù)。

第十二章 阻擋垃圾郵件

有三種方法比較流行
1、拒收來自已知主機(jī)的郵件。建立訪問列表,具體設(shè)置見上文。
2、對(duì)由遠(yuǎn)程主機(jī)提供的SMTP會(huì)話信息進(jìn)行確認(rèn)。通過DNS查詢以確定客戶的正確性。
在sendmail 8.9.3版起,增加了以下smtp驗(yàn)證規(guī)則,默認(rèn)已配置好。
如果MAIL FROM:命令參數(shù)是未解析的域名則拒收郵件。
如果MAIL FROM:命令參數(shù)不FQDN格式則拒收郵件。
拒收來自發(fā)送空的HELO OR EHLO命令的主機(jī)的郵件可以通過以下命令修改:
FEATURE(‘a(chǎn)ccept_unresolvable_domains’)dnl
FEATURE(‘a(chǎn)ccept_unqualified_senders’)dnl
define(‘confALLOW_BOGUS_HELO’,'True’)dnl
3、通過查找已知的垃圾郵件的記號(hào)來過濾進(jìn)入的信息。
創(chuàng)建規(guī)則集,對(duì)進(jìn)入的每一個(gè)郵件頭進(jìn)行檢查過濾。用H行定義,一個(gè)常用方法是創(chuàng)建包含在郵件Subject:的頭字段中可找到的垃圾郵件詞語的文件,bad_subject文件,包含一些垃圾郵件常用的主題詞。接著配置sendmail對(duì),該文件中的詞語進(jìn)行過濾。首先在H行尾加一句:HSubject:$>Check_Subject。下一步是創(chuàng)建規(guī)則集。這需要加入三行。一個(gè)S行確定規(guī)則,一個(gè)F行確定bad_subject文件路徑,一個(gè)R行確定所要采取的實(shí)際動(dòng)作。例如
SCheck_Subject
F{Header}/etc/mail/bad_subject
R$={Header} $* $#error $: 553 we don’t like spam here

第十三章 過濾病毒

有兩種較流行的方法
1、基于已知短語的過濾。(方法同過濾垃圾郵件)
2、對(duì)附件進(jìn)行掃描。步驟較多,一般有以下幾步
判定該信件是否含有MIME或者未編碼附件;
提取出MIME或者未編碼文件的二進(jìn)制文檔;
確定這個(gè)二進(jìn)制文檔是否已被壓縮,如果是壓縮,將其取出;
掃描所有的未壓縮文件,尋找已知病毒;
如果沒病毒,就讓信息如常發(fā)送,如果有病毒,通知發(fā)信者、本地郵件管理員和可能的接收者。

設(shè)置病毒掃描
除常規(guī)MTA程序外,還需要兩個(gè)程序
1、用于發(fā)現(xiàn)和取出信件中的二進(jìn)制文檔附件的軟件;
2、用于檢查二進(jìn)制文件中是否具有已知病毒的軟件。
AMaViS(A MAIL VIRUS SCANNER)是一個(gè)著名的且被廣泛使用的開源軟件。它能取出信件中的附件文檔,解壓任何壓縮文檔,并且用反病毒軟件對(duì)它們進(jìn)行掃描。在unix平臺(tái)上暫時(shí)還沒有開源的防病毒軟件,要使用商用軟件。

配置sendmail使用amavis
define(‘LOCAL_MAILER_PATH’,'/usr/sbin/amavis’)dnl
define(‘LOCAL_MAILER_ARGS’,CONCAT(‘a(chǎn)mavis $f$u/usr/bin/’,LOCAL_MAILER_ARGS))dnl
MODIFY_MAILER_FLAGS(‘LOCAL’,'-m’)dnl

第十四章 使用郵件防火墻

關(guān)閉一些SMTP命令,建立郵件防火墻,可使郵件服務(wù)器免受探查和攻擊。

禁用VRFY AND EXPN命令。O option PrivacyOptions = novrfy,noexpn。如果是M4:
define(‘confPRIVACY_FLAGS’,'novrfy,noexpn’)

使用郵件防火墻,它是一臺(tái)專用的郵件服務(wù)器,專門用來轉(zhuǎn)發(fā)發(fā)往你的內(nèi)部郵件服務(wù)器和從其發(fā)出郵件。經(jīng)過配置,郵件防火墻接收發(fā)往你的域中的郵件,將它們直接發(fā)給通常在內(nèi)部的網(wǎng)絡(luò)中的真正的域郵件服務(wù)器。同樣,郵件防火墻也轉(zhuǎn)發(fā)從內(nèi)部郵件服務(wù)器發(fā)往互聯(lián)網(wǎng)的郵件,理想狀態(tài)下,郵件防火墻不應(yīng)該接收所有發(fā)往內(nèi)部任何用戶的郵件,也不應(yīng)該禁止所有發(fā)往內(nèi)部郵件服務(wù)器的郵件。如果郵件服務(wù)器失效,黑客也不能訪問用戶的郵箱。如果你決定使用郵件防火墻,有3個(gè)地方可以放置。位于網(wǎng)絡(luò)防火墻的機(jī)器中,位于DMZ中,位于內(nèi)網(wǎng)。不管郵件防火墻放在什么地方,它的配置都是一樣的。它必須從外部網(wǎng)絡(luò)接收郵件然后發(fā)給內(nèi)部郵件服務(wù)器,真正的用戶郵箱位于其上。反過來,內(nèi)部郵件服務(wù)器也必須被配置成將所有的外發(fā)郵件都交給由郵件防火墻來轉(zhuǎn)發(fā)。

sendmail防火墻
配置sendmail郵件防火墻時(shí),使用稱為虛擬用戶列表的對(duì)照表將本地域的郵件地址映射到內(nèi)部郵件服務(wù)器。虛擬用戶列表為文本文件,包含你的郵件環(huán)境中需要的地址映射關(guān)系。內(nèi)部的郵件服務(wù)器必須配置成使用郵件防火墻作為轉(zhuǎn)發(fā)主機(jī)。增加一條指向新表的記錄,如果使用M4,則:FEATURE(‘virtusertable’,'db[options]‘),db是數(shù)據(jù)庫映射類型,選項(xiàng)中默認(rèn)的數(shù)據(jù)庫文件位置為/etc/mail/virtusertable。如果手工添加:Kvirtuser hash /etc/mail/virtusertable。數(shù)據(jù)庫文本文件格式如下:alias  location。文件中,alias是郵件防火墻接收郵件用的虛擬別名,location是sendmail轉(zhuǎn)發(fā)郵件至的內(nèi)部郵件服務(wù)器的主機(jī)名或郵件地址。為了把所有發(fā)給ispnet1.net域中用戶的郵件重新定向給內(nèi)部郵件服務(wù)器上的同一個(gè)用戶,可以使用下面的表記錄:@ispnet1.net    %1@mailserver.ispnet1.net。所有接收到的發(fā)給ispnet1.net域中用戶的郵件都被轉(zhuǎn)發(fā)給mailserver.ispnet1.net主機(jī)上的同一個(gè)用戶,郵件防火墻上不儲(chǔ)存任何郵件。生成虛擬用戶列表后,要通過以下方法轉(zhuǎn)換:makemap hash /etc/mail/access < /etc/mail/access.txt。完成配置以后,還必須在/etc/mail/local-host-names文件中加入你用來接收郵件的域名(在這個(gè)例子中是ispnet1.net)。該文件用來定義sendmail接收郵件的主機(jī)。

配置內(nèi)部郵件服務(wù)器。將所有郵件都通過郵件防火墻轉(zhuǎn)發(fā),通過配置智能主機(jī)實(shí)現(xiàn)。如果使用m4,可以這樣配置:define(‘SMART_HOST’,'firewall.ispnet1.net’)dnl,也可以用ip。配置智能主機(jī)后,還要配置回信地址指向域名而不是內(nèi)部郵件服務(wù)器。配置如下:
MASQUERADE_AS(domain)
FEATURE(‘masquerade_envelope’)

第十五章 使用SASL

SASL(簡(jiǎn)單認(rèn)證和安全層協(xié)議)定義了一套任何網(wǎng)絡(luò)應(yīng)用程序都可用來對(duì)遠(yuǎn)程用戶進(jìn)行認(rèn)證的機(jī)制。很多開源MTA都用它來實(shí)現(xiàn)AUTH命令。
要sendmail支持SASL需重新編譯sendmail。編譯前要修改源碼的位置配置文件。
site.config.m4位于源碼目錄樹的devtools/Site。文件中應(yīng)包含以下行:
APPENDDEF(`confENVDEF’,`-DSASL’)
APPENDDEF(`conf_sendmail_LIBS’,`-lsasl’)
APPENDDEF(`confLIBDIRS’,`-L/usr/local/lib’)
APPENDDEF(`confINCDIRS’,`-I/usr/local/include’)
前二行指示sendmail在可執(zhí)行程序中包含SASL支持,后兩行定義SASL庫文件和頭文件位置。接著可以進(jìn)行編譯。下一步是在sendmail配置文件中加入SASL支持。
TRUST_AUTH_MECH(`LOGIN PLAIN CRAM-MD5′)dnl
define(`confAUTH_MECHANISMS’,`LOGIN PLAIN CRAM-MD5′)dnl
如果是手工編輯sendmail.cf文件,則加入:
C{TrustAuthMech}LOGIN PLAIN CRAM-MD5
O AuthMechanisms=LOGIN PLAIN CRAM-MD5

為確保CYRUS-SASL函數(shù)庫知道怎樣驗(yàn)證所收來的SASL認(rèn)證請(qǐng)求,必須創(chuàng)建一個(gè)SASL的配置文件來把MTA程序定義成一個(gè)SASL應(yīng)用。配置文件名為Sendmail.conf,位于/usr/lib/sasl目錄下,在該文件中你必須定義你希望使用的認(rèn)證數(shù)據(jù)庫方法:pwcheck_method:PAM,這個(gè)例子使用PAM系統(tǒng)用戶名數(shù)據(jù)庫來驗(yàn)證認(rèn)證請(qǐng)求。

第十六章 安全的pop3 and imap服務(wù)器

使用ssl協(xié)議,允許網(wǎng)絡(luò)主機(jī)在發(fā)送數(shù)據(jù)之前將其加密,在接收端由接收主機(jī)將數(shù)據(jù)解密成正常格式。
生成證書:openssl req -new -x509 -nodes -out imapd.pem -keyout imapd.pem -days 3650
這個(gè)命令創(chuàng)建了一個(gè)名為imapd.pem的x509證書,(記住證書名需與應(yīng)用名匹配),將證書和私鑰放于同一文件中,并保證其在10年內(nèi)有效。運(yùn)行命令時(shí),會(huì)提幾個(gè)問題,其中Common name應(yīng)該鍵入主機(jī)名。否則一些客戶端要么警告用戶這個(gè)證書不是發(fā)給服務(wù)器的,要么拒絕接受該證書。生成證書后,要應(yīng)用于不同程序。需要拷貝
cp imapd.pem /usr/local/ssl/certs/imapd.pem
cp imapd.pem /usr/local/ssl/certs/ipop3.pem

在ssl基礎(chǔ)上使用UW IMAP.

=====================================================
作者:肥肥世家(http://www.ringkee.com/)
原文地址:http://www.ringkee.com/jims/read_folder/books/OpensoureMailSecurity
=====================================================

該文章在 2012/2/17 0:25:49 編輯過
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點(diǎn)晴ERP是一款針對(duì)中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國(guó)內(nèi)大量中小企業(yè)的青睞。
點(diǎn)晴PMS碼頭管理系統(tǒng)主要針對(duì)港口碼頭集裝箱與散貨日常運(yùn)作、調(diào)度、堆場(chǎng)、車隊(duì)、財(cái)務(wù)費(fèi)用、相關(guān)報(bào)表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點(diǎn),圍繞調(diào)度、堆場(chǎng)作業(yè)而開發(fā)的。集技術(shù)的先進(jìn)性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點(diǎn)晴WMS倉儲(chǔ)管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購管理,倉儲(chǔ)管理,倉庫管理,保質(zhì)期管理,貨位管理,庫位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號(hào)管理軟件。
點(diǎn)晴免費(fèi)OA是一款軟件和通用服務(wù)都免費(fèi),不限功能、不限時(shí)間、不限用戶的免費(fèi)OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved

主站蜘蛛池模板: 国产在线观看一区二区三区四区 | 亚洲人成网站观看在线播放 | 日本高清视频在线观看不卡 | 日韩在线看片 | 午夜在线视频影院 | 欧美日韩一区二区综合在线 | 欧美亚洲日本国产黑白配 一级特黄高清aaa | 日本一区二区三区四区在线观看 | 欧美精品免费一区二区三区在线 | 在线不卡高 | 欧美一区二区在线观看视频 | 青柠影院免费观看电视剧高清 | 国产精品4p露脸在线播放 | 日韩亚洲欧美中文高清在线 | 日本欧美中文幕 | 女视频网站 | 国产精品亚洲va | 亚洲国产欧美在线人成app | 日韩欧美一区二区三区精品 | 中文字幕午夜福利片午夜福利片 | 在线视频一区二区三区三区不卡 | 国产亚洲成aⅴ人片在线观看 | 国产精品二| 521国产精品网站在线观看 | 国产伦在线视频大全 | 亚洲欧美成α人在线观看 | 国产精品第一二三区 | 日本大胆一区二区三区 | 日本高清一区二区三区水蜜桃 | 亚洲国产性夜夜综合 | 精品不卡| 亚洲国产日韩a在线观看 | 亚洲理论中字在线观 | 人人干操 | 国产精品tv在线观看 | 日日摸处处碰夜夜爽 | 99精品国产丝袜在线拍国语 | 日韩一区二区三区波 | 国产福利萌白 | 国产精品一区二区三区四区五区 | 欧美一区二区三区免费播放 |