使用Mutt收GMail IMAP電子郵件, Part 3 封存郵件篇

在[使用Mutt收GMail IMAP電子郵件, Part 2 Procmail篇]的文章裡,我們使用procmail來幫我們將郵件做分類。但是,一般性沒辦法分類的聯絡郵件還是會全部進到mbox(主郵件檔案)裡,隨著時間日積月累,mbox檔案大小會隨著時間越久,檔案會越變越大,Mutt讀取mbox檔案速度因此而變慢。

此時,我們需要將舊郵件做封存(Archive),方能解決mbox檔案隨著時間越變越大的問題。在Debian下,我們可以使用archivemail程式來幫我們的舊郵件做封存。使用方法十分簡單,如下:

archivemail --suffix '_%B_%Y' --days=90 mbox


archivemail程式就會將mbox檔案中超過90天以上的郵件封存壓縮,並且獨立成另外一個檔案,檔名後面加註月份與年份,檔名範例如 mbox_February_2010.gz。

archivemail程式可搭配cron將郵件檔案定期做封存,支援IMAP, mbox, MH與Maildir 郵件檔案格式。

使用Mutt收GMail IMAP電子郵件, Part 2 Procmail篇

在Part 1 [使用Mutt收GMail IMAP電子郵件, Part 1 基礎設定篇] 的文章後,我開始接觸使用Mutt這個方便快速的收信軟體來管理我的電子郵件。經過一段使用Mutt時間過後才漸漸發現Mutt是個深度而卓越的郵件軟體,自訂程度高,輕巧且彈性。

日前碰到了困擾,有些信件是之前訂閱的Mailing List或電子報,固定時間就會寄送郵件過來,而我並不是每次開啟信件時都願意讀這些Mailing List Post 或電子報,只想先回覆重要的信件,有空閒時間再開啟這些Post細讀。

我希望能夠有個預先分類的機制,幫我將這些Mailing List Post或電子報的電子郵件做分類,並且透過一些郵件規則過濾掉垃圾信。

Procmail 便是為此目的而生的,它可以搭配fetchmail與Mutt進行郵件預先過濾與分類信件。

安裝Procmail後,接下來要設定fetchmail與procmail搭配。

設定家目錄下的.fetchmailrc,加入下行。

mda '/usr/bin/procmail -d %T'

編輯家目錄下的.procmailrc,參考Debian procmail套件的範例檔(/usr/share/doc/procmail/example/1procmailrc)

PATH=$HOME/bin:/usr/bin:/usr/ucb:/bin:/usr/local/bin:.
MAILDIR=$HOME/Mail # You'd better make sure it exists
DEFAULT=$MAILDIR/mbox
LOGFILE=$MAILDIR/from
LOCKFILE=$HOME/.lockmail

:0 # Anything from thf
* ^From.*thf@somewhere.someplace
todd # will go to $MAILDIR/todd

:0 # Anything from people at uunet
* ^To.*@uunet
uunetbox # will go to $MAILDIR/uunetbox

:0 # Anything from Henry
* ^Subject.*hello
/dev/null # will go to /dev/null



透過這樣的設定,我們執行fetchmail時,符合procmailrc規則的信件會放入設定的mailbox檔案中(e.g. $MAILDIR/todd),其餘則放入預設的$MAILDIR/mbox檔案中。

而Mutt設定檔中我們新增兩行設定

set spoolfile=~/Mail/mbox
mailboxes mbox todd uunetbox


第一行 set spool file可以讓mutt預設執行時開啟家目錄下的Mail/mbox,瀏覽信件。第二行則是告訴Mutt我們有哪些Mailbox檔案,在Mutt執行時只需要按c鍵就可切換Mailbox檔案瀏覽。

使用Mutt收發信件越來越有趣,搭配其他軟體工具也越來越上手了呢。

使用Mutt收GMail IMAP電子郵件, Part 1 基礎設定篇

為響應Richard Stallman 2008年9月在英國衛報反對使用者投入雲端運算的懷抱(Cloud computing is a trap, warns GNU founder Richard Stallman),我決定改變收電子郵件的習慣。我個人最依賴的雲端服務當為Google的GMail服務。而馬上離開不使用GMail不是件易事,我構思分階段實行降低對GMail依賴程度。

  • 第一階段:降低對GMail Web的依賴程度
第一階段可以做的就是使用一般收信軟體,如evolution, 雷鳥與Mutt等相關軟體,將GMail信件利用POP3與IMAP收信協定,將電子郵件收到本機端閱讀,並且利用SMTP送信協定寄送電子郵件。

我挑選軟體耦合度最低同時也十分輕巧的Mutt,來當我平時收發電子郵件的軟體。使用Mutt的好處是:
  1. 收信的工作交給fetchmail(支援POP3、IMAP等收信協定)
  2. 寄信的工作交給msmtp(支援SMTP等寄信協定)
  3. 寫信的工作交給Vim(這個不用解釋了吧!)
  4. 通訊錄的工作可以交給Abook(但不支援vCard格式匯入)
那Mutt要幹嘛?它幫我把收好的信件以thread/date的方式排序,方便閱讀與回信。fetchmail、msmtp與Mutt配合的設定,可參考這篇的設定,在此不贅述。

設定fetchmail之後就要開始把GMail的信收到電腦本機。我使用IMAPS協定。不收還好,一收就得收全部的信下來。我花了四個多小時才把我信箱裡面的八千多封信通通收下來=.=。不過GMail只會下載之前WebMail上的未讀信件。

用Mutt收信一段時間以後,總覺得要看信之前才執行fetchmail太不經濟了,用Command Line就是要自動化才夠爽阿阿阿!

參考Bash Guide for Beginners寫了一個bash script,執行fetchmail時計算新信件有幾封順便使用notify-send提醒。不過使用crontab去執行時,卻發生一點問題。參考這篇Notify from cronjob,抄DBUS_SESSION_BUS_ADDRESS寫法,就ok了。將script命名為getmail.sh,使用crontab 30分鐘執行一次即可。

Script如下給有需要的人參考:


#!/bin/bash

########################################################################################
# This scripts is just using fetchmail command to get new mails and notify by notify-send
# command
#######################################################################################

USER=`whoami`
PIDS=`pgrep -u $USER gnome-session`


#Get new mails and count them
NEW_MAILS_COUNT=$(fetchmail |grep -c octets)

#Only show notified message when get new mails
if [ $NEW_MAILS_COUNT != 0 ]
then

for pid in $PIDS; do
# find DBUS session bus for this session
DBUS_SESSION_BUS_ADDRESS=`grep -z DBUS_SESSION_BUS_ADDRESS \
/proc/$pid/environ | sed -e 's/DBUS_SESSION_BUS_ADDRESS=//'`
# use it
DBUS_SESSION_BUS_ADDRESS=$DBUS_SESSION_BUS_ADDRESS \
notify-send "新郵件提示" "$NEW_MAILS_COUNT 封新郵件"
done
fi



這個Script還蠻簡陋的,目前僅能做到定時提醒而已,但是只要彈出那一瞬間有事離開電腦沒看見,就不知道了。未來希望能夠以Tray ICON形式在工具列,定期輪詢,有新信時彈出提醒訊息,並且變換圖示為新信件。

尋找Linux上自由且合用的台語文輸入法

最近開始鼓起勇氣試圖要在Linux上使用臺語文書寫,便開始尋找合適的臺語文書輸入法。而臺語文並沒有統一的書寫方式,我僅粗略分為台羅、漢羅與教羅書寫。

理想的臺語文輸入法對我而言有幾個要素我覺得是需要的:

  1. 能輸出俱備調號的羅馬字,如 Hō-ló (Firefox支援顯示有調號的羅馬字較完整)
  2. 同時支援台羅與教羅的輸入
  3. 打羅馬字能輸出漢字
  4. 支援全羅馬字輸出
  5. 授權為自由軟體
撇除掉第5點,Windows上已經有不錯的臺語文輸入法了,推薦信望愛臺語文輸入法,版權是信望愛資訊中心所有,免費給大眾使用。教育部也有出臺語文輸入法,叫做教育部臺灣閩南語羅馬字拼音輸入法,版權是教育部所有,免費供公眾散布使用,平臺支援Windows, Linux, MacOSX。 

那Linux上著名的中文輸入法有沒有跟臺語文相關的呢?我有找到一些資料,
  • scim:教育部台灣閩南語羅馬字拼音輸入法就是支援scim(教育部開發的臺語文輸入法非自由軟體)
  • xcin:普實台文與TLPA臺語
  • OpenVanilla:普實台文、白話字漢羅與台式閩南語注音
  • gcin:在官方網頁輸入法下載頁面中有kks台羅漢羅輸入法表格檔與kks教羅漢羅輸入法表格檔供人自行下載
我目前僅使用過gcin的kks台羅漢羅輸入法,以表格檔為基礎,目的是用臺語文輸出漢字,無法支援全羅馬字輸出。找時間將Linux上剩下的輸入法支援的臺語文輸入法試過以後,再補上說明。
 

[第參期] 安裝Debian Etch 在 Asus eee box上

此篇教學目的為安裝Debian Etch在eee box上,可正常使用X-window與ethernet網路。

  1. 首先去下載Debian Etch CD1 iso,目前版本是4.0_r6,燒錄於光碟中。
  2. 使用USB CDROM開機進行安裝,安裝時不使用鏡像站。
  3. 安裝完畢,重新使用硬碟開機。
  4. 登入後,使用APT指令安裝build-essential與linux-headers-2.6.18-3-686這兩樣套件。
  5. 使用另一台可上網的電腦至Realtek網站下載中心,下載R8168 chip driver
  6. 使用隨身碟將下載好的r8168-a.bbb.cc.tar.bz2 複製至eee box主機硬碟中(需手動掛載隨身碟)。
  7. 解壓縮r8168-a.bbb.cc.tar.gz,依造內附文件readme下指令驅動Ethernet網卡。
  8. 若安裝完畢後後,則可使用lsmod |grep r8168檢查是否成功載入Ethernet網卡driver。
  9. 修改/etc/X11/xorg.conf的內容,於Section "Device"中,將Driver "i810" 修改為 Driver "vesa"。修改後,重新啟動GDM(/etc/init.d/gdm restart)。
  10. GDM啟動,使用帳號密碼登入。

[第貳期] 自由軟體四大自由

有鑑於我自己常常跟別人推廣自由軟體,但是常常忘記自由軟體基本四大自由,僅列於此。

自由軟體四大自由原文出處網址:
http://www.gnu.org/philosophy/free-sw.html

自由軟體四大自由(中文是我自己翻譯的)

Free software is a matter of the users' freedom to run, copy, distribute,study, change and improve the software. More precisely, it refers to fourkinds of freedom, for the users of the software:

  • The freedom to run the program, for any purpose (freedom 0).

    自由之零:任意執行的自由。
  • The freedom to study how the program works, and adapt it to your needs(freedom 1). Access to the source code is a precondition for this.

    自由之壹:存取程式原始碼的自由,研究程式碼如何運作。
  • The freedom to redistribute copies so you can help your neighbor(freedom 2).

    自由之貳:重新散佈的自由。如果我覺得這個程式很棒,我可以分享給我的鄰居。
  • The freedom to improve the program, and release your improvements tothe public, so that the whole community benefits (freedom 3). Access to thesource code is a precondition for this.

    自由之參:改進程式的自由。我可以自由地跟大家分享我改進的功能程式碼,因此如果有使用這個軟體的人,也可以享受到我改進的功能。

[第壹期]digg-like 的自由軟體新聞網站 — Free Software Daily

Free Software Daily



畢竟自由軟體的使用者算小眾,使用Web2.0經營方式的新聞網站,如digg,或台灣的funp,出現的常常是偏大眾口味的文章不然討論跟自由軟體相關的熱門新聞,就只有Ubuntu出什麼新功能 =.=,不然就是一些你為什麼要用Windows,然後Linux好棒的文章。想看點進階一點的文章,就得自己去其他提供文章的網站挖。

以Web2.0經營方式的Free Software新聞網站,遲遲沒有出現。唉!要看個自由軟體新聞還真難阿。Free Software Daily剛好填補了這個遺憾,以Web2.0 方式經營自由軟體新聞,由使用自由軟體的網友們提供新聞文章。

新聞粗略的分類為Beginner、End User、Hign end、business、Community、Philosiphy、Legal、Government、Industry與Opposition,有這樣分類還真不錯,可以挑選自己想看的分類去看相關文章,也有提供分類RSS。

網站還在初創階段,不過我覺得已經很不錯了,目前網友提供的文章的質量我覺得還算不錯,大家有空可以上Free Software Daily看看喔!

MySQL 中文Big5轉至UTF-8

因為工作需要,必須要將原本MS Access中的資料轉換至MySQL。MS Access 預設編碼為Big5 ,MySQL中以UTF-8存放資料,Collation為utf8_unicode_ci。並且在phpMyAdmin中觀看正常。將從MS Access自己寫程式匯出的sap.sql檔案(編碼UTF-8),

要匯入MySQL之前。有以下步驟:

mysql> SET CHARACTER SET 'utf8';

設定DataBase 預設編碼

mysql> ALTER DATABASE test DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

設定資料表預設編碼

mysql> use test;
mysql> ALTER TABLE `test_table` DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

匯入sap.sql

mysql> \.sap.sql

這樣就可以在phpMyAdmin中觀看正常的UTF-8中文,校對為utf8_unicode_ci。

Note:

不知道為什麼使用set names UTF-8 會使得匯入sql的中文字變成問號,不使用就正常了。