一般架設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
[email protected] admin
這樣一來,寄給[email protected]
的信,就會轉到本機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
[email protected] eddie.com.tw/eddie
[email protected] 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 <[email protected]>
user [email protected]
+OK
pass xxxxx
+OK opened mailbox for eddie
quit
+OK
Connection closed by foreign host.
看到這樣的訊息,就代表設定完成了。如果有什麼錯誤訊息,看一下/var/log/maillog
裡面的東西應該可以找到問題。
要注意的是,一般email信箱如[email protected],是使用「@」前面的eddie當做使用者id來收信,但透過vm-pop3d,則是把整個[email protected]都成使用者id,在其它收信軟體設定時要特別注意。
參考資料:
HOW TO Setup Postfix and vm-pop3d with virtual mailboxes