近期给一个朋友的公司搭建一套邮件服务系统,于是在这方面做了一些调查和选型的工作,对比了诸多邮件服务器的解决方案,最后决定采用 iRedmail (
http://www.iredmail.org/
) 里面所提供的 Postfix + Dovecot + Postfixadmin + Roundcubemail 邮件系统解决方案,原因有两个:其一,这个解决方案可以说是目前最成熟的 Linux 系统解决方案,性能没话说,而且完全免费;其二,iRedmail 提供的安装脚本可以帮助我们快速的在 Linux 系统上安装整套系统,能节省我们不少时间~
下面花时间整出一张系统结构图,主要描述了这个系统的一些原理的要点:
对上图简单说明一下,这套系统在 Server Layer 我们使用 Postfix + Dovecot + Amavised + Policyd 的强力组合,基本上对收发邮件过程中的身份验证(POP3 / IMAP),内容过滤(Amavisd)以及收发策略(Policyd)等功能都作了覆盖,在 Postfix 的主要配置文件中我们把这些套件全部做了整合,配置内容如下:
... ...
smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain =
smtpd_recipient_restrictions = reject_unknown_sender_domain, reject_unknown_recipient_domain, reject_non_fqdn_sender, reject_non_fqdn_recipient, reject_unlisted_recipient, permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination, reject_non_fqdn_helo_hostname, reject_invalid_helo_hostname, check_policy_service inet:127.0.0.1:10031
smtpd_sasl_security_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination
... ...
#
# Uncomment the following line to enable policyd sender throttle.
#
#smtpd_end_of_data_restrictions = check_policy_service inet:127.0.0.1:10032
mailbox_command = /usr/libexec/dovecot/deliver
virtual_transport = dovecot
dovecot_destination_recipient_limit = 1
smtpd_sasl_type = dovecot
smtpd_sasl_path = dovecot-auth
content_filter = smtp-amavis:[127.0.0.1]:10024
... ...
以下我们简要叙述一下在 CentOS 系统上的安装过程,以便日后参考:
> 前期安装准备工作
假设我们要配置域名 hostname 的邮件服务器,那可以先把域名 hostname 的 MX 记录设置为我们服务器的 IP
如果是内部 mail 服务器,那么则需要配置 DNS 服务器,不再赘述。
# hostname -f
# vi /etc/sysconfig/network
...
HOSTNAME=hostname
...
# vi /etc/hosts
...
127.0.0.1 hostname localhost localhost.localdomain
...
> 安装 iRedMail 系统
# 配置好 CentOS 5.x 的 YUM
# 从官网下载 iRedMail-0.6.1.tar.bz2
# tar jxvf iRedMail-0.6.1.tar.bz2
# cd iRedMail-0.6.1
# vi conf/global (如果使用系统已装的Apache+Mysql+Php包)
...
export USE_EXIST_AMP='YES'
...
# vi conf/mysql (如果使用系统已装mysql包)
...
export MYSQL_FRESH_INSTALLATION='NO' # <- Set to 'NO' so that iRedMail won't install mysql-server.
export MYSQL_SERVER='192.168.122.249' # <- MySQL server address.
export MYSQL_PORT='3306' # <- MySQL server port.
export MYSQL_SOCKET='/var/lib/mysql/mysql.sock'
export MYSQL_ROOT_USER='root' # <- MySQL root user, iRedMail will use it to import some databases.
export MYSQL_ROOT_PASSWD='secret' # <- MySQL root user's password.
...
# cd pkgs/
# chmod +x get_all.sh
# ./get_all.sh
# cd ..
# chmod +x iRedMail.sh
# ./iRedMail.sh
...
然后就是按照界面操作了,注意我们推荐你选择更加灵活的 Mysql 数据存储方式。
具体安装过程见:
http://code.google.com/p/iredmail/wiki/Installation
。
...
使用 mysql 管理邮件,比如数据库为 (假设为 vmail)。
安装完后可以使用 phpmyadmin 工具方便管理数据库 (phpmyadmin 配置过程略)。
若 dovecot 未启动,则检查 /etc/dovecot.conf 以及 /etc/dovecot-mysql.conf 并正确配置 mysql 数据库 (与 postfix 数据库一致即可,假设为 vmail)。
...
> 配置 Apache 邮件应用
这里一定用到的应用包括 phpmyadmin,postfixadmin 和 Roundcubemail。
配置文件都在 /etc/httpd/conf.d/ 下:php.conf,phpmyadmin.conf,postfixadmin.conf,roundcubemail.conf 一般是不需要动的。
唯一可能有问题的是需要把 httpd.conf 里的 User 和 Group 设置一下 (这时候默认是 vmail 用户),还有要把 /var/www 下所要用到的目录权限设置一下 (全部设置为 vmail 用户)。
> 使用 postfixadmin 管理域名
# cd /var/www/postfixadmin/
# 开启 setup.php 的权限,然后直接 web 界面操作。
# 配置 config.inc.php (以及 config.local.php) 添加管理员用户,注意 db 的地址必须和 iRedMail 安装时的数据库 (假设为 vmail) 一致。
# 登录 http://hostname/postfixadmin/ 建立域名,新建用户 (假设为 james@hostname)。
> 使用 Roundcubemail 管理用户邮件
# cd /var/www/roundcubemail
# chmod -R 755 installer
...
然后使用 http://hostname/webmail/installer/ 直接进入 web 安装页面,具体的配置文件在 config/ 目录下,可以配合修改。
...
# 使用前面建立的 james@hostname 用户登录,即可收发邮件。
> 注意事项与总结
以下是以上几个 Mail 组件之间的数据库结构示意图,大家可以参考一下:
如果以上的安装过程顺利,再把防火墙配置一下,那么我们就可以正常使用这个邮件系统来收发邮件了。需要注意的是:在这个过程中要注意如果你的服务器上原本就装有可能起冲突的软件,iRedmail 会把这些部件更新,并备份/覆盖原先的配置文件,有可能被覆盖的配置文件包括:/etc/postfix/main.cf,/etc /dovecot.conf,/etc/my.cnf,/etc/php.ini,/etc/httpd/conf.d/* 等等。所以安装之前最好把可能冲突的正在运行的服务关掉,并作好一切准备工作才可以,否则 “后果很严重” 哦。当然最好是拿一台干净的机器安装啦,不过现实还是 “很残酷” 的啊 ...
另外,如果遇到一些由于环境引起的错误,要根据具体情况进行排错处理。比如 Dovecot 启动不起来,则要检查 /etc/dovecot.conf 以及 /etc/dovecot-mysql.conf 配置文件;如果还有数据库没有建立完整,这个也必须要注意一下,假设我们都使用 mysql 来存储数据,那么在配置的时候一般是 Postfix,Dovecot 和 Postfixadmin 共用一个数据库(默认为 vmail),而 Roundcubemail 有自己的数据库 roundcubemail,一般来说第一次登录 Roundcubemail 的时候,它会去本地的 IMAP 端口检查用户登录信息(实际上在这里就是从 vmail 库中去查),查到后 Roundcubemail 会把这个用户的信息更新到自己的数据库中,然后进行邮件的管理。邮件数据的具体地址在 /etc/postfix/main.cf 中设置,默认在 /var/vmail/vmail1/hostname/username/Maildir/ 下。
PS:Roundcubemail 的界面很绚丽哦,Enjoy yourselves ~
[邮件] Postfix + Dovecot + Postfixadmin + Roundcubemail 企业邮件解决方案