Postfix+Vm-pop3d 使用非系統帳號做虛擬郵件 Virtual Mail

12/3/2006来源:Qmail人气:7064

Description :

虛擬郵件主機 ﹝Virtual Mail﹞,就是在一台 Server 上擁有多個 Domain 的 Mail 機智,為什麼要使用虛擬郵件主機 ? 最主要的原因就是,可節省成本!想想如果你在一台機器上可擁有多個 Domain,是不是可以省去很多買 Server 的錢呢 ? 本次的實驗我們採用 Vm-pop3 + Postfix 來完成非系統帳號做
虛擬郵件主機,有了 Vm-pop3d 這支程式,它可以讓我們將 Mail Server 的帳號獨立出來,並且省去使用資料庫方式建立 Virtual Mail,而且還可以使用一些特殊字元來建立 Mail 帳號, 如:@ 、:、 等。而使用非系統帳號,也可以提高系統安全性。

Environment :

使用下面兩個 Domain 做實驗 , 兩個 Domain 於 DNS 都必須設 MX。

vpn2.ntut.idv.tw
bsd.ntut.idv.tw

硬體:i386 PC Intel P3 500
記憶體網卡:512M RAM + Intel 網卡
作業系統:FreeBSD 6.0 Release

Setp 1.

建立 Virtual Mail 必須要安裝 Postfix 和 Vm-pop3d 與 Apache 三個軟體。

#/usr/ports/mail/postfix

#make install
※ make install 之後會出現選單,全部都不選。

#/usr/ports/mail/vm-pop3d
#make install
#cp /usr/local/etc/rc.d/vm-pop3d.sh.sample /usr/local/etc/rc.d/vm-pop3d.sh

安裝 postfix 和 vm-pop3d 之後,接下來安裝 apache,為什麼要安裝 apache 呢 ? 主要的目的是要使用 apache 裡的 htpasswd 這支程式我們要利用它來建立 Virtual Mail 使用者的帳號及密碼。
#/usr/ports/www/apache13
#make install

Setp 2.

◎ 編輯 Postfix 的 main.cf #vi /usr/local/etc/postfix/main.cf 加入以下的設定:

mynetworks = 88.88.88.0/26, 10.99.99.0/24, 203.95.xx.xx/24, 127.0.0.0/8
mail_spool_directory = /var/spool/mail

PRopagate_unmatched_extensions = virtual
virtual_mailbox_base = /var/spool/virtual
virtual_mailbox_maps = hash:/usr/local/etc/postfix/virtual_mailbox
virtual_maps = hash:/usr/local/etc/postfix/virtual
alias_maps = hash:/usr/local/etc/postfix/aliases

◎ 建立 Virtual Mail 使用者對應的設定檔:

#vi /usr/local/etc/postfix/virtual
[email protected] justin.vpn2.ntut.idv.tw
[email protected] justin.bsd.ntut.idv.tw

#vi /usr/local/etc/postfix/virtual_mailbox

vpn2.ntut.idv.tw /var/spool/virtual/vpn2.ntut.idv.tw
bsd.ntut.idv.tw /var/spool/virtual/bsd.ntut.idv.tw

#vi /usr/local/etc/postfix/aliases

justin.vpn2.ntut.idv.tw: /var/spool/virtual/vpn2.ntut.idv.tw/justin
justin.bsd.ntut.idv.tw: /var/spool/virtual/bsd.ntut.idv.tw/justin

◎ 建立收信存放的 mail 目錄:

#make /var/spool/mail
#make /var/spool/virtual/vpn2.ntut.idv.tw/
#make /var/spool/virtual/bsd.ntut.idv.tw/
※ 記得改變所建立目錄的權限,以免收件人存入目錄的權限不足。

◎ 建立 pop3 認證的密碼檔:

#make /usr/local/etc/virtual/vpn2.ntut.idv.tw/
#cd /usr/local/etc/virtual/vpn2.ntut.idv.tw/
#htpasswd -cd passwd justin
#make /usr/local/etc/virtual/bsd.ntut.idv.tw/
#cd /usr/local/etc/virtual/bsd.ntut.idv.tw/
#htpasswd -cd passwd justin
※ vm-pop3 這隻程式的密碼認證檔,路徑必須放在 /usr/local/etc/virtual/xxx.xxx.xxx/passwd,建立第二位使用者時就不用加 -cd 的參數, 如: #htpasswd passwd kevin

◎ 建立完所有設定檔後,記得將方才所建立的使用者導入 Postfix 的 DB 才算新增資料完畢:

#postmap /usr/local/etc/postfix/virtual
#postmap /usr/local/etc/postfix/virtual_mailbox
#postalias /usr/local/etc/postfix/aliases

Setp 3.

重跑 postfix #postfix reload

寫個 shell script 讓系統開機時 Postfix 自動 Runing Up #vi /usr/local/etc/rc.d/postfix.sh

case "$1" in

start)
/usr/local/sbin/postfix start > /dev/null 2>%26amp;1
echo -n ' Postfix'
;;
stop)
/usr/local/sbin/postfix stop > /dev/null 2>%26amp;1
echo -n ' Postfix stoped'
;;
reload)
/usr/local/sbin/postfix reload > /dev/null 2>%26amp;1
echo -n ' Postfix reloaded'
;;
-h)
echo "Usage: `basename $0` { start | stop | reload }"
;;
*)
/usr/local/sbin/postfix $1 > /dev/null 2>%26amp;1
echo -n ' Postfix $1'
;;
esac

測試:telnet 110 port 試看看可否使用

#telnet vpn2.ntut.idv.tw 110

>user [email protected]
>pass xxxx
>list
>stat

>quit

若使用 Windows 裡的 Outlook 測試,設定收件帳號時必須是 [email protected] 這樣的帳號 , 而非只有 justin

( 參考文件 )

http://www.reedmedia.net/software/virtualmail-pop3d/#delivery