作者 | fcamel (飛啊!起舞的小駱駝) | 看板 | P_fcamel |
標題 | [mail] fetchmail + qmail + procmail + imapd |
時間 | Sat Jun 26 15:54:13 2004 |
接了系計中TA後, 第一件衝擊就是被root & daemon的大量log淹沒
幾天前問katao學長他怎麼做的,
他說他架個mail server, 大概介紹他處理的機制,
fetchmail + spam + procmail + imapd,
於是我就回寢室埋頭苦試, 順便把半年的SA/NA空窗期補一補 :p
這裡簡單記一下心得( spam部份我還沒研究 )
1. mail流程
UA -> TA(SA) -> Internet -> TA -> DA -> MessageStore -> AA
ex:
UA = pine, outlook express
TA = sendmail, qmail
SA = sendmail, qmail (local mail)
DA = mail.local, procmail
AA = imapd
這個流程的觀念要清楚, 才有辦法設定和偵錯
2. TA = qmail(*1)
我接手的機器sendmail是爛的, 加上我對sendmail完全不熟,
執行失敗不知如何偵錯, 索性用qmail從頭開始
qmail的文件很詳細, make install後放在/var/qmail/doc/,
務必把INSTALL讀熟, 84行而已, 分兩部份, 一般安裝和從sendmail改為qmail,
大部份用FreeBSD的應該照後者作, 預設FreeBSD的sendmail就裝好了
follow INSTALL裡的說明, 並且照著TEST.deliver, TEST.receive去測,
別忘了看log裡的訊息
3. fetchmail
fetchmail在ports下make install即可
它會幫你透過各種protocol去各處抓信, POP3, IMAP, 加上SSL都可以,
設定檔格式挺難懂的, 它的語法類似一般說話方式,
基本的需求只要一小部份就夠了
touch ~/.fetchmailrc; chmod 600 ~/.fetchmailrc
由於user passwd是以明碼存在fetchmailrc裡(*2),
所以執行時fetchmail發現fetchmailrc不是600, 會顯示error
#是註解
--------- fetchmailrc example ----------
poll mail.csie.nctu.edu.tw protocol POP3
user chlo is fcamel
password CHLO_PASSWD
ssl
-----------------------------------------
mail.csie.nctu.edu.tw: mail server
POP3 : 收信的protocol
user XXX is OOO : 到mail server收XXX的信, 放在本機的OOO帳號下
password CHLO_PASSWD : XXX的passwd, 注意這裡是明碼
ssl : 表示使用SSL收POP3, 去掉這行就是收一般的POP3
設定好rc後, 直接打fetchmail就會抓了
fetchmail可以在rc裡加daemon參數讓它固定時間去抓,
我是用crontab執行fetchmail就是了
抓來的信如同別人寄信給你的情形一樣,
所以TA把信放那, fetchmail就會放在那裡,
以我用qmail的例子來說, 放在 $HOME/Mailbox裡
4. procmail
要在TA收到信後, 交給procmail的話
(1) TA = sendmail: 照著man procmail NOTES裡說的, 加那一行到~/.forward裡:
"|IFS=' '&&p=/usr/local/bin/procmail&&test -f $p&&exec $p -Yf-||exit 75"
(2) TA = qmail : 若有裝dot-qmail, 同(1)的作法;
若沒有, 在~/.qmail加上 | preline procmail
man procmail, man procmailrc, man procmailex可以獲得詳細說明,
網上也有很多中英文簡單說明文件, procmailrc不在此說明
5. imapd
我是裝imap-uw, 似乎還有另一套
http://www.ascc.net/nl/90/1714/04.txt ( 本站mirror )
這裡有詳細易懂的安裝說明
imap-uw的說明文件有點少, 有些設定必須改code, 很麻煩,
參照/usr/ports/mail/imap-uw/work/imap-2002d/docs/
可能用到的設定
make SSLTYPE=unix : 使imap-uw同時支援plain-text & SSL, 預設只有SSL
另外參考docs下一堆莫明的說明文件, formats.txt, naming.txt, drivers.txt,
imap-uw有兩類mailbox format, Flat-File & File/Message(dual-use mailbox),
前者是一般格式, 只有一個檔案當mailbox, 放所有信,
File/Message是一個目錄當mailbox, 下面每個檔案如同Flat-File的功能
文件裡表示File/Message的效能不好, 2000個信就無法忍受,
不建議使用, 並且它提到支援的各種格式, 看起來都很糟
我想使用dual-use來作信件放類, 花了好多時間, 但不知道怎麼設啊.....
───┬──┬─── ───┬──┬───
│ │ ╭─╮ │ │
│ │ │ │ │ │
│ │ │ │ │ │
│ │ │ │ │ │
╰─╯
( 偷自hokuto版的表情 )
6. simple summary
我目前是fetchmail / qmail / procmail運作OK,
但最後一步imapd收到本機的outlook仍未work
PS
*1
個人疑問: mail server的DN需要有反查嗎?
目前我的猜測是, 若DNS有MX record就不需要, 若沒有就需要反查才能收信,
這部份的觀念很混亂 ˋ(′∼‵")ˊ
*2
個人覺得fetchmail以明碼存實在不是好作法, 但要應付各個不同server,
不用明碼也很難處理, 不過至少以該用雙向編碼存起來吧
|