Postfix + Vm-pop3d
一般架設 mail server,通常是在 server 上開立一個帳號(ex: useradd eddie),就差不多可以讓使用者來收發信件了。但一部電腦只設定一組 domain name 的 mail,是有些浪費。但如果在同一台機器上要設定兩個以上不同 domain name 的 email,上面這個方式就行不通了,但透過 postfix 的 virtual alias table,還是可以做到這個功能的。
1. Postfix 安裝
到postfix網站可以找到下載點,有 source 也有包好的 rpm,建議找 rpm 來安裝會比較順利。(版本可能會隨時間而有所改變)
$ rpm -ivh postfix-2.1.5-4.rh9.i386.rpm
透過修改 /etc/postfix/virtual
,可以做到上面提到的功能,檔案內容如下:
eddie.com.tw eddie
admin@eddie.com.tw admin
這樣一來,寄給 admin@eddie.com.tw
的信,就會轉到本機 admin 這個帳號的信箱。但是,如果有另一個 domain 上也有相同的使用者,這個方式就行不通了,這時,就可以用 vm-pop3d
來做到多個 domain 信箱的設定。
2. vm-pop3d 安裝
在vm-pop3d網站也可以找到 rpm 安裝:
$ rpm -ivh vm-pop3d-1.1.4-1.i386.rpm
安裝後需要改一下 postfix 的設定,修改 /etc/postfix/main.cf
的內容,加上下面這幾行:
virtual_mailbox_base = /home/virtual
virtual_mailbox_maps = hash:/etc/postfix/vmailbox
virtual_mailbox_domains = hash:/etc/postfix/vmaildomains
virtual_uid_maps = static:8
virtual_gid_maps = static:12
virtual_mailbox_lock = dotlock
virtual_minimum_uid = 8
接下來,要設定 /etc/postfix/vmaildomains
跟 /etc/postfix/vmailbox
這兩個檔案:
檔案 /etc/postfix/vmaildomains
eddie.com.tw eddie
freebsd.com.tw freebsd
檔案 /etc/postfix/vmailbox
eddie@eddie.com.tw eddie.com.tw/eddie
eddie@freebsd.com.tw freebsd.com.tw/eddie
再把這兩個檔案做成 hash 格式:
$ postmap vmailbox
$ postmap vmaildomains
然後,要為這些 domain 開一個資料夾,好像進來的信件可以分到這些相對應的目錄:
$ mkdir -p /home/virtual/eddie.com.tw
$ mkdir -p /home/virtual/freebsd.com.tw
再調整一下 /home/virtual
的權限:
$ chown -R mail.mail /home/virtual
$ chmod -R 775 /home/virtual
這樣信件才丟的進來。接下來,重新啟動 postfix:
$ postfix reload
這樣外面寄進來的信就會轉到個人的虛擬目錄下面了。因為 vm-pop3d 會去 /var/spool/virtual
這個資料夾裡抓信,但我是把 virtual mail 設定在/home 下面,所以要加個 link,不然會收不到信
$ ln -s /home/virtual /var/spool/virtual
再來,就是要幫使用者設定密碼,vm-pop3d 是利用 apache 裡的 htpasswd 這個工具來做密碼的,密碼檔要放在 /etc/virtual/your.domains
裡面,如果沒有 /etc/virtual
這個目錄,就自己建一個吧。就以我機器的例子:
$ cd /etc/virtual/eddie.com.tw
$ htpasswd -c passwd eddie
New password:
Re-type new password:
Adding password for user eddie
如此一來會產生一個叫做 passwd 的檔案,並把 eddie 及密碼寫在裡面。(如果要刪除使用者,直接用文字編輯器把那一行刪除就行了)
大致上這樣就 ok 了
測試:
$ telnet localhost 110
Escape character is '^]'.
+OK POP3 Welcome to vm-pop3d 1.1.4 <26272.1109219984@mail.eddie.com.tw>
user eddie@eddie.com.tw
+OK
pass xxxxx
+OK opened mailbox for eddie
quit
+OK
Connection closed by foreign host.
看到這樣的訊息,就代表設定完成了。如果有什麼錯誤訊息,看一下 /var/log/maillog
裡面的東西應該可以找到問題。
要注意的是,一般 email 信箱如 eddie@eddie.com.tw,是使用 @
前面的 eddie 當做使用者 id 來收信,但透過 vm-pop3d,則是把整個 eddie@eddie.com.tw 都成使用者 id,在其它收信軟體設定時要特別注意。