今天我们来学习一种基于可用虚拟账号的邮件服务器Extmail.
Extmail 是一个以perl语言编写,面向大容量/ISP级应用,免费的高性能Webmail软件,主要包括ExtMail、Extman两个部分的程序套件。ExtMail套件用于提供从浏览器中登录、使用邮件系统的Web操作界面,而Extman套件用于提供从浏览器中管理邮件系统的Web操作界面。它以GPL版权释出,设计初衷是希望设计一个适应当前高速发展的IT应用环境,满足用户多变的需求,能快速进行开发、改进和升级,适应能力强的webmail系统。
由该图我们可以看出,extmail所依赖的软件和服务有点多,所以安装配置有些麻烦,所以这也是有些人不愿意使用的原因,不过我们今天就和大家一起安装配置以下。
首先我们源码安装mysql 和apache 和devecot 。注意:源码安装的必备环境
这些包我们就用rpm安装啦。
yum install tcl tcl-devel libart_lgpl libart_lgpl-devel libtool-ltdl libtool-ltdl-devel expect bind bind-chroot caching-nameserver perl-DBD-mysql
源码安装mysql和apache我们之前有很详细的介绍,这里我们就不麻烦啦。然后等mysql和apache配置完以后我们进行配置dns。
当然dns我们使用yum安装,之前我们也有介绍,所以我们直接修改了,就不多啰嗦了 ,修改的结果为:
然后创建a.com域 进行配置
然后尝试 启动dns
我们让dns进行解析的时候就需要进行dns指向
修改一下主机名
然后我们测试一下dns
成功
然后测试一下本地邮局
可以运行
然后我们安装postfix
再安装之前我们必须把sendmail的所有东西卸载,或者关闭
然后我们用最新版本的postfix
首先创建用户组和用户
groupadd -g 1200 postdrop
groupadd -g 1000 postfix
useradd -u 1200 -g postfix -s /sbin/nologin -M postfix
useradd -u 1000 -g postdrop -s /sbin/nologin -M postdrop
在我们查看过安装文档之后会发现 make makefiles 即为./configure 这时候会需要一系列的配置
make makefiles 'CCARGS=-DHAS_MYSQL -I/usr/local/mysql/include -DUSE_SASL_AUTH -DUSE_CYRUS_SASL -I/usr/include/sasl -DUSE_TLS ' 'AUXLIBS=-L/usr/local/mysql/lib -lmysqlclient -lz -lm -L/usr/lib/sasl2 -lsasl2 -lssl -lcrypto'
在进行make install的时候会提醒我们进行选择一些路径而我们一般不用修改不过可以把postfix的临时目录修改为/tmp,其余的我们就按照默认的吧。
编译完成后,我们执行以下这条命令 /usr/bin/newaliases
这时会生成一个文件以便于和postfix结合
这样以后就可以启动了,不过我们为了方便都会有控制文件的,我们用的是源码安装的,所以再我们解压的包里面有这样postfix-script的脚本,不过这样很麻烦,所以我们直接用官方提供的配置文件,下面我们提取官方的控制文件
[root@mail abc]# rpm2cpio postfix-2.3.3-2.1.el5_2.i386.rpm |cpio –id
执行完成后会生成如下的文件,我们可以看到postfix,它就是控制文件,我们直接将其拷贝到/etc/init.d目录下即可
请大家谨记在拷贝的时候一定要连同权限拷贝走,要不然会出现麻烦的哦
启动成功了
然后我们修改下在安装过程中产生的配置文件
这时候我们可以发送一下本地的邮件来测试一下安装是否成功,我测试了下,是没问题的,你也试一下吧,如果有错的话,依照前面的步骤修改吧。记住要细心哦。
由于上面我们没有设置身份验证,现在我们进行配置一下
我们可以将/usr/lib/sasl2目录下sendmail和sasl2结合的配置文件拷贝过来然后简单的修改一下即可
修改一个主文件main.cf其他的身份验证的语句
然后将saslauthd启动,并设置开机启动。然后我们测试一下是否能验证成功,由图可以看到一应有验证的语句了,证明sasl和postfix结合成功,能进行验证了。
这个验证完成了,接下来我们要理解用虚拟账号的话,就需要与数据库的连接,postfix与mysql数据库的连接需要一个小工具courier-authlib,所以我们现在开始安装这个小工具
这里呢我们已经下载好啦源码的安装包所以和以前一样,直接进行
./configure \
--prefix=/usr/local/courier-authlib \ 安装路径
--sysconfdir=/etc \
--with-authmysql \ 结合数据库 进行身份验证
--with-mysql-libs=/usr/local/mysql/lib \ 连接mysql的库文件
--with-mysql-includes=/usr/local/mysql/include \ 。。。头文件
--with-redhat \ 红帽
--with-authmysqlrc=/etc/authmysqlrc \ 说明连接数据库的一系列配置
--with-authdaemonrc=/etc/authdaemonrc \ 连接mysql时候调用的哪些模块
--with-ltdl-lib=/usr/lib \ 下面的两个是额外需要的文件
--with-ltdl-include=/usr/include
make make install
配置两个生成的文件
Authmysqlrc 一个用于说明文件(怎样连接数据库等,以什么账号用于连接)
authdaemonrc 一个用于连接模块 (调用什么模块用于连接)
编辑两个文件:
Vim Authmysqlrc
MYSQL_SERVER localhost
MYSQL_USERNAME extmail
MYSQL_PASSWORD extmail
MYSQL_PORT 3306
MYSQL_SOCKET /tmp/mysql.sock
MYSQL_DATABASE extmail
MYSQL_USER_TABLE mailbox
MYSQL_CRYPT_PWFIELD password
MYSQL_UID_FIELD '2525'
MYSQL_GID_FIELD '2525'
MYSQL_LOGIN_FIELD username
MYSQL_HOME_FIELD concat('/var/mailbox/',homedir)
MYSQL_NAME_FIELD name
MYSQL_MAILDIR_FIELD concat('/var/mailbox/',maildir)
Vim authdaemonrc
很好,在配置完之后我们需要启动,那么我们就取创建控制文件,
在源码的包里面我们找到init的文件,它就是控制文件了,所以进行修改
加权限
尝试启动
启动成功 加入开机启动
chkconfig courier-authlib on
然后我们要将上面两个文件所产生的的库文件和头文件加入常用目录
vim /etc/ld.so.conf.d/courier-authlib.conf
ln -s /usr/local/courier-authlib/include/ /usr/include/courier-authlib
由我们的流程图可知,我们现在需要配置让postfix支持虚拟域
[root@mail include]# vim /etc/postfix/main.cf
########################Virtual Mailbox Settings########################
virtual_mailbox_base = /var/mailbox
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_domains_maps.cf
virtual_alias_domains =
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
virtual_uid_maps = static:2525
virtual_gid_maps = static:2525
virtual_transport = virtual
maildrop_destination_recipient_limit = 1
maildrop_destination_concurrency_limit = 1
##########################QUOTA Settings########################
message_size_limit = 14336000
virtual_mailbox_limit = 20971520
virtual_create_maildirsize = yes
virtual_mailbox_extended = yes
virtual_mailbox_limit_maps = mysql:/etc/postfix/mysql_virtual_mailbox_limit_maps.cf
virtual_mailbox_limit_override = yes
virtual_maildir_limit_message = Sorry, the user's maildir has overdrawn his diskspace quota, please Tidy your mailbox and try again later.
virtual_overquota_bounce = yes
我们看到里面的一些参数我们的文件里面都没有,不要慌,这几个参数是extman产生的
还有我们之前所配置的参数里有一些数据库,不过这些数据库不要我们创建,同样的extman给我们提供了,我们只需要导入即可(在下面我们拷贝到特定目录下)
那什么,由于extman不是源代码所以我们直接解压到本目录里面进行使用
看到数据库了,所以我们直接开始导入
在导入的时候可能会出现错误
这个错误的原因是因为编写数据库的版本比当前安装的版本不相同。
将数据库文件内的所有TYPE=MyISAM修改为ENGINE=MyISAM,保存退出;
这样就可以了。
然后,在数据库导入之后我们需要进行授权,授予用户extmail访问extmail数据库的权限
然后呢,我们记得上面呢有几个地方是需要一些虚拟域,邮箱之类的文件的,所以我们现在将这些东西拷贝到特定的目录下去
[root@mail docs]# cp mysql_virtual_* /etc/postfix/
然后重启postfix。
此时我们看一下上面的整个系统图,postfix和mysql的连接现在是经过courier-authlib,所以现在需要修改smtp.conf (之前的是由cyrus-sasl连接的)
pwcheck_method:authdaemond
log_level:3
mech_list:LOGIN PLAIN
authdaemond_path:/usr/local/courier-authlib/var/spool/authdaemon/socket
然后将postfix courier-authlibsaslauthd 这几个服务重启
接下来就是邮件接收器 dovecot 这里我们也用源码安装
useradd -M -s /sbin/nologin dovecot 安装之前首先创建用户
tar zxf dovecot-1.1.4.tar.gz -C /usr/local/src
cd /usr/local/src/dovecot-1.1.4
./configure --sysconfdir=/etc --with-mysql
make
make install
然后修改配置文件 和以前一样有样例的我们直接进行拷贝修改即可
cp /etc/dovecot-example.conf /etc/dovecot.conf
然后因为dovecot在接收的时候需要和数据库进行交互所以我们对配置文件进行修改使其实现交互功能
vi /etc/dovecot.conf
mail_location = maildir:/var/mailbox/%d/%n/Maildir
……
auth default {
mechanisms = plain
passdb sql {
args = /etc/dovecot-mysql.conf
}
userdb sql {
args = /etc/dovecot-mysql.conf
}
……
可以看出需要几个目录 所以我们先创建mailbox(存放了用户注册用户域名的记录)目录
我们可以看到,mailbox的所属用户组和权限是root,显然不能满足我们的需求,我们要使注册的用户都可以有权限交互,所以修改其权限
[root@mail authdaemon]# chown -R postfix /var/mailbox/
其实很多东西在配置的时候它的配置文件里面都有说明的,大家一定要看哦!
在配置的时候我们需要的验证方式是通过mysql 所以将passdb pam 禁用掉
还有userdb我们也用的是mysql 所以将 userdb passwd 禁用掉,结果为:
vi /etc/dovecot.conf
mail_location = maildir:/var/mailbox/%d/%n/Maildir
……
auth default {
mechanisms = plain
passdb sql {
args = /etc/dovecot-mysql.conf
}
userdb sql {
args = /etc/dovecot-mysql.conf
}
同时我们还需要修改postfix主配置文件 用以存放用户和邮件相关的文件
vim /etc/postfix/main.cf
home_mailbox = Maildir/
记得在修改配置文件之后都要重启该服务的
这样我们就让dovecot和mysql结合 然而 dovecot-mysql.conf里面要有一些查询mysql的一些方法,我们编写这些方法呗
vi /etc/dovecot-mysql.conf
然后我们重启一下dovecot试试
/usr/local/sbin/dovecot -c /etc/dovecot.conf
~
这样之后我们就剩下最后的extmail和extman
这里extmail也是一个脚本所以我们直接解压到当前目录,apache和该脚本结合的时候需要cgi。Extmail和extman正常运行时需要一个官方定的目录,然后将解压完的目录移动到官方所定的目录下面命名为extmail
tar zxvf extmail-1.2.tar.gz
mkdir -pv /var/www/extsuite
mv extmail-1.2 /var/www/extsuite/extmail
mv extman-1.1 /var/www/extsuite/extman
配置webmail.cf
cp /var/www/extsuite/extmail/webmail.cf.default /var/www/extsuite/extmail/webmail.cf 配置界面上的语言等
配置webman.cf
cp /var/www/extsuite/extman/webman.cf.default /var/www/extsuite/extman/webman.cf
vi /var/www/extsuite/extman/webman.cf
SYS_MAILDIR_BASE = /var/mailbox ----> 注册时邮件的基目录
SYS_CAPTCHA_ON = 0 ---->验证码 关闭
修改 cgi执行文件属主为postfix运行身份用户:
chown -R postfix.postfix /var/www/extsuite/extmail/cgi/
chown -R postfix.postfix /var/www/extsuite/extman/cgi/
配置完成之后就要配置apache和extmail和extman的连接了
vim /etc/httpd/conf/httpd.conf
开始测试
登陆
http://192.168.102.100/
注册
可以注册
然后我们建立虚拟域然后开始收发邮件的测试
管理员登陆 默认的账号密码为 root@extmail.org extmail*123*
创建一个a.com域和b.com
user1@a.comuser2@a.com
在b域里面创建一个用户
然后登陆开始收发
首先相同域内发送
由上面几张图片可以看到都收发成功!
这样我们的extmail邮件服务器就算搭建成功了。
安装配置时大家要注意几点:
首先是mysql的mysql.sock问题,找不到pid问题,数据库导入的问题,版本兼容的问题。
其次是postfix配置时候的uid和gid问题,
最后就是连接apache时候文件目录的创建,文件的所属用户问题。
大家可以根据问题自行解决,也可以查看我的其他博客解决。