# Postfix + Vm-pop3d

> 

Published: 2005-02-24
URL: https://kaochenlong.com/postfix-and-vm-pop3d

---

一般架設 mail server，通常是在 server 上開立一個帳號（ex: useradd eddie），就差不多可以讓使用者來收發信件了。但一部電腦只設定一組 domain name 的 mail，是有些浪費。但如果在同一台機器上要設定兩個以上不同 domain name 的 email，上面這個方式就行不通了，但透過 postfix 的 virtual alias table，還是可以做到這個功能的。

&lt;!-- more --&gt;

### 1. Postfix 安裝

到[postfix](http://postfix.wl0.org/en/available-packages/)網站可以找到下載點，有 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](http://www.reedmedia.net/software/virtualmail-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 &#39;^]&#39;.
    +OK POP3 Welcome to vm-pop3d 1.1.4 &lt;26272.1109219984@mail.eddie.com.tw&gt;
    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，在其它收信軟體設定時要特別注意。

### 參考資料：

[HOW TO Setup Postfix and vm-pop3d with virtual mailboxes](http://sonicresolutions.com/tech/howto_postfix_vmpop3d.html)

