简介
安装环境:CENTOS 7.3
Mysql
Nginx
Postfix
Dovecot
web 模块是最先需要确定的,因为它决定了邮箱系统最核心的数据结构,这里选用国产的 extmail
,其他所有模块都按照 extmail
的结构进行配置修改。
如果在main.cf
里设置virtual_transport = virtual
,就表示对于包含在 virtual_mailbox_domains
域名里的邮件,都使用 virtual
进行投递。
用户信息存储方式也有很多可选的,比如 mysql,ldap
等。这里选 mysql
,原因是各个模块,包括 extmail
等对这个支持最好最方便最简单。在投递邮件的时候,需要确定一些数据,比如收件用户的 Maildir
的路径,保存邮件用的 uid,gid
,邮箱容量等,这些数据需要 courier-authlib
来提供。
整个系统模块间的作用和关系是:postfix
作为 MTA(Mail Transfer Agent)
, 负责创建 smtp
服务(smtpd
)接收本域用户或其他域名服务器投递来的邮件,负责向其他服务器投递(发送)邮件,管理邮件队列;courier-authlib
为 maildrop
提供与用户相关的信息查询;dovecot
提供系统的 POP3
和 IMAP
服务,同时给 postfix
提供 SMTP
的 SASL
认证服务。
系统基础配置
创建邮箱存储目录 /var/mail
,子目录结构为 ./[domain]/[username]
一、准备工作
- 关闭Selinux,关闭firewalld防火墙
由于CentOS7默认安装的是MariaDB,所以要添加MySQL的yum源,有些编译需要的devel包只有epel扩展源有,所以把epel源也一并添加。
1234wget http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpmrpm -ivh mysql-community-release-el7-5.noarch.rpmwget http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpmrpm -ivh epel-release-latest-7.noarch.rpm安装编译环境及其他所需要的包
1234yum install nginx vim gcc gcc-c++ openssl openssl-devel db4-devel ntpdate \mysql mysql-devel mysql-server bzip2 php-mysql cyrus-sasl-md5 perl-GD perl-DBD-MySQL \perl-GD perl-CPAN perl-CGI perl-CGI-Session cyrus-sasl-lib cyrus-sasl-plain cyrus-sasl \cyrus-sasl-devel libtool-ltdl-devel telnet mail libicu-devel -y
二、安装postfix
1.卸载系统自带的postfix,删除postfix
用户,重新指定uid
、gid
创建新用户postfix
,postdrop
再把存放邮件目录授权给新建的用户
2.下载源码包并编译安装
make install 的时候会有个交互式的界面,自定义一些目录,我们这里只更改第二项临时文件目录为 /tmp/extmail
,其他的全部默认。
3.改目录的属主和属组
4.修改postfix的配置文件
|
|
|
|
启动 postfix
启动后注意查看 /var/log/maillog 里是否有错误消息
5.用 telnet 测试是否正常
Yum install telnet
Telnet 127.0.0.1 25
- 填写 发件人
MAIL FROM:<test@domain.com>
- 填写收件人
RCPT TO:xxxx@163.com
- 写邮件内容 DATA 回车
- 输入标题
Subject: test message
- 写内容
test body
- 以 . 结束
- 若提示
250 2.0.0 Ok: queued as 88D6D32A94
则说明已发送
- 输入标题
三、安装dovecot
1.安装 dovecot
2.配置 dovecotcd /etc/dovecot
|
|
添加下面几行
3.设置认证方式cd conf.d
vim 10-auth.conf
disable_plaintext_auth = no
4.设置邮件存放目录
|
|
5.配置不启用SSL加密vim 10-ssl.conf
ssl = no
6.配置dovecot日志vim 10-logging.conf
7.修改 mysql 认证
|
|
8.编辑 dovecot 通过 mysql 认证的配置文件
|
|
四、安装 Courier-authlib
先下载courier-unicode-1.2
并编译安装,否则编译会报如下错:configure: error: The Courier Unicode Library 1.2 appears not to be installed. You may need to install a separate development subpackage, in addition to the main package
1.下载courier-authlib
解压并编译
编译:
安装:
2.配置chmod 755 /usr/local/courier-authlib/var/spool/authdaemon
设置 Sql 模式
1vim /etc/authdaemonrc12authmodulelist="authmysql"authmodulelistorig="authmysql"配置 MySQL 参数
1vim /etc/authmysqlrc123456789101112131415MYSQL_SERVER localhostMYSQL_USERNAME extmailMYSQL_PASSWORD extmailMYSQL_SOCKET /var/lib/mysql/mysql.sockMYSQL_PORT 3306MYSQL_DATABASE extmailMYSQL_USER_TABLE mailboxMYSQL_CRYPT_PWFIELD passwordDEFAULT_DOMAIN test.comMYSQL_UID_FIELD '5000'MYSQL_GID_FIELD '5000'MYSQL_LOGIN_FIELD usernameMYSQL_HOME_FIELD concat('/var/mailbox/',homedir)MYSQL_NAME_FIELD nameMYSQL_MAILDIR_FIELD concat('/var/mailbox/',maildir)
3.Courier-authlib添加服务启动脚本及启动服务:
|
|
smtp以及虚拟用户相关的设置:vim /usr/lib64/sasl2/smtpd.conf
//文件不存在,需要创建
vim /etc/postfix/main.cf
五、安装extmail
extmail
和 extman
可到官网[http://www.extmail.org/download]自行下载
1.创建目录并解压mkdir -p /var/www/extsuite
tar xf extmail-1.2.tar.gz -C /var/www/extsuite/
mv /var/www/extsuite/extmail-1.2/ /var/www/extsuite/extmail
2.更改extmail的配置文件cd /var/www/extsuite/extmail
编辑配置文件:Vim webmail.conf
3.建立临时文件目录与session目录mkdir -p /tmp/extmail/upload
chown -R postfix.postfix /tmp/extmail/
六、安装extman
- 解压extman
tar xf extman-1.1.tar.gz -C /var/www/extsuite/
cd /var/www/extsuite/
mv extman-1.1/ extman
更改 extman 配置
cd extman
1cp webman.cf.default webman.cf更改cgi目录属主属组
chown -R postfix.postfix /var/www/extsuite/extman/cgi/
chown -R postfix.postfix /var/www/extsuite/extmail/cgi/
导入数据库
由于数据库不能识别TYPE= MyISAM
,所以这里直接导入会出错,先编辑extmail.sql
数据库文件,将TYPE=MyISAM
更改为ENGINE=MyISAM
docs/extmail.sql 1:% s/TYPE/ENGINE/g再需要修改my.cnf配置文件
12vim /etc/my.cnf#sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES //将这行注视掉,重启mysql,需要注意等数据库导入成功后,这项是不可以去掉注释的,不然mysql就启动不了。12mysql -uroot < extman/docs/extmail.sqlmysql -uroot < extman/docs/init.sql创建数据库用户 extmail 并授予权限
12mysql> GRANT ALL ON extmail.* to extmail@'localhost' identified by 'extmail';mysql> FLUSH PRIVILEGES;复制配置文件
12cd /var/www/extsuite/extman/docs/cp mysql_virtual_* /etc/postfix/为extman创建临时目录:
12mkdir /tmp/extmanchown -R postfix.postfix /tmp/extman/测试虚拟用户
/usr/local/courier-authlib/sbin/authtest -s login postmaster@extmail.org extmail
12345678Authentication succeeded. //显示这个表示成功,测试时使用的是postmaster@extmail.org,因为我们导入的数据库init.sql里面自带了这个。Authenticated: postmaster@extmail.org (uid 5000, gid 5000)Home Directory: /var/mailbox/extmail.org/postmaster //这里需要注意/var/mailbox这个目录现在我们还没有创建,后面web访问的时候如果没有会报错,所以提前创建。Maildir: /var/mailbox/extmail.org/postmaster/Maildir/Quota: (none)Encrypted Password: $1$phz1mRrj$3ok6BjeaoJYWDBsEPZb5C0Cleartext Password: extmailOptions: (none)测试smtp发信:
1234567891011121314151617181920[root@localhost ~]# printf "postmaster@extmail.org" | openssl base64cG9zdG1hc3RlckBleHRtYWlsLm9yZw==[root@localhost ~]# printf "extmail" | openssl base64ZXh0bWFpbA==[root@localhost ~]# telnet localhost 25Trying ::1...telnet: connect to address ::1: Connection refusedTrying 127.0.0.1...Connected to localhost.Escape character is '^]'.220 mail.daen.com ESMTP Postfixauth login334 VXNlcm5hbWU6cG9zdG1hc3RlckBleHRtYWlsLm9yZw==334 UGFzc3dvcmQ6ZXh0bWFpbA==235 2.7.0 Authentication successful //成功quit221 2.0.0 ByeConnection closed by foreign host.
七、启动nginx实现web访问
Nginx
本身并不能解析cgi,extmail 自带了解析 cgi 的程序,但是有些地方需要修改下:
启动dispatch-init:
添加nginx虚拟主机:vim /etc/nginx/conf.d/extmail.conf
创建fcgi.conf文件:vim /etc/nginx/fcgi.conf
安装Unix::Syslog:否则打开页面会无法显示提示需要安装Unix::Syslog
启动nginx,访问服务器IP的8080端口即可
extman的登录账户为root@extmail.org密码为extmail*123*
,首次使用需要先添加域,添加之后再修改域。
然后整个Web
页面可以针对性的修改,作自由定制的登陆界面和自定义Logo.
Good Luck! And have fun!