怎樣才能讓我發(fā)出的信件使用我的POP郵箱的地址,而不是 root@myhost.com 這樣的地址?
用 my_hdr 把你的 From: 設(shè)置為你想要的地址就行了。比如我是這樣設(shè)置的:
my_hdr From: wang-y01@mails.tsinghua.edu.cn
注意 From: 的冒號之后有空格!
怎樣讓 Mutt 顯示日期等為中文?
set locale="zh_CN"
發(fā)出的信件為什么設(shè)置了錯誤的 charset?別人的程序不能正確顯示我的中文信件!
把 gb2312 編碼加到你的 send_charset. 就像這樣最好:
set send_charset="us-ascii:iso-8859-1:gb2312:utf-8"
收到一些中文信件全部顯示為 "???"
這是因?yàn)槟承?email 客戶端,比如清華大學(xué) mails.tsinghua.edu.cn 的WWW界面客戶端 沒有設(shè)置字符編碼,你看看郵件頭(按h),是不是有個
Content-Type: text/plain
但是后面沒有說 charset="GB2312"? Mutt 遇到這種沒有設(shè)置 charset 的郵件就會使用 "us-ascii",所以如果你想讓這種信件可以正確顯示,就把 "us-ascii" 設(shè)置為 "gb2312" 的別名:
charset-hook ^us-ascii$ gb2312
注意 "us-ascii" 中間的連字號!
可是仍然有郵件標(biāo)題亂碼呢!
看看你的 $spool 里那個亂碼的信件是不是有類似如下內(nèi)容:
Subject: =?iso8859-1?B?U29oddCj09HCvDq587Dg09DQwrPJ1LG808jro6E=?=
Chinaren 等服務(wù)器發(fā)出來的信件使用了 quoted-printable 的 subject,而且設(shè)置編碼為 "iso8859-1",這顯然是錯誤的。
對付這個錯誤的辦法是把 iso-8859-1 變成 gb2312 的別名:
charset-hook ^iso-8859-1$ gb2312
注意 "iso-8859-1" 中間的連字號!
如果仍然有信件亂碼。干脆用
charset-hook .* gb2312
把所有信件都用 gb2312 顯示。
可是這樣設(shè)置之后 evolution 發(fā)過來的 subject 為 utf-8 編碼的郵件標(biāo)題亂碼!
那就把不是 utf-8 的編碼都映射到 gb2312:
charset-hook !utf-8 gb2312
怎樣配置 fetchmail?
fetchmail 的配置非常簡單。如果只是一個人用的話,可以這樣設(shè)置:比如,我在我的 $HOME 目錄編輯了一個 .fetchmailrc:
set daemon 60 poll mails.tsinghua.edu.cn protocol POP3 user "wang-y01" password "wang-y01的密碼" poll smth.org .... ....
然后把 fetchmail 寫到我的shell啟動腳本里:
! ps aux | grep -q fetchmail && fetchmail &
fetchmail 啟動后成為一個 daemon, 每分種幫我檢查所有郵箱里的郵件,收回來,并且轉(zhuǎn)發(fā)到本地信箱。修改上面那個 "60" 就可以改變檢查時間間隔。
如果不想讓 fetchmail 刪除服務(wù)器上的文件,而且每次只取新的信。就在配置文件里加上:
keep uidl
我不想用 fetchmail,能不能直接收回 POP 信件啊?
如果你的 Mutt 編譯時加入了 POP 功能,那么你可以直接從 POP 服務(wù)器收郵件而不用借助于 fetchmail. 把類似這些行加入 ~/.muttrc
set pop_user=wang-y01 set pop_pass="wang-y01的密碼" set pop_host="pop://mails.tsinghua.edu.cn"
也可以一次性輸入所有內(nèi)容:
set pop_host="pop://wang-y01:wang-y01的密碼@smth.org"
在 Mutt 里按一下 "G" 就可以取郵件了。
怎樣處理多個 POP3 信箱?
如果你有多個POP信箱,你可以設(shè)置一些方便的宏把POP信件收到你信箱里。舉個例子,就像我這樣:
macro index ,shredder ":set pop_host= "pop://shredder:shredder的密碼@smth.org"r
這樣,我只要按 ,shredder 就可以收我在 smth 上 shredder 的信件,只要按 ,sk8er 就可以收我在 smth 上 sk8er 的信件,只要按 ,ts 就可以收 mails.tsinghua.edu.cn 的信件,只要按 ,g 就可以收取我所有 POP 信箱的信件了。
怎樣直接訪問 POP3 信箱?
除了上面的方法,你還可以直接訪問 POP3 信箱。比如,我可以直接按 "c" 切換到信箱 pop://sk8er:sk8er的密碼@smth.org
就可以瀏覽 pop 的信件了。切換到其它信箱就瀏覽不同的 pop。如果你嫌按鍵太多可以自己定義一個宏。這是同步操作,你如果在這個信箱里刪除一封信件,mutt 就會刪除你 pop3 服務(wù)器上的信件。你不刪它也不刪。
郵件太多時這樣效率很低,每次都要取所有郵件頭,就像 Foxmail 的“遠(yuǎn)程郵件管理”。所以最好在那種不想取回信件,而想直接刪除垃圾郵件的時候用這個辦法。
怎樣處理郵件列表?
參看subscribe命令。
我按 "d" 的時候郵件被直接標(biāo)記刪除了,怎樣才能把刪掉的信件都移到一個“垃圾箱”呢?
你只要把信件用 save-message 函數(shù)保存到你的垃圾箱,比如 ~/Mail/Trash,信件會被自動做上 "D"(刪除) 標(biāo)志。為了讓 "d" 可以保存到垃圾箱,你可以把 "d" 鍵綁定到一個宏。但是如果你要刪除垃圾箱里的郵件,這個宏會再次把垃圾箱的郵件存儲到垃圾箱,產(chǎn)生循環(huán)。所以你應(yīng)該使用 folder-hook 在垃圾箱里把 "d" 恢復(fù)到原來的 delete-message 函數(shù),而在其它信箱使用那個宏。
現(xiàn)在你可以用以下設(shè)置得到一個“垃圾箱”的功能。第一次按 "d" 時有可能會被訊問是否建立這個信箱(Trash).
folder-hook . ‘macro index d "~/Mail/Trashr"‘ folder-hook ~/Mail/Trash ‘bind index d delete-message‘[!--empirenews.page--]
當(dāng)收到的郵件的 header 有很多項(xiàng)目時,我的 pager 里全都是郵件頭。怎樣才能只看到某些我想看的郵件頭呢?
你可以用 ignore 忽略你不想看到的郵件頭,如果 ignore *,你就可以忽略所有郵件頭。用 unignore 可以恢復(fù)顯示被忽略的郵件頭。所以一個簡單的辦法就是先把所有郵件頭忽略,然后放出你想看的那幾個。
看下面的設(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)一個地址簿。alias 命令的形式是這樣的,舉個例子:
alias wy Wang Yin
alias 是命令,wy 是別名,Wang Yin
在 To: 的提示下按 Tab 就可以顯示聯(lián)系人列表,然后你可以移動光標(biāo)選擇聯(lián)系人。
如果你有很多 alias 要寫,最好把它們寫到另外一個文件,比如叫 .mutt.alias. 然后在 .muttrc 里加上:
source ~/.mutt.alias
你還可以設(shè)置一個變量:
set alias_file=~/.mutt.alias
這樣你在 index 里按 "a",就可以把來信人加入到這個 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)在有一個完美的解決方案了:使用 wvware 把 doc 轉(zhuǎn)成 HTML 嵌入mutt里。
wvware 可以在 http://www.wvware.com/免費(fèi)得到。
wvHtml --charset=gb2312 your.doc your.html
就可以把doc轉(zhuǎn)成 HTML。經(jīng)測試,能夠正確處理漢字和圖片。
你可以讓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 看一個 doc 的時候就像這個樣子:
我想在 Mutt 里使用 Emacs 怎么辦?
Emacs 是一個非常強(qiáng)大的編輯器,所以你肯定會希望能在 Mutt 里使用 Emacs。你可以選擇兩種方式:
一種方式是直接在 Mutt 的終端里使用非圖形界面的 Emacs (emacs -nw)。
你只需要在 .muttrc 設(shè)置:
set editor="emacs -nw"
這樣會啟動一個新的 Emacs。如果你的 Emacs 配置加入了大量擴(kuò)展,這個啟動時間是相當(dāng)長的,你不希望每回一封email就等上10秒等Emacs啟動吧?
有一個辦法可以跳過冗長的 Emacs 擴(kuò)展。只需要把你的 .emacs 里耗時的部分放在一個條件語句里。比如,我就把 desktop 和 session 放在了一個條件語句里啟動。如果知道編輯的文件名叫做 "/tmp/mutt-..." 那我們就知道是 mutt 在調(diào)用 Emacs,所以我就不加載 desktop 和 session 這種費(fèi)時間又沒用的東西。
(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ù)器編輯。
這種方式可以使用一個已經(jīng)啟動的 Emacs,啟動非??焖?。但是我不是很喜歡這種方式,因?yàn)槲也幌腚x開 Mutt 的終端到 Emacs 的窗口,編輯完了還要切換窗口??催@幅圖。
先來看看 Emacs 的設(shè)置,啟動 Emacs 后,你可以使用 server-start 啟動 Emacs 服務(wù)器。你也可以把
(server-start)
加入到你的 .emacs 文件,這樣 Emacs 啟動時自動就啟動了服務(wù)器。
在 .muttrc 里加入
set editor=emacsclient
這樣 Mutt 在要發(fā)送郵件時,就把需要編輯的東西送到已經(jīng)啟動的 Emacs 里。編輯完了之后你按 C-x #,控制會轉(zhuǎn)回到 Mutt.
我不能直接連國外,sendmail必需通過 mails.tsinghua.edu.cn 轉(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.tsinghua.edu.cn, 這是一種防止別人利用自己主機(jī)發(fā)送垃圾郵件的辦法。
sendmail 怎樣才能通過 SMTP 身份驗(yàn)證呢?sendmail 的網(wǎng)頁上說有辦法。可是我搞了一天還是沒有搞定。而且 sendmail 是以安全漏洞著稱的。所以我決定換用 Postfix。qmail 也很好,但是我不知道怎么讓 qmail 通過 AUTH SMTP 轉(zhuǎn)發(fā), 如果有人知道請告訴我。
postfix 是一個可以取代 sendmail 的始服務(wù)器。它在普通機(jī)器上可以達(dá)?sendmail 3 倍的吞吐率。而且相當(dāng)安全。它可以在 www.postfix.org 下載安裝過程如下:
編譯的時候你需要讓 postfix 支持 SASL 驗(yàn)證,使用以下選項(xiàng)編譯:[!--empirenews.page--]
% make makefiles CCARGS="-DUSE_SASL_AUTH -I/usr/local/include" AUXLIBS="-L/usr/local/lib -lsasl"
然后安裝
% make; make install
為了 postfix 能夠正確發(fā)送本地郵件,請?jiān)?/etc/postfix/main.cf 加上:
myhostname = tu140066.tsinghua.edu.cn mydestination = wangyin.com, $myhostname, localhost.$mydomain
$myhostname 指明了你的主機(jī)域名,清華大學(xué)的網(wǎng)絡(luò)給了每個人一個域名,其實(shí)就是 tuxxxxxx.tsinghua.edu.cn, xxxxxx 就是你的 IP 后面的數(shù)字,比如我的IP是166.111.140.66, 所以我的域名是 tu140066.tsinghua.edu.cn.
$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.tsinghua.edu.cn
編輯口令文件 /etc/postfix/sasl_passwd。加入一行:
Your.Relay.Server your_auth_login_name:Your_PassWord
比如我的口令文件是這樣的:
mails.tsinghua.edu.cn wang-y01:aDF2m@3d$q=+
當(dāng)然密碼不是那個 :P
把口令文件轉(zhuǎn)成 Berkeley DB 格式:
#postmap hash:sasl_passwd
啟動你的 postfix 服務(wù)器
postfix start