用 postfix 及 vm-pop3d 建立虚拟电子信箱 *
所谓的“虚拟电子信箱”指的是用户在服务器上没有实体的帐号,但是却可以透过 POP3 或是 Open Webmail 来使用电子邮件服务。这样的组态,一方面比较不会有安全性的问题,同时也可以在一部服务器上支援较多的用户。
vm-pop3d 的原理
其实,vm-pop3d 的功能算满单纯的,如要登入一部有安装 vm-pop3d 的服务器收取邮件,有两种验证用户的方式:
- 你可以输入本机用户的帐号(username)来登入,则它先去查询 /etc/passwd 及 /etc/shadow,以验证帐号、密码是否正确,如正确无误,再检查 /var/spool/mail/username 是否有邮件。
- 如果你输入的是电子邮件地址 ([email protected]) 做为登入帐号,它就会依据这个电子邮件地址,拆解成 “username” 及 “virtual.example.com” 两个部份,然后查询 /etc/virtual/virtual.example.com/passwd,以验证帐号、密码是否正确,如正确,则继续检查 /var/spool/virtual/virtual.example.com/username 是否有邮件。
所以,你要做的,就是想辨法把虚拟电子信箱的邮件放到相对应的子目录即可。
postfix 基本设定
系统必须先安装好 postfix (请参考这一篇),借由 postfix 将虚拟电子信箱的邮件放到相对应的子目录,以下步骤仅说明如何设定虚拟电子信箱。
- 先移除 imap:
apt-get remove imap
- 编辑 /etc/postfix/main.cf,加入:
default_privs = nobody mail_spool_directory = /var/spool/mail propagate_unmatched_extensions = virtual virtual_mailbox_base = /var/spool/virtual virtual_mailbox_maps = hash:/etc/postfix/virtual_mailbox virtual_maps = hash:/etc/postfix/virtual
- 建立相关子目录:
mkdir /var/spool/virtual mkdir /etc/virtual
- 重新启动 postfix:
service postfix restart
安装 vm-pop3d
- 从本站下载 vm-pop3d 的安装档至 /tmp,并执行安装:
cd /tmp wget http://www.vixual.net/download/source/vm-pop3d/vm-pop3d-1.1.6-1.i386.rpm rpm -Uvh vm-pop3d-1.1.6-1.i386.rpm
- 删除 vm-pop3d 默认的启动程式:
rm -rf /etc/init.d/vm-pop3d
- 建立 /etc/xinetd.d/vm-pop3d,内容如下:
service pop3 { disable = no socket_type = stream protocol = tcp wait = no user = root instances = 25 server = /usr/sbin/vm-pop3d server_args = -u nobody log_type = SYSLOG local4 info log_on_success = PID HOST EXIT DURATION log_on_failure = HOST ATTEMPT }
- 重新加载 xinetd,以启动 vm-pop3d:
service xinetd restart
建立虚拟服务器
- 编辑 /etc/postfix/virtual_mailbox,在最下面加入:
virtual.example.com /var/spool/virtual/virtual.example.com
- 编辑 /etc/postfix/virtual,在最下面加入:
virtual.example.com anything [email protected] username.virtual.example.com
- 编辑 /etc/postfix/aliases,在最下面加入:
username.virtual.example.com: /var/spool/virtual/virtual.example.com/username
- 编辑 /etc/postfix/access,在最下面加入:
virtual.example.com ok
- 重新建立数据库:
postmap hash:/etc/postfix/virtual_mailbox postmap hash:/etc/postfix/virtual postalias hash:/etc/postfix/aliases postmap hash:/etc/postfix/access
- 建立相关子目录及密码档:
mkdir /var/spool/virtual/virtual.example.com chown nobody.mail /var/spool/virtual/virtual.example.com mkdir /etc/virtual/virtual.example.com touch /etc/virtual/virtual.example.com/passwd chmod 644 /etc/virtual/virtual.example.com/passwd
- 重新启动 postfix:
service postfix restart
建立虚拟电子信箱的用户
对 vm-pop3d 而言,验证用户的方式,只是检查虚拟电子信箱的目录下,该用户的密码是否被建立。可使用下列指令建立用户的密码:
htpasswd /etc/virtual/virtual.example.com/passwd username
POP3 连线方式
- 如果你是服务器上本机的用户,当连线时,帐号的部份只要使用原本的用户帐号 (username) 来做验证即可。
- 如果你是虚拟电子信箱的用户,当连线时,帐号的部份需输入完整的电子邮件地址 ([email protected]) 做为验证。
虚拟电子信箱与 Open Webmail
Open Webmail 的虚拟用户功能主要是搭配 vm-pop3d 与 PostFix 来使用。系统中 auth_vdomain.pl 这个认证模组便是用来对 vm-pop3d 与 postfix 上的虚拟用户进行认证的工作。此外 Open Webmail 还提供 Web 接口,让被授权的用户可就对虚拟邮件服务器下的用户进行管理。
使用 Open Webmail 读取邮件
建立 /var/www/cgi-bin/openwebmail/etc/sites.conf/virtual.example.com,内容如下:
auth_module auth_vdomain.pl auth_withdomain yes mailspooldir /var/spool/virtual/virtual.example.com use_syshomedir no use_homedirspools no enable_autoreply no enable_setforward no enable_vdomain yes vdomain_admlist sysadmin #指定哪些用户有管理者的权限 vdomain_maxuser 100 vdomain_vmpop3_pwdpath /etc/virtual vdomain_vmpop3_pwdname passwd vdomain_vmpop3_mailpath /var/spool/virtual vdomain_postfix_aliases /etc/postfix/aliases vdomain_postfix_virtual /etc/postfix/virtual vdomain_postfix_postalias /usr/sbin/postalias vdomain_postfix_postmap /usr/sbin/postmap
请注意,上面的设定档有一个 “vdomain_admlist” 的参数,这个参数是用来指定哪些虚拟电子信箱拥有管理者的权限,管理者可建立、修改或删除虚拟电子信箱。
登入 Open Webmail 时
- 如果你是本机用户,则仅需输入本机用户帐号 (username) 与密码即可登入。
- 如果你要以虚拟电子信箱登入,且连结的网址与虚拟电子信箱的网址相同,则仅需输入用户名称 (username) 与密码即可。
- 如果你要以虚拟电子信箱登入,但连结的网址与虚拟电子信箱的网址不相同,则你必须输入完整的电子信箱 ([email protected]) 与密码才能登入。
请问一下
小弟按照大大所教的来做
但是我寄信到虚拟网域时
他一直说unknow user
我有建立该帐号啊
是哪里有需要注意的吗
谢谢