歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Unix知識 >> BSD

在FreeBSD上查看郵件


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就是其中之一,它提供了簡潔的字符菜單界面,功能強大且易於操作,易用性超過很多圖形接口的郵件處理程序。
  在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,來取得郵件的方法為:
$ cat ~/.fetchmailrc
protocol pop3
authenticate password
username wb here is wangb there
password "1111"
smtphost localhost
pass8bits
stripcr
fetchall
$ chmod 700 ~/.fetchmailrc
  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:
$HOME/mail.backup
  第一行首先使用冒號開始定義一個過濾規則,緊隨其後的應該是一個數字,這個數字規定了這個規則占用的配置行數,一般使用0表示沒有限制配置行,此後的c表示復制(copy),表示下面的規則只是用於處理郵件的副本,而郵件本身仍然會被其他的過濾處理規則處理。這一行最後的冒號,用於表示在處理過程中進行加鎖,防止同另一個procmail進程處理同一個文件時發生沖突,通常這個機制在存儲郵件文件時非常有幫助。
  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:
| gzip >> freebsdmail.gz
:0:
* ^Subject:.*(joke|funny)
{
:0 c
:0
joke
}
:0
* ^Subject:.*order
* !^FROM_DAEMON
{
:0 h c
cat /market/acknowlegement.txt ) | $SENDMAIL -t
:0 c
:0
market
}
  這個配置文件的第一部分中設置了幾個環境變量,用於設置procmail的運行環境,其中將 MAILDIR設置為~/mail,與pine使用的目錄相同,因此這將使pine能直接讀取procmail處理過的郵件。
  首先將X-Loop行添加到郵件中(使用formail將它們添加到mail的信封上),以免造成對同一個郵件的循環處理,然後將文件/market/acknowlegement.txt發回給發送者;並以及轉發郵件,在market中保存郵件。
  根據這些規則,使用Procmail就能完整的處理各種郵件,減輕電子郵件不斷增多而造成的困擾。
Copyright © Linux教程網 All Rights Reserved