Postfix+Vm-pop3d 使用非系統帳號做虛擬郵件 Virtual Mail
出处:freebsd.ntut.idv.tw 作者:freebsd.ntut.idv.tw 时间:2006-10-16 16:01:00
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
justin@vpn2.ntut.idv.tw justin.vpn2.ntut.idv.tw
justin@bsd.ntut.idv.tw 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>&1
echo -n ' Postfix'
;;
stop)
/usr/local/sbin/postfix stop > /dev/null 2>&1
echo -n ' Postfix stoped'
;;
reload)
/usr/local/sbin/postfix reload > /dev/null 2>&1
echo -n ' Postfix reloaded'
;;
-h)
echo "Usage: `basename $0` { start | stop | reload }"
;;
*)
/usr/local/sbin/postfix $1 > /dev/null 2>&1
echo -n ' Postfix $1'
;;
esac
測試:telnet 110 port 試看看可否使用
#telnet vpn2.ntut.idv.tw 110
>user justin@vpn2.ntut.idv.tw
>pass xxxx
>list
>stat
>quit
若使用 Windows 裡的 Outlook 測試,設定收件帳號時必須是 justin@vpn2.ntut.idv.tw 這樣的帳號 , 而非只有 justin
( 參考文件 )
http://www.reedmedia.net/software/virtualmail-pop3d/#delivery