"All mail clients suck. This one just sucks less." -me, circa 1995
你也許聽說過這句話?這不是危言聳聽,我還沒有遇到一個(gè)令我滿意的 email 程序,直到我遇到 mutt。它不是圖形界面的,但是它非常強(qiáng)大和方便。我曾經(jīng)把它忽略,但是后來我發(fā)現(xiàn)其它 email 程序都有某種我不喜歡的怪毛病。最后我選擇了 Mutt。
有人說 Gnus 才是最好的 email 客戶端,可是 Gnus 要達(dá)到 Mutt 這種效果和方便程度,你需要付出太多代價(jià)。所以我寧愿使用 Mutt 調(diào)用 Emacs 來編輯 email 而不愿把 Gnus 配置來處理 email.
Mutt 顯然是一個(gè) Unix 的郵件程序,它跟一般的 Windows 郵件程序不同,它不是一個(gè)包羅萬象的大雜燴。你甚至?xí)l(fā)現(xiàn)它根本不直接發(fā)出郵件,它從來不自己編輯郵件,它從來不自己對(duì)郵件進(jìn)行加密和數(shù)字簽名……
Mutt 更像一個(gè)文件管理器,只不過它管理的是email。它的功能是借助各個(gè)最強(qiáng)大的程序來實(shí)現(xiàn)的。這符合 UNIX 的設(shè)計(jì)思想。
是不是覺得挺麻煩?其實(shí)有些 patch 可以使 Mutt 不依賴于這些程序,而自己處理收發(fā)工作。但是,強(qiáng)烈建議你使用這些外部程序!到時(shí)候你就知道這些東西的好處了。首先,VIM, sendmail, fetchmail 這些程序都是經(jīng)過千錘百煉的質(zhì)量信得過的程序,用它們編輯,發(fā)送,收取郵件你絕對(duì)放心。其次,你得到了一個(gè) UNIX 網(wǎng)絡(luò)工作站的功能:
Mutt 的用法類似 VIM。你的每一個(gè)鍵都是一個(gè)命令,你可以在配置文件~/.muttrc設(shè)置很多選項(xiàng)來改變 Mutt 的行為。我沒有太多時(shí)間寫一個(gè)入門的介紹。你可以自己看看 Mutt Manual。我下面只解決一些中國人用 Mutt 常常遇到的問題。
- alternates
這個(gè)變量應(yīng)該設(shè)置為一個(gè)正則表達(dá)式,它是你有可能收到信件的地址。比如我的很簡單,只有一個(gè)地址:
set alternates="wang-y01@mails."
這個(gè)變量有助于 Mutt 顯示郵件的地址特征。一般 Mutt 會(huì)在index中顯示幾種不同的郵件地址特征,它們是由 $to_chars 變量指定的。
- to_chars
一般 $to_chars 的定義為 " +TCFL".
- " "(空): 表示這封郵件不是給你的,也就是說 To: 和 Cc: Bcc: 都沒有你的地址,很多轉(zhuǎn)發(fā)的郵件,未確認(rèn)的郵件列表郵件,垃圾郵件都有這個(gè)特征。
- +: 表示你是收件人(To: 是你的地址之一),而且是唯一的收件人。
- T: 表示你是收件人(To: 包括了你的地址之一),但是你不是唯一的收件人。這是一封群體信件。
- C: 表示你的地址出現(xiàn)在 CC:,但是你不是唯一的被抄送的人。
- F: 表示這封郵件是你發(fā)出去的。
- L: 表示這是一封你已經(jīng)加入的郵件列表寄來的。
你看看下面這幅圖,就是mutt 有可能出現(xiàn)的一種列表,你看到地址特征沒有?實(shí)際上地址特征出現(xiàn)在列表中的位置是可以改變的。待會(huì)兒在 $index_format 里你會(huì)看到的。
- index_format
這是一個(gè)格式字符串,用來控制你的index的列表顯示。它的缺省定義是:
set index_format="%4C %Z %{%b %d} %-15.15L (%4l) %s"
顯示出來就是這個(gè)樣子:
這里有一個(gè)簡單的對(duì)應(yīng)關(guān)系,%4C表示4位數(shù)的序號(hào),%Z是郵件狀態(tài),你看到那個(gè) "r" 了嗎?也就是說我已經(jīng)回了這封信。%Z 還包含那個(gè) "T", 也就是說這封信不只是寄給我一個(gè)人的,我爸爸每次寄信都會(huì)CC他自己一份 :) %{%b %d} 是日期格式,它是由 strftime() 函數(shù)的格式定義的。這里 %b 就是根據(jù)當(dāng)前的 locale 設(shè)置的月份簡稱,“12月”。%d 就是十進(jìn)制表示的每月的日號(hào),“31”。后面的……你自己看看manual吧,我不羅嗦了。
- mailboxes
指定你有那些信箱文件。當(dāng)你按 "c" 切換信箱時(shí),再按 Tab 鍵,這些信箱就可供你選擇。
mailboxes Mailbox sent-mail
- header
這是一個(gè) bool 型變量。它表明你在回信時(shí)引用原文是否加入原文的郵件頭。
set header=no
- quit
可以設(shè)置為 yes, no, ask-yes, 或者 ask-no. 這是說,當(dāng)你按q退出時(shí),是否提示你(ask-yes,ask-no),還是直接就退出了(yes),還是根本不理你(no)。
set quit=ask-yes
- auto_view
那些類型的附件是允許直接通過 .mailcap 瀏覽的?
auto_view text/html
- move
這也是一個(gè)提示性變量。它是確定當(dāng)你退出時(shí),是否提示你把信件從 spool 移動(dòng)到的 mbox 文件。
set move=no
- ascii_chars
當(dāng) Mutt 用 thread 方式顯示時(shí),是否用純 ascii 表示樹狀列表。
set ascii_chars=yes
如果設(shè)置了就是這個(gè)樣子:
- include
回信時(shí)是否包含原文。
set include
- indent_str
回信的引文之前插入那個(gè)符號(hào)?
set indent_str="> "
- my_hdr
設(shè)置你自己的郵件頭。比如我想讓信件看上去是從 wang-y01@mails. 發(fā)出的,而不是從 wy@wangyin.com 發(fā)出的。因?yàn)?wangyin.com 是我自己設(shè)置的主機(jī)名,不是注冊(cè)的合法域名。我想讓別人看到我的信是從我的清華信箱發(fā)出的,讓他們直接回信到我的清華信箱,就這么干:
my_hdr From: wang-y01@mails.
- 打分
新信件+4分,爸爸(w2r007)發(fā)來的 +2,主題包含“通知”的+2,主題包含 “Circulation” +3, 已經(jīng)標(biāo)記刪除的 -5,上次沒有讀的 +1,包含 “believe”的 -10(垃圾廣告!)。
score "~N" +4
score "~f w2r007" +2
score "~s 通知" +2
score "~s Circulation" +3
score "~D" -5
score "~O" +1
score "~s believe" -10
- sort
排序方式。可以是
date
date-sent
date-received
from
mailbox-order (unsorted)
score
size
subject
threads
to
幾種方式,每種方式可以在前面加一個(gè) "reverse-" 前綴表示反方向排序。我一般按分?jǐn)?shù)排序: set sort=score
- sort_aux
當(dāng)用 thread 排序方式時(shí),我們對(duì)各個(gè) thread 的相對(duì)排序順序。
set sort_aux=date
- pager_stop
如果設(shè)置,那么你在pager(就是你看信的內(nèi)容的窗口里)翻頁時(shí),如果翻到最后,再按往下翻也不會(huì)翻到下一封信件。如果不設(shè)置就會(huì)自動(dòng)翻到下一封信。
set pager_stop
- fast_reply
如果設(shè)置,當(dāng)你按 "r" 回信時(shí),就不會(huì)再提示你輸入回信地址和主題,直接進(jìn)入編輯模式。
set fast_reply
- resolve
當(dāng)你按 "t" 或者 "D" 之類的標(biāo)記操作時(shí),是否自動(dòng)把光標(biāo)移動(dòng)到下一封信件。
set resolve=yes
- alias_file
當(dāng)你在 index 里按 "a" 為來信者取別名時(shí),使用哪一個(gè)別名文件保存這個(gè)別名。
set alias_file=/home/wy/.mutt.alias
- record
你發(fā)出的郵件保存到那個(gè)信箱文件?比如可以像我這樣每個(gè)月發(fā)出的信件放在不同的文件里。
set record="~/Mail/=sent-mail-`date +%Y-%m`"
- charset
你的終端支持哪一種編碼的顯示?這個(gè)必須和你的終端編碼一樣。
set charset="gb2312"
- send_charset
發(fā)信時(shí)可以使用的字符集。只有當(dāng)前面的字符集不能正確表示信件內(nèi)容時(shí)才會(huì)使用后面的。比如,如果你像下面這樣設(shè)置,你的信件如果全是英文,那么信件就會(huì)被設(shè)置為 us-ascii 編碼,如果出現(xiàn)了法語字符,那么就會(huì)用 iso-8859-1,如果出現(xiàn)了漢字就會(huì)用 gb2312,如果以上都不是,那么就用 utf-8。
set send_charset="us-ascii:iso-8859-1:gb2312:utf-8"
- wait_key
當(dāng)外部程序退出時(shí),是否要求用戶按一個(gè)鍵才返回。這在察看某些shell命令輸出時(shí)是比要的,否則它們一下就消失了。
set wait_key=yes
- confirmappend
當(dāng)你要把信件存到另一個(gè)信箱,而這個(gè)信箱已經(jīng)存在時(shí),是否提示附加?
set noconfirmappend
- edit_headers
是否把郵件頭也放在編輯器里可以修改?
set edit_headers=no
- pager_index_lines
當(dāng)你在用 pager 看信件時(shí),在 index 留出多少行顯示郵件列表?
set pager_index_lines=4
比如我留下4行顯示列表,其它的用來顯示正文:
- subscribe
告訴 Mutt 你已經(jīng)訂閱了那些郵件列表(mailing-list). 這有助于 Mutt 判斷那些信件是郵件列表轉(zhuǎn)過來的,避免你錯(cuò)誤的回復(fù)到別人的私人信箱。也避免別人回復(fù)到你的私人信箱。
subscribe fvwm@fvwm.org
之后,收到的 To: 是 fvwm@fvwm.org 的信件看起來是這樣:
地址前面那個(gè) "L" 表示這是一個(gè)郵件列表轉(zhuǎn)過來的。你看到以后就不要按 "r" 回信,這樣會(huì)回到別人的私人信箱去。按 "L",就可以回復(fù)到郵件列表地址,這里就是 fvwm@fvwm.org。
- 怎樣才能讓我發(fā)出的信件使用我的POP郵箱的地址,而不是 root@myhost.com 這樣的地址?
用 my_hdr 把你的 From: 設(shè)置為你想要的地址就行了。比如我是這樣設(shè)置的:
my_hdr From: wang-y01@mails.
注意 From: 的冒號(hào)之后有空格!
- 怎樣讓 Mutt 顯示日期等為中文?
set locale="zh_CN"
- 發(fā)出的信件為什么設(shè)置了錯(cuò)誤的 charset?別人的程序不能正確顯示我的中文信件!
把 gb2312 編碼加到你的 send_charset. 就像這樣最好:
set send_charset="us-ascii:iso-8859-1:gb2312:utf-8"
- 收到一些中文信件全部顯示為 "???"
這是因?yàn)槟承?email 客戶端,比如清華大學(xué) mails. 的WWW界面客戶端 沒有設(shè)置字符編碼,你看看郵件頭(按h),是不是有個(gè)
Content-Type: text/plain
但是后面沒有說 charset="GB2312"? Mutt 遇到這種沒有設(shè)置 charset 的郵件就會(huì)使用 "us-ascii",所以如果你想讓這種信件可以正確顯示,就把 "us-ascii" 設(shè)置為 "gb2312" 的別名:
charset-hook ^us-ascii$ gb2312
注意 "us-ascii" 中間的連字號(hào)!
- 可是仍然有郵件標(biāo)題亂碼呢!
看看你的 $spool 里那個(gè)亂碼的信件是不是有類似如下內(nèi)容:
Subject: =?iso8859-1?B?U29oddCj09HCvDq587Dg09DQwrPJ1LG808jro6E=?=
Chinaren 等服務(wù)器發(fā)出來的信件使用了 quoted-printable 的 subject,而且設(shè)置編碼為 "iso8859-1",這顯然是錯(cuò)誤的。
對(duì)付這個(gè)錯(cuò)誤的辦法是把 iso-8859-1 變成 gb2312 的別名:
charset-hook ^iso-8859-1$ gb2312
注意 "iso-8859-1" 中間的連字號(hào)!
如果仍然有信件亂碼。干脆用
charset-hook .* gb2312
把所有信件都用 gb2312 顯示。
- 可是這樣設(shè)置之后 evolution 發(fā)過來的 subject 為 utf-8 編碼的郵件標(biāo)題亂碼!
那就把不是 utf-8 的編碼都映射到 gb2312:
charset-hook !utf-8 gb2312
- 怎樣配置 fetchmail?
fetchmail 的配置非常簡單。如果只是一個(gè)人用的話,可以這樣設(shè)置:比如,我在我的 $HOME 目錄編輯了一個(gè) .fetchmailrc:
set daemon 60
poll mails.
protocol POP3
user "wang-y01"
password "wang-y01的密碼"
poll smth.org
....
....
然后把 fetchmail 寫到我的shell啟動(dòng)腳本里:
! ps aux | grep -q fetchmail && fetchmail &
fetchmail 啟動(dòng)后成為一個(gè) daemon, 每分種幫我檢查所有郵箱里的郵件,收回來,并且轉(zhuǎn)發(fā)到本地信箱。修改上面那個(gè) "60" 就可以改變檢查時(shí)間間隔。
如果不想讓 fetchmail 刪除服務(wù)器上的文件,而且每次只取新的信。就在配置文件里加上:
keep
uidl
- 我不想用 fetchmail,能不能直接收回 POP 信件???
如果你的 Mutt 編譯時(shí)加入了 POP 功能,那么你可以直接從 POP 服務(wù)器收郵件而不用借助于 fetchmail. 把類似這些行加入 ~/.muttrc
set pop_user=wang-y01
set pop_pass="wang-y01的密碼"
set pop_host="pop://mails."
也可以一次性輸入所有內(nèi)容:
set pop_host="pop://wang-y01:wang-y01的密碼@smth.org"
在 Mutt 里按一下 "G" 就可以取郵件了。
- 怎樣處理多個(gè) POP3 信箱?
如果你有多個(gè)POP信箱,你可以設(shè)置一些方便的宏把POP信件收到你信箱里。舉個(gè)例子,就像我這樣:
macro index ,shredder ":set pop_host= \"pop://shredder:shredder的密碼@smth.org\"\r <fetch-mail>"
macro index ,sk8er ":set pop_host= \"pop://sk8er:sk8er的密碼@smth.org\"\r <fetch-mail>"
macro index ,ts ":set pop_host= \"pop://wang-y01:wang-y01的密碼@mails.\"\r <fetch-mail>"
macro index ,g ",shredder,sk8er,ts"
這樣,我只要按 ,shredder 就可以收我在 smth 上 shredder 的信件,只要按 ,sk8er 就可以收我在 smth 上 sk8er 的信件,只要按 ,ts 就可以收 mails. 的信件,只要按 ,g 就可以收取我所有 POP 信箱的信件了。
- 怎樣直接訪問 POP3 信箱?
除了上面的方法,你還可以直接訪問 POP3 信箱。比如,我可以直接按 "c" 切換到信箱 pop://sk8er:sk8er的密碼@smth.org
就可以瀏覽 pop 的信件了。切換到其它信箱就瀏覽不同的 pop。如果你嫌按鍵太多可以自己定義一個(gè)宏。這是同步操作,你如果在這個(gè)信箱里刪除一封信件,mutt 就會(huì)刪除你 pop3 服務(wù)器上的信件。你不刪它也不刪。
郵件太多時(shí)這樣效率很低,每次都要取所有郵件頭,就像 Foxmail 的“遠(yuǎn)程郵件管理”。所以最好在那種不想取回信件,而想直接刪除垃圾郵件的時(shí)候用這個(gè)辦法。
- 怎樣處理郵件列表?
參看subscribe命令。
- 我按 "d" 的時(shí)候郵件被直接標(biāo)記刪除了,怎樣才能把刪掉的信件都移到一個(gè)“垃圾箱”呢?
你只要把信件用 save-message 函數(shù)保存到你的垃圾箱,比如 ~/Mail/Trash,信件會(huì)被自動(dòng)做上 "D"(刪除) 標(biāo)志。為了讓 "d" 可以保存到垃圾箱,你可以把 "d" 鍵綁定到一個(gè) 宏。但是如果你要?jiǎng)h除垃圾箱里的郵件,這個(gè)宏會(huì)再次把垃圾箱的郵件存儲(chǔ)到垃圾箱,產(chǎn)生循環(huán)。所以你應(yīng)該使用 folder-hook 在垃圾箱里把 "d" 恢復(fù)到原來的 delete-message 函數(shù),而在其它信箱使用那個(gè)宏。
現(xiàn)在你可以用以下設(shè)置得到一個(gè)“垃圾箱”的功能。第一次按 "d" 時(shí)有可能會(huì)被訊問是否建立這個(gè)信箱(Trash).
folder-hook . ‘macro index d "~/Mail/Trash\r"‘
folder-hook ~/Mail/Trash ‘bind index d delete-message‘
- 當(dāng)收到的郵件的 header 有很多項(xiàng)目時(shí),我的 pager 里全都是郵件頭。怎樣才能只看到某些我想看的郵件頭呢?
你可以用 ignore 忽略你不想看到的郵件頭,如果 ignore *,你就可以忽略所有郵件頭。用 unignore 可以恢復(fù)顯示被忽略的郵件頭。所以一個(gè)簡單的辦法就是先把所有郵件頭忽略,然后放出你想看的那幾個(gè)。
看下面的設(shè)置。我的 sent.*(發(fā)件箱) 里只顯示 To: Subject: Date: 三項(xiàng)。而在其它信箱就顯示 From: Subject: X-Mailer: Date: 這幾項(xiàng)。
folder-hook . "ignore *; unignore from subject X-mailer date"
folder-hook sent.* "ignore *; unignore to subject date"
你還可以指定郵件頭顯示的順序:
hdr_order from to subject date
- Mutt 怎么使用地址簿呢?
你可以用 alias 來實(shí)現(xiàn)一個(gè)地址簿。alias 命令的形式是這樣的,舉個(gè)例子:
alias wy Wang Yin <wang-y01@mails.>
alias 是命令,wy 是別名,Wang Yin <wang-y01@mails.> 是一個(gè)標(biāo)準(zhǔn)的 email 地址。這樣,如果你在 index 里按 "m",在 To: 的提示下輸入 "wy",就可以發(fā)信給 Wang Yin <wang-y01@mails.> 。
在 To: 的提示下按 Tab 就可以顯示聯(lián)系人列表,然后你可以移動(dòng)光標(biāo)選擇聯(lián)系人。
如果你有很多 alias 要寫,最好把它們寫到另外一個(gè)文件,比如叫 .mutt.alias. 然后在 .muttrc 里加上:
source ~/.mutt.alias
你還可以設(shè)置一個(gè)變量:
set alias_file=~/.mutt.alias
這樣你在 index 里按 "a",就可以把來信人加入到這個(gè) alias 文件了。
- Mutt 如何處理 HTML 附件?
Mutt 可以處理任何類型的附件。因?yàn)樗梢哉{(diào)用合適的程序來處理它們。為了直接在 mutt 的窗口里顯示 HTML,你只需要在 ~/.mailcap 文件加入:
text/html; lynx --dump %s; nametemplate=%s.html; copiousoutput
在 ~/.muttrc 加入: auto_view text/html
- Mutt 如何處理 Word doc 附件。
清華大學(xué)總是喜歡發(fā)送含有 doc 附件的通知。真是讓人ft。現(xiàn)在有一個(gè)完美的解決方案了:使用 wvware 把 doc 轉(zhuǎn)成 HTML 嵌入mutt里。
wvware 可以在 http://www.免費(fèi)得到。
wvHtml --charset=gb2312 your.doc your.html
就可以把doc轉(zhuǎn)成 HTML。經(jīng)測(cè)試,能夠正確處理漢字和圖片。
你可以讓mutt調(diào)用 wvHtml 在自己的窗口里直接顯示轉(zhuǎn)換的 doc 文檔。只需要在 ~/.mailcap 文件加入:
application/msword; wvHtml --charset=gb2312 %s - | lynx --dump -stdin;
nametemplate=%s.html; copiousoutput
text/html; lynx --dump %s; nametemplate=%s.html; copiousoutput
在 ~/.muttrc 加入: auto_view text/html application/msword
這樣你的 mutt 看一個(gè) doc 的時(shí)候就像這個(gè)樣子:
- 我想在 Mutt 里使用 Emacs 怎么辦?
Emacs 是一個(gè)非常強(qiáng)大的編輯器,所以你肯定會(huì)希望能在 Mutt 里使用 Emacs。你可以選擇兩種方式:
- 一種方式是直接在 Mutt 的終端里使用非圖形界面的 Emacs (emacs -nw)。
你只需要在 .muttrc 設(shè)置:
set editor="emacs -nw"
這樣會(huì)啟動(dòng)一個(gè)新的 Emacs。如果你的 Emacs 配置加入了大量擴(kuò)展,這個(gè)啟動(dòng)時(shí)間是相當(dāng)長的,你不希望每回一封email就等上10秒等Emacs啟動(dòng)吧?
有一個(gè)辦法可以跳過冗長的 Emacs 擴(kuò)展。只需要把你的 .emacs 里耗時(shí)的部分放在一個(gè)條件語句里。比如,我就把 desktop 和 session 放在了一個(gè)條件語句里啟動(dòng)。如果知道編輯的文件名叫做 "/tmp/mutt-..." 那我們就知道是 mutt 在調(diào)用 Emacs,所以我就不加載 desktop 和 session 這種費(fèi)時(shí)間又沒用的東西。
(unless
(catch ‘found
(dolist (arg command-line-args)
(if (string-match "^/tmp/mutt-" arg)
(throw ‘found t))))
;; load desktop
(load "desktop")
(desktop-load-default)
(desktop-read)
;; load session
(require ‘session)
(add-hook ‘a(chǎn)fter-init-hook ‘session-initialize)
(setq desktop-globals-to-save ‘(desktop-missing-file-warning))
;; start server
(server-start)
)
- 一種方式是使用 emacsclient 發(fā)送到 GUI 的 Emacs 服務(wù)器編輯。
這種方式可以使用一個(gè)已經(jīng)啟動(dòng)的 Emacs,啟動(dòng)非常快速。但是我不是很喜歡這種方式,因?yàn)槲也幌腚x開 Mutt 的終端到 Emacs 的窗口,編輯完了還要切換窗口???A href="http://learn./homepage/2001315450/mutt-emacsclient.png">這幅圖。
先來看看 Emacs 的設(shè)置,啟動(dòng) Emacs 后,你可以使用 server-start 啟動(dòng) Emacs 服務(wù)器。你也可以把
(server-start)
加入到你的 .emacs 文件,這樣 Emacs 啟動(dòng)時(shí)自動(dòng)就啟動(dòng)了服務(wù)器。
在 .muttrc 里加入
set editor=emacsclient
這樣 Mutt 在要發(fā)送郵件時(shí),就把需要編輯的東西送到已經(jīng)啟動(dòng)的 Emacs 里。編輯完了之后你按 C-x #,控制會(huì)轉(zhuǎn)回到 Mutt.
- 我不能直接連國外,sendmail必需通過 mails. 轉(zhuǎn)發(fā),但是 sendmail 不能通過 ESMTP 驗(yàn)證怎么辦?
由于清華大學(xué)網(wǎng)絡(luò)中心的限制,一般同學(xué)不能直接連接國外的服務(wù)器。這樣 sendmail 就不能直接將郵件發(fā)送到目的地。我們需要依賴國內(nèi)的 郵件服務(wù)器來轉(zhuǎn)發(fā)到目的地。但是現(xiàn)在國內(nèi)的smtp郵件服務(wù)器通常需要 SMTP 驗(yàn)證才能幫你轉(zhuǎn)發(fā)郵件。比如 mails., 這是一種防止別人利用自己主機(jī)發(fā)送垃圾郵件的辦法。
sendmail 怎樣才能通過 SMTP 身份驗(yàn)證呢?sendmail 的網(wǎng)頁上說有辦法??墒俏腋懔艘惶爝€是沒有搞定。而且 sendmail 是以安全漏洞著稱的。所以我決定換用 Postfix。qmail 也很好,但是我不知道怎么讓 qmail 通過 AUTH SMTP 轉(zhuǎn)發(fā), 如果有人知道請(qǐng)告訴我。
postfix 是一個(gè)可以取代 sendmail 的郵件服務(wù)器。它在普通機(jī)器上可以達(dá)到 sendmail 3 倍的吞吐率。而且相當(dāng)安全。它可以在 www.postfix.org 下載安裝過程如下:
- 編譯的時(shí)候你需要讓 postfix 支持 SASL 驗(yàn)證,使用以下選項(xiàng)編譯:
% make makefiles CCARGS="-DUSE_SASL_AUTH -I/usr/local/include" AUXLIBS="-L/usr/local/lib -lsasl"
然后安裝 % make; make install
- 為了 postfix 能夠正確發(fā)送本地郵件,請(qǐng)?jiān)?/etc/postfix/main.cf 加上:
myhostname = tu140066.
mydestination = wangyin.com, $myhostname, localhost.$mydomain
$myhostname 指明了你的主機(jī)域名,清華大學(xué)的網(wǎng)絡(luò)給了每個(gè)人一個(gè)域名,其實(shí)就是 tuxxxxxx., xxxxxx 就是你的 IP 后面的數(shù)字,比如我的IP是166.111.140.66, 所以我的域名是 tu140066..
$mydestination 指出哪些地址是認(rèn)為是你自己的地址。你應(yīng)該把你的機(jī)器名(我的是 wangyin.com),$myhostname, $localhost.$mydomain 加進(jìn)去。
- 為了能夠使用 SASL 驗(yàn)證登錄,把這些行加到 /etc/postfix/main.cf
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options =
relayhost = mails.
- 編輯口令文件 /etc/postfix/sasl_passwd。加入一行:
Your.Relay.Server your_auth_login_name:Your_PassWord
比如我的口令文件是這樣的:
mails. wang-y01:aDF2m@3d$q=+
當(dāng)然密碼不是那個(gè) :P
- 把口令文件轉(zhuǎn)成 Berkeley DB 格式:
#postmap hash:sasl_passwd
- 啟動(dòng)你的 postfix 服務(wù)器
postfix start