標籤: 暫無標籤

mutt是linux下的一個email程序。Mutt 顯然是一個 Unix 的郵件程序,它跟一般的 Windows 郵件程序不同,它不是一個包羅萬象的大雜燴。你甚至會發現它根本不直接發出郵件,它從來不自己編輯郵件,它從來不自己對郵件進行加密和數字簽名……Mutt 更像一個文件管理器,只不過它管理的是email。它的功能是藉助各個最強大的程序來實現的。這符合 UNIX 的設計思想。

1 mutt -特點

  * 超強的信件分類功能
  你可以設置幾乎任意的條件來從一堆信件里找到你所需要的那封。比如,你可以說:「只顯示一個月之類,不是清華大學發來的,內容包含『光碟』兩個字的信件」,「把從 fvwm 郵件列表一個星期以前發來的,而且還沒有看過的信件全部移到叫 old-fvwm 的信箱」……
  * 信件打分排序功能
  你可以給你的信件打分,信件最後的得分就是它的這些分數相加的結果。
  * 幾乎任意條件的彩色設置
  * 可以隨意綁定熱鍵
  這個功能類似 Emacs。你可以把幾乎任意的功能綁定到鍵盤。
  * 設置條件掛鉤
  可以對滿足不同條件的信件,信箱採取不同的設置。比如,對於用來收郵件的那些信箱,顯示郵件時只顯示 from, date, subject, x-mailer 這幾個郵件頭,而對 sent-mail 信箱還顯示 to 這個郵件頭;發給家人,朋友的信件都存到一個特別的信箱中保存。
  * 批量郵件處理
  可以把一些郵件作上標記(tag),然後對它們進行同意操作,比如刪除,存到其它文件,刪除附件,……
  * 任選編輯器
  用一個強大的編輯器來編輯你的 email 你才能高效的完成編輯。一般 email 客戶端都是用的自己內嵌的編輯器,這些編輯器一般功能很弱。mutt 並沒有試圖自己寫一個編輯器,因為它明顯不可能超過 VIM 和 Emacs, 所以 mutt 可以讓你自己選擇你喜歡的編輯器,它會去調用它,並且設置很多方便編輯 email 的參數。編輯器編輯完畢后 mutt 會從編輯器得到編輯好的文本,然後你可以加附件什麼的。我現在在 mutt 里使用 Emacs 編輯器。
  * 高級的 MIME 支持
  Mutt 不像一般的 email 程序那樣直接支持打開某些種類的附件。因為附件的種類實在太多,一個 email 客戶端沒有可能自己實現所有的功能。所以 Mutt 提供了 .mailcap 的設置。
  * 支持PGP加密
  Mutt 可以利用 GnuPG 這樣的程序來對信件進行 PGP 加密和數字簽名。別人可以用你的公用密鑰給你發一封只有你才能看到的信件。也可以用私有密鑰給信件「簽名」,收信人可以用公布的公鑰驗證這封信。

2 mutt -基本配置

  開始使用時需要的一些必要的配置。
  1. alternates
  這個變數應該設置為一個正則表達式,它是你有可能收到信件的地址。
  這個變數有助於 Mutt 顯示郵件的地址特徵。一般 Mutt 會在index中顯示幾種不同的郵件地址特徵,它們是由 $to_chars 變數指定的。
  2. to_chars
  一般 $to_chars 的定義為 " +TCFL".
  * " "(空): 表示這封郵件不是給你的,也就是說 To: 和 Cc: Bcc: 都沒有你的地址,很多轉發的郵件,未確認的郵件列表郵件,垃圾郵件都有這個特徵。
  * +: 表示你是收件人(To: 是你的地址之一),而且是唯一的收件人。
  * T: 表示你是收件人(To: 包括了你的地址之一),但是你不是唯一的收件人。這是一封群體信件。
  * C: 表示你的地址出現在 CC:,但是你不是唯一的被抄送的人。
  * F: 表示這封郵件是你發出去的。
  * L: 表示這是一封你已經加入的郵件列表寄來的。
  3. index_format
  這是一個格式字元串,用來控制你的index的列表顯示。它的預設定義是:
  set index_format="%4C %Z %{%b %d} %-15.15L (%4l) %s"
  顯示出來就是這個樣子:
  index-original
  這裡有一個簡單的對應關係,%4C表示4位數的序號,%Z是郵件狀態,你看到那個 "r" 了嗎?也就是說我已經回了這封信。%Z 還包含那個 "T", 也就是說這封信不只是寄給我一個人的,我爸爸每次寄信都會CC他自己一份 :) %{%b %d} 是日期格式,它是由 strftime() 函數的格式定義的。這裡 %b 就是根據當前的 locale 設置的月份簡稱,「12月」。%d 就是十進位表示的每月的日號,「31」。後面的……你自己看看manual吧,我不羅嗦了。
  4. mailboxes
  指定你有那些信箱文件。當你按 "c" 切換信箱時,再按 Tab 鍵,這些信箱就可供你選擇。
  mailboxes Mailbox sent-mail
  5. header
  這是一個 bool 型變數。它表明你在回信時引用原文是否加入原文的郵件頭。
  set header=no
  6. quit
  mutt-quit
  可以設置為 yes, no, ask-yes, 或者 ask-no. 這是說,當你按q退出時,是否提示你(ask-yes,ask-no),還是直接就退出了(yes),還是根本不理你(no)。
  set quit=ask-yes
  7. auto_view
  那些類型的附件是允許直接通過 .mailcap 瀏覽的?
  auto_view text/html
  8. move
  這也是一個提示性變數。它是確定當你退出時,是否提示你把信件從 spool 移動到的 mbox 文件。
  set move=no
  9. ascii_chars
  當 Mutt 用 thread 方式顯示時,是否用純 ascii 表示樹狀列表。
  set ascii_chars=yes
  如果設置了就是這個樣子:
  mutt-ascii
  10. include
  回信時是否包含原文。
  set include
  11. indent_str
  回信的引文之前插入那個符號?
  set indent_str="> "
  12. my_hdr
  設置你自己的郵件頭。
  13. 打分
  新信件+4分,爸爸(w2r007)發來的 +2,主題包含「通知」的+2,主題包含 「Circulation」 +3, 已經標記刪除的 -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
  14. sort
  排序方式。可以是
  date
  date-sent
  date-received
  from
  mailbox-order (unsorted)
  score
  size
  subject
  threads
  to
  幾種方式,每種方式可以在前面加一個 "reverse-" 前綴表示反方向排序。我一般按分數排序:
  set sort=score
  15. sort_aux
  當用 thread 排序方式時,我們對各個 thread 的相對排序順序。
  set sort_aux=date
  16. pager_stop
  如果設置,那麼你在pager(就是你看信的內容的窗口裡)翻頁時,如果翻到最後,再按往下翻也不會翻到下一封信件。如果不設置就會自動翻到下一封信。
  set pager_stop
  17. fast_reply
  如果設置,當你按 "r" 回信時,就不會再提示你輸入回信地址和主題,直接進入編輯模式。
  set fast_reply
  18. resolve
  當你按 "t" 或者 "D" 之類的標記操作時,是否自動把游標移動到下一封信件。
  set resolve=yes
  19. alias_file
  當你在 index 里按 "a" 為來信者取別名時,使用哪一個別名文件保存這個別名。
  set alias_file=/home/wy/.mutt.alias
  20. record
  你發出的郵件保存到那個信箱文件?比如可以像我這樣每個月發出的信件放在不同的文件里。
  set record="~/Mail/=sent-mail-`date +%Y-%m`"
  21. charset
  你的終端支持哪一種編碼的顯示?這個必須和你的終端編碼一樣。
  set charset="gb2312"
  22. send_charset
  發信時可以使用的字符集。只有當前面的字符集不能正確表示信件內容時才會使用後面的。比如,如果你像下面這樣設置,你的信件如果全是英文,那麼信件就會被設置為 us-ascii 編碼,如果出現了法語字元,那麼就會用 iso-8859-1,如果出現了漢字就會用 gb2312,如果以上都不是,那麼就用 utf-8。
  set send_charset="us-ascii:iso-8859-1:gb2312:utf-8"
  23. wait_key
  當外部程序退出時,是否要求用戶按一個鍵才返回。這在察看某些shell命令輸出時是比要的,否則它們一下就消失了。
  set wait_key=yes
  24. confirmappend
  當你要把信件存到另一個信箱,而這個信箱已經存在時,是否提示附加?
  set noconfirmappend
  25. edit_headers
  是否把郵件頭也放在編輯器里可以修改?
  set edit_headers=no
  26. pager_index_lines
  當你在用 pager 看信件時,在 index 留出多少行顯示郵件列表?
  set pager_index_lines=4
  比如我留下4行顯示列表,其它的用來顯示正文: mutt-indexpager
  27. subscribe
  告訴 Mutt 你已經訂閱了那些郵件列表(mailing-list). 這有助於 Mutt 判斷那些信件是郵件列錶轉過來的,避免你錯誤的回復到別人的私人信箱。也避免別人回復到你的私人信箱。

3 mutt -中文FAQ

  2. 怎樣讓 Mutt 顯示日期等為中文?
  set locale="zh_CN"
  3. 發出的信件為什麼設置了錯誤的 charset?別人的程序不能正確顯示我的中文信件!
  把 gb2312 編碼加到你的 send_charset. 就像這樣最好:
  set send_charset="us-ascii:iso-8859-1:gb2312:utf-8"
  4. 收到一些中文信件全部顯示為 "???"
  這是因為某些 email 客戶端,比如清華大學 的WWW界面客戶端 沒有設置字元編碼,你看看郵件頭(按h),是不是有個
  Content-Type: text/plain
  但是後面沒有說 charset="GB2312"? Mutt 遇到這種沒有設置 charset 的郵件就會使用 "us-ascii",所以如果你想讓這種信件可以正確顯示,就把 "us-ascii" 設置為 "gb2312" 的別名:
  charset-hook ^us-ascii$ gb2312
  注意 "us-ascii" 中間的連字號!
  5. 可是仍然有郵件標題亂碼呢!
  看看你的 $spool 里那個亂碼的信件是不是有類似如下內容:
  Subject: =?iso8859-1?B?U29oddCj09HCvDq587Dg09DQwrPJ1LG808jro6E=?=
  Chinaren 等伺服器發出來的信件使用了 quoted-printable 的 subject,而且設置編碼為 "iso8859-1",這顯然是錯誤的。
  對付這個錯誤的辦法是把 iso-8859-1 變成 gb2312 的別名:
  charset-hook ^iso-8859-1$ gb2312
  注意 "iso-8859-1" 中間的連字號!
  如果仍然有信件亂碼。乾脆用
  charset-hook .* gb2312
  把所有信件都用 gb2312 顯示。
  6. 可是這樣設置之後 evolution 發過來的 subject 為 utf-8 編碼的郵件標題亂碼!
  那就把不是 utf-8 的編碼都映射到 gb2312:
  charset-hook !utf-8 gb2312
  7. 怎樣配置 fetchmail?
  fetchmail 的配置非常簡單。如果只是一個人用的話,可以這樣設置:比如,我在我的 $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, 每分種幫我檢查所有郵箱里的郵件,收回來,並且轉發到本地信箱。修改上面那個 "60" 就可以改變檢查時間間隔。
  如果不想讓 fetchmail 刪除伺服器上的文件,而且每次只取新的信。就在配置文件里加上:
  keep
  uidl
  8. 我不想用 fetchmail,能不能直接收回 POP 信件啊?
  如果你的 Mutt 編譯時加入了 POP 功能,那麼你可以直接從 POP 伺服器收郵件而不用藉助於 fetchmail. 把類似這些行加入 ~/.muttrc
  set pop_user=wang-y01
  set pop_pass="wang-y01的密碼"
  set pop_host="pop://mails.tsinghua. edu. cn"
  也可以一次性輸入所有內容:
  set pop_host="pop://wang-y01:wang-y01的密碼@smth. org"
  在 Mutt 里按一下 "G" 就可以取郵件了。
  9. 怎樣處理多個 POP3 信箱?
  如果你有多個POP信箱,你可以設置一些方便的宏把POP信件收到你信箱里。舉個例子,就像我這樣:
  macro index ,shredder ":set pop_host=\
  \"pop://shredder:shredder的密碼@smth. org\"\r\
  "
  macro index ,sk8er ":set pop_host=\
  \"pop://sk8er:sk8er的密碼@smth. org\"\r\
  "
  macro index ,ts ":set pop_host=\
  \"pop://wang-y01:wang-y01的密碼@mails.tsinghua. edu. cn\"\r\
  "
  macro index ,g ",shredder,sk8er,ts"
  這樣,我只要按 ,shredder 就可以收我在 smth 上 shredder 的信件,只要按 ,sk8er 就可以收我在 smth 上 sk8er 的信件,只要按 ,ts 就可以收 mails.tsinghua.e du. cn 的信件,只要按 ,g 就可以收取我所有 POP 信箱的信件了。
  10. 怎樣直接訪問 POP3 信箱?
  除了上面的方法,你還可以直接訪問 POP3 信箱。比如,我可以直接按 "c" 切換到信箱 pop://sk8er:sk8er的密碼@smth. org
  就可以瀏覽 pop 的信件了。切換到其它信箱就瀏覽不同的 pop。如果你嫌按鍵太多可以自己定義一個宏。這是同步操作,你如果在這個信箱里刪除一封信件,mutt 就會刪除你 pop3 伺服器上的信件。你不刪它也不刪。
  郵件太多時這樣效率很低,每次都要取所有郵件頭,就像 Foxmail 的「遠程郵件管理」。所以最好在那種不想取回信件,而想直接刪除垃圾郵件的時候用這個辦法。
  11. 怎樣處理郵件列表?
  參看subscribe命令。
  12. 我按 "d" 的時候郵件被直接標記刪除了,怎樣才能把刪掉的信件都移到一個「垃圾箱」呢?
  你只要把信件用 save-message 函數保存到你的垃圾箱,比如 ~/Mail/Trash,信件會被自動做上 "D"(刪除) 標誌。為了讓 "d" 可以保存到垃圾箱,你可以把 "d" 鍵綁定到一個宏。但是如果你要刪除垃圾箱里的郵件,這個宏會再次把垃圾箱的郵件存儲到垃圾箱,產生循環。所以你應該使用 folder-hook 在垃圾箱里把 "d" 恢復到原來的 delete-message 函數,而在其它信箱使用那個宏。
  現在你可以用以下設置得到一個「垃圾箱」的功能。第一次按 "d" 時有可能會被訊問是否建立這個信箱(Trash).
  folder-hook . 'macro index d "~/Mail/Trash\r"'
  folder-hook ~/Mail/Trash 'bind index d delete-message'
  13. 當收到的郵件的 header 有很多項目時,我的 pager 里全都是郵件頭。怎樣才能只看到某些我想看的郵件頭呢?
  你可以用 ignore 忽略你不想看到的郵件頭,如果 ignore *,你就可以忽略所有郵件頭。用 unignore 可以恢復顯示被忽略的郵件頭。所以一個簡單的辦法就是先把所有郵件頭忽略,然後放出你想看的那幾個。
  看下面的設置。我的 sent.*(發件箱) 里只顯示 To: Subject: Date: 三項。而在其它信箱就顯示 From: Subject: X-Mailer: Date: 這幾項。
  folder-hook . "ignore *; unignore from subject X-mailer date"
  folder-hook sent.* "ignore *; unignore to subject date"
  你還可以指定郵件頭顯示的順序:
  hdr_order from to subject date
  14. Mutt 怎麼使用地址簿呢?
  你可以用 alias 來實現一個地址簿。alias 命令的形式是這樣的,舉個例子:
  alias wy Wang Yin <郵箱>
  alias 是命令,wy 是別名,Wang Yin <郵箱> 是一個標準的 email 地址。這樣,如果你在 index 里按 "m",在 To: 的提示下輸入 "wy",就可以發信給 Wang Yin <郵箱> 。
  在 To: 的提示下按 Tab 就可以顯示聯繫人列表,然後你可以移動 游標選擇聯繫人。
  如果你有很多 alias 要寫,最好把它們寫到另外一個文件,比如叫 .mutt.alias. 然後在 .muttrc 里加上:
  source ~/.mutt.alias
  你還可以設置一個變數:
  set alias_file=~/.mutt.alias
  這樣你在 index 里按 "a",就可以把來信人加入到這個 alias 文件了。
  15. Mutt 如何處理 HTML 附件?
  Mutt 可以處理任何類型的附件。因為它可以調用合適的程序來處理它們。為了直接在 mutt 的窗口裡顯示 HTML,你只需要在 ~/.mailcap 文件加入:
  text/html; lynx --dump %s; nametemplate=%s.html; copiousoutput
  在 ~/.muttrc 加入:
  auto_view text/html
  16. Mutt 如何處理 Word doc 附件。
  清華大學總是喜歡發送含有 doc 附件的通知。真是讓人ft。現在有一個完美的解決方案了:使用 wvware 把 doc 轉成 HTML 嵌入mutt里。
  wvHtml --charset=gb2312 your.doc your.html
  就可以把doc轉成 HTML。經測試,能夠正確處理漢字和圖片。
  你可以讓mutt調用 wvHtml 在自己的窗口裡直接顯示轉換的 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-wvware
  17. 我想在 Mutt 里使用 Emacs 怎麼辦?
  Emacs 是一個非常強大的 編輯器,所以你肯定會希望能在 Mutt 里使用 Emacs。你可以選擇兩種方式:
  
1. 一種方式是直接在 Mutt 的終端里使用非圖形界面的 Emacs (emacs -nw)。
你只需要在 .muttrc 設置:
set editor="emacs -nw"
這樣會啟動一個新的 Emacs。如果你的 Emacs 配置加入了大量擴展,這個啟動時間是相當長的,你不希望每回一封email就等上10秒等Emacs啟動吧?
有一個辦法可以跳過冗長的 Emacs 擴展。只需要把你的 .emacs 里耗時的部分放在一個條件語句里。比如,我就把 desktop 和 session 放在了一個條件語句里啟動。如果知道編輯的文件名叫做 "/tmp/mutt-..." 那我們就知道是 mutt 在調用 Emacs,所以我就不載入 desktop 和 session 這種費時間又沒用的東西。
(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 'after-init-hook 'session-initialize)
(setq desktop-globals-to-save '(desktop-missing-file-warning))
;; start server
(server-start)
)
2. 一種方式是使用 emacsclient 發送到 GUI 的 Emacs 伺服器編輯。
這種方式可以使用一個已經啟動的 Emacs,啟動非常快速。但是我不是很喜歡這種方式,因為我不想離開 Mutt 的終端到 Emacs 的窗口,編輯完了還要切換窗口。看這幅圖。
先來看看 Emacs 的設置,啟動 Emacs 后,你可以使用 server-start 啟動 Emacs 伺服器。你也可以把
(server-start)
加入到你的 .emacs 文件,這樣 Emacs 啟動時自動就啟動了伺服器。
在 .muttrc 里加入
set editor=emacsclient
這樣 Mutt 在要發送郵件時,就把需要編輯的東西送到已經啟動的 Emacs 里。編輯完了之後你按 C-x #,控制會轉回到 Mutt.
上一篇[漢文學史綱要]    下一篇 [南茜·朱爾]

相關評論

同義詞:暫無同義詞