在FreeBSD上檢視郵件(轉)

BSDLite發表於2007-08-11
在FreeBSD上檢視郵件(轉)[@more@]FreeBSD上的使用者可以透過mail程式來檢視自己的Email,mail是一個最基本的互動式Unix 命令,可以執行在任何型別的終端上,然而使用它來處理郵件也很不方便。使用者常常安裝其他更為便利的電子郵件客戶程式來處理自己的郵件,這些軟體有elm、mutt、pine,以及只用於X下的 netscape messager、kmail等。
  雖然基於X的郵件處理軟體比較方便和易於學習,然而透過網路遠端直接使用這些X程式比較麻煩,不是任何計算機上都執行了X伺服器的。而幾乎所有的計算機系統中都支援telnet等字元終端連線軟體,使用支援字元終端的郵件處理程式就使得使用者無論身在何處,只要連線到自己的主機上就能處理自己的電子郵件。
  在遠端訪問自己的電子郵件的另一種方式是:首先在遠端的客戶機上安裝、配置電子郵件軟體,再使用這些軟體訪問自己主機上的郵件。這些遠端訪問郵件伺服器的軟體使用POP3協議或者 IMAP協議,讓使用者檢視遠端計算機上的郵件。
  這兩種方式的不同在於郵件處理軟體的安裝位置,安裝在主機上的郵件處理程式基於X或字元終端,不需要改動客戶計算機上的任何配置,因此適用於經常改變客戶機的使用者。安裝在客戶機上的使用者可以充分發揮客戶計算機的優勢,例如MS Windows的使用者介面,這種方式適用於擁有固定個人用計算機的使用者。這兩種方式並不相互衝突,而是相互補充的,適合不同情況的使用者。

郵件處理程式pine

  由於基於字元終端的郵件軟體啟動快捷,能透過telnet等防真終端使用,而不需改變客戶計算機的任何配置。因此Unix的使用者至少都會選擇安裝一種基於字元終端的郵件處理軟體,以作為最基本的郵件處理軟體。pine就是其中之一,它提供了簡潔的字元選單介面,功能強大且易於操作,易用性超過很多圖形介面的郵件處理程式。



在FreeBSD上檢視郵件(轉)400) {this.resized=true; this.width=400; this.alt='Click here to open new window';}" border=0>

  在Pine的主選單下,可以執行傳送電子郵件(Compose message),檢視當前資料夾的內容(Message index),選擇不同的資料夾(Folder list),使用和維護地址簿(Address Book),使用S(Setup)用於設定Pine,使用Q(Quit)退出pine回到shell提示下。正常情況下,不需要對 pine進行任何設定,就能正常使用pine閱讀和傳送電子郵件。
  然而當使用pine來傳送中文郵件時,pine會對中文進行重新編碼,以適應7位傳輸,雖然大部分電子郵件客戶都會識別這些標準的編碼格式,但還是有一些電子郵件程式不能識別出這些編碼,造成閱讀問題。此時就可以重新設定pine直接使用8位編碼。
  在主選單下選擇Setup,當出現提示時,使用Config進入配置部分。就可以搜尋包含enable-8-bits 的兩個選項,配置自己使用的字符集(由於pine中不直接支援中文字符集,可以設定為ISO-8858-1),以支援8位字元。
  還可以在這裡設定Pine來閱讀Usenet新聞,這就要在nntp-server的選項中填寫本地新聞伺服器的域名,並配置news-collections選項,例如本地新聞伺服器的名字為news,那麼news-collections 就應設為 ”*{news/nntp}/[]”。也可以設定遠端資料夾,使得Pine能訪問遠端主機上的郵件。
  Pine預設支援使用IMAP協議訪問遠端主機上的郵箱,但它對POP3的支援未在其文件中公佈,不能使用設定程式來完成。可以手工更改使用者個人目錄下的配置檔案.pinerc中的選項incoming-folders,以支援POP3,下面為一個例子:
incoming-folders="imapfolder" {imaphost}INBOX,
"pop3folder" {pop3host/pop3/user=wb}INBOX
  這個例子中配置了兩個遠端帳戶,一個為imaphost上的郵箱,使用IMAP協議進行訪問,在 pine中的資料夾名為imapfolder,第二個為pop3host上的郵箱,後面使用/pop3指明使用pop3協議,/user=wb指明使用wb作帳戶名,其資料夾的名字為pop3folder。使用這樣的格式就能使pine來管理多個計算機上的多個郵箱。
  那麼再次啟動pine就能有位於不同主機上的相應incoming和nntp資料夾,使用者開啟相應的資料夾就能使用imap、pop3或nntp等不同協議,訪問相應的郵件或新聞了。

使用fetchmail管理多郵件帳戶

  儘管使用pine能非常方便的管理多個POP3或IMAP郵箱,但是如果郵箱主機與當前FreeBSD系統的網路連線很慢,使用pine來閱讀這些郵箱中的郵件就非常遲緩。此時更好的辦法是先在後臺將郵件取到回本地郵箱中,然後使用pine或其他郵件處理程式進行處理。
  fetchmail就是一個非常方便的從遠端郵件主機下載郵件的應用軟體,它支援pop3、imap,以及對pop3的一些擴充套件協議。當安裝好fetchmail之後,使用者可以直接啟動fetchmail,來取得郵件的方法為:
$ fetchmail -p pop3 -u wangb email.online.ha.cn
password for :
  在輸入正確的口令之後,fetchmail將使用pop3協議訪問主機email.online.ha.cn,並取回使用者wangb的電子郵件,取回的電子郵件將傳送到本地郵箱中。也可以用更復雜的方式在後臺執行 fetchmail,則需要設定個人目錄下的.fetchmailrc檔案。
$ cat ~/.fetchmailrc
poll email-wangb via email.online.ha.cn
protocol pop3
authenticate password
username wb here is wangb there
password "1111"
smtphost localhost
pass8bits
stripcr
fetchall
$ chmod 700 ~/.fetchmailrc
  設定檔案中第一行poll email-wangb via email.online.ha.cn中設定了要下載郵件的郵件伺服器為email.online.ha.cn,其中email-wangb為對應這一個帳號的標籤名字,用於區分多個不同的郵箱。然後指定使用的協議為pop3,認證方式為標準的Unix口令認證,然後,定義了遠端主機上的郵件帳戶名為wangb(用there表示遠端主機設定),郵件下載到本地使用者wb的郵箱中(使用here 指明本地主機設定)。
  smtphost定義了fetchmail用來轉發郵件時使用的smtp主機,passsword定義了遠端郵件伺服器中帳戶的口令,在口令中使用了數字或特殊字元時,就需要使用雙引號將口令括起來。pass8bits 允許下載郵件中存在8位字元,stripcr用於過濾額外回車字元,由於DOS和Unix在文字定義上的不同,這一項用於相容一些不識別這個差異之處的Windows系統的郵件伺服器,fetchall表示取回全部郵件,否則就只取回最新的郵件。
  此外,這個檔案因為包括了遠端伺服器的口令,因此必須具備屬性700,以避免其他使用者能讀取這個檔案,否則fetchmail不會執行。
  這樣,就可以不使用任何命令列引數,直接在後臺執行fetchmail了。每個使用者可以使用cron來執行自己的fetchmail命令,來管理自己的郵件,而撥號使用者可以在撥號後,使用ppp.linkup啟動fetchmail ,取回自己的郵件。

使用Procmail設定郵件過濾

  由於Internet的使用者不但使用電子郵件和朋友、同事聯絡,而且還透過maillist與Internet 上的其他使用者討論共同感興趣的話題,使用者收到的電子郵件越來越多,並且還會受到廣告、宣傳品等垃圾郵件的騷擾。使用Promail、maildrop等郵件過濾程式就能幫助使用者阻擋這些廣告和宣傳品,並幫助管理使用者接收到的郵件。Procmail就是一個用於過濾使用者接收到的電子郵件,並能對其自動分類、處理的一個應用軟體。對於每天都會收到大量電子郵件的Internet使用者,這是一個非常有用的工具。
  為了使用Procmail,必須在使用者接收到Email時,啟動Procmail進行處理。這個任務可以使用兩種不同的方式來完成,一個是將Procmail配置為系統的郵件分發代理(Mail Deliery Agent),系統的郵件伺服器使用porcmail代替其本身原有的郵件分發功能,來分發使用者的郵件。這種方式需要由系統管理員根據郵件伺服器的不同,而進行不同的設定。
  另一種方法是使用個人目錄下的.forward檔案,系統郵件伺服器在給某個使用者分發郵件的時候,如果發現他的個人目錄中存在.forward檔案,那麼就會按照這個檔案中的內容來進行處理。因此就可以在.forward檔案中啟動procmail處理使用者接收到的郵件,與更改系統MDA的設定方式相比,這種方式更為靈活,並且可以由每個使用者來決定是否使用這個過濾處理能力。
  .forward檔案可以按照需要設定三種不同的處理方式:定義儲存郵件的郵箱檔名、進行轉發的目的地址或者對電子郵件進行處理的外部應用程式,顯然啟動Procmail是應使用第三種方法。
  .forward檔案應該屬於這個使用者(或root),並且其許可權設定應該為不能被其他或同組使用者可寫。
$ cat ~/.forward
"|IFS=' '&&exec /usr/local/bin/procmail -f-||exit 75 wb"
  這個.forward的例子裡,使用"|"字元設定括號內的引數為一個執行命令,這樣 sendmail就能啟動一個shell執行設定的命令,並使用管道的方式讀取sendail的輸出。執行命令中首先定義了IFS環境變數(用於分隔不同的域),然後執行procmail,如果procmail執行失敗就執行 exit 75 wb告訴sendmail,郵件分發失敗,需要更改wb為使用者自己的登入名。
  procmail使用使用者個人目錄下的.procmailrc檔案,來設定對收到的Email進行處理的過濾規則。最簡單的.procmailrc檔案為:
:0c:
* ^FROM.*@freebsd.org
$HOME/mail.backup
  第一行首先使用冒號開始定義一個過濾規則,緊隨其後的應該是一個數字,這個數字規定了這個規則佔用的配置行數,一般使用0表示沒有限制配置行,此後的c表示複製(copy),表示下面的規則只是用於處理郵件的副本,而郵件本身仍然會被其他的過濾處理規則處理。這一行最後的冒號,用於表示在處理過程中進行加鎖,防止同另一個procmail程式處理同一個檔案時發生衝突,通常這個機制在儲存郵件檔案時非常有幫助。
  第二行就開始了一個過濾規則的定義,過濾規則使用*字元開頭。一個規則中使用模式匹配來匹配電子郵件信頭或內容中的特定行。上面例子裡的這個規則匹配所有來自於freebsd.org的電子郵件。在第三行定義了對符合上面規則的郵件的處理方法,由於給出了一個檔名mail.backup,因此將所有來自於freebsd.org的電子郵件新增到mail.backup檔案中儲存。如果使用!開頭定義規則處理辦法,表示進行轉發處理,!後面就為進行轉發的電子郵件的地址,或者以|開頭,表示啟動後面的命令進行郵件處理。
  procmail不區分大小寫,它使用Unix最常用的模式匹配方式進行匹配特定的郵件。因此使用這些匹配模式和procmail規則,可以定義一個更復雜的.procmailrc:
PATH=$HOME/bin: /usr/bin: /usr/ucb: /bin: /usr/local/bin:.
SHELL=/bin/sh
MAILDIR=$HOME/mail
DEFAULT=$MAILDIR/mailbox
LOGFILE=/dev/null
SENDMAIL=/usr/lib/sendmail
:0:
* ^From.*badguy
/dev/null/
:0c:
* ^(From|Cc|To).*freebsd.org
| gzip >> freebsdmail.gz
:0:
* ^From.*@hotmail.com
* ^Subject:.*(joke|funny)
{
:0 c
!
:0
joke
}
:0
* ^Subject:.*order
* !^FROM_DAEMON
* !^X-Loop:
{
:0 h c
| (formail -r -A"X-Loop: " ;
cat /market/acknowlegement.txt ) | $SENDMAIL -t
:0 c
!
:0
market
}
  這個配置檔案的第一部分中設定了幾個環境變數,用於設定procmail的執行環境,其中將 MAILDIR設定為~/mail,與pine使用的目錄相同,因此這將使pine能直接讀取procmail處理過的郵件。
  第二部分中為郵件定義了三個不同的過濾規則及相應的處理操作,第一個規則將來自badguy 的郵件濾掉(輸出到/dev/null);第二個規則將與freebsd.org的通訊使用gzip儲存到freebsdmail.gz 中,用於儲存相應maillist的郵件;第三個規則將某個使用hotmail帳號的朋友,並使用joke或funny標題給自己傳送笑話的郵件同時轉給其他幾個朋友,並同時儲存在joke資料夾中;最後一個規則是設定了一個自動回覆郵件系統,對於使用order做標題,並且沒有FROM_DAEMON行(自動郵件回覆程式使用FROM_DAEMON 作標記,通常不需要回復這些的郵件,否則會造成回覆迴圈),並且沒有包括X-Loop行的郵件進行處理:
  首先將X-Loop行新增到郵件中(使用formail將它們新增到mail的信封上),以免造成對同一個郵件的迴圈處理,然後將檔案/market/acknowlegement.txt發回給傳送者;並以及轉發郵件,在market中儲存郵件。
  根據這些規則,使用Procmail就能完整的處理各種郵件,減輕電子郵件不斷增多而造成的困擾。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10617542/viewspace-947594/,如需轉載,請註明出處,否則將追究法律責任。

相關文章