Postfix+Vm-pop3d 使用非系统帐号做虚拟邮件 Virtual Mail

来源: 作者: 2007-12-03 出处:pcdog.com

.net  apache  dns  freebsd  vpn  
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>%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 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

更多内容请看PCdog.com--Virtual  电子邮件使用基础篇  垃圾邮件专题
上一篇:Postfix+Uvscan-dat+Amavisd
下一篇:Postfix+Vm-pop3d+OpenWebMail