在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 2 Procmail篇
Posted by : qerter
on 星期二, 10月 20, 2009 |
0 Comments
使用Mutt收GMail IMAP電子郵件, Part 1 基礎設定篇
Posted by : qerter
on 星期四, 10月 01, 2009 |
0 Comments
為響應Richard Stallman 2008年9月在英國衛報反對使用者投入雲端運算的懷抱(Cloud computing is a trap, warns GNU founder Richard Stallman),我決定改變收電子郵件的習慣。我個人最依賴的雲端服務當為Google的GMail服務。而馬上離開不使用GMail不是件易事,我構思分階段實行降低對GMail依賴程度。
- 第一階段:降低對GMail Web的依賴程度
我挑選軟體耦合度最低同時也十分輕巧的Mutt,來當我平時收發電子郵件的軟體。使用Mutt的好處是:
- 收信的工作交給fetchmail(支援POP3、IMAP等收信協定)
- 寄信的工作交給msmtp(支援SMTP等寄信協定)
- 寫信的工作交給Vim(這個不用解釋了吧!)
- 通訊錄的工作可以交給Abook(但不支援vCard格式匯入)
設定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形式在工具列,定期輪詢,有新信時彈出提醒訊息,並且變換圖示為新信件。
訂閱:
文章 (Atom)