企业邮件服务器搭建
- 一、准备环境
- 二、DNS服务搭建
- 三、发送端配置
- 四、接收端配置
- 五、mail+web界面
一、准备环境
Centos7以上
yum -y install bind
yum -y install postfix
yum -y install gcc* mysql mysql-server httpd mailx
systemctl stop firewalld.server #临时关闭防火墙
systemctl disable firewalld #防火墙开机不自启
setenforce 1 #临时关闭selinux
vim /etc/selinux/config #永久关闭selinux
配置网络yum源
①备份
cd /etc/yum.repos.d/
mkdir bak
mv CentOS7-* bak
②下载阿里云到本地yum.repo目录下
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
运行yum clean all 清除缓存,运行 yum makecache 生成新的缓存
③下载EPEL源
yum list | grep epel-release #首先查看本地是否存在
yum install -y epel-release #下载epel源
再次运行yum clean all 清除缓存,运行 yum makecache 生成新的缓存
————————————————————————————————————————————
企业邮件服务器的搭建前提是需要有一个本地DNS服务器,因此接下来我们开始搭建DNS服务器
二、DNS服务搭建
①首先netstat -antp #查看对应DNS服务是否开启
[root@localhost yum.repos.d]# netstat -antp
1)发现DNS服务已经开启,则开启配置DNS主配置文件
vim /etc/named.conf
设置服务器监听任何IP
设置任何IP均可访问服务器
2)接着配置区域配置文件
vim /etc/named.rfc1912.zones
#其余模板删掉,仅留此模板。仅设置正向解析的域名,正向解析文件的文件名
3)接着开始进入数据配置文件所在目录
[root@localhost yum.repos.d]# cd /var/named/
[root@localhost yum.repos.d]# cp -a named.localhost extmail.localhost #将正向解析文件拷贝一份,并修改为extmail.localhost
[root@localhost named]# ls
data dynamic extmail.localhost named.ca named.empty named.localhost named.loopback slaves
接着进入数据配置文件
[root@localhost named]# vim extmail.localhost
修改域名,NS增加DNS服务器域名,MX3增加邮件服务器域名,A增加域名与IP的映射
4)保存退出后,重启DNS服务,开始使用nslookup 域名 进行测试
[root@localhost named]# vim extmail.localhost
[root@localhost named]# systemctl restart named
[root@localhost named]# nslookup mail.extmail.org
Server: 127.0.0.1
Address: 127.0.0.1#53Name: mail.extmail.org
Address: 192.168.28.148
如果显示这样,就代表成功!!
三、发送端配置
①将web的软件包放在 Apache 的网页下
链接:https://pan.baidu.com/s/1lXfWgZMNMdJ-OpdniAuwuA 提取码:9a5t
[root@localhost ~]# mkdir -p /var/www/extsuite
[root@localhost ~]# cd /var/www/extsutie
[root@localhost extsuite]# tar -xf extmail-1.2.tar.gz -C /var/www/extsuite #解压软件包,并放置extsuite目录下
[root@localhost extsuite]# tar -xf extman-1.1.tar.gz -C /var/www/extsuite #解压软件包,并放置extsuite目录下
[root@localhost extsuite]# mv extman-1.1 extman #将 extman-1.1改名为extman
[root@localhost extsuite]# mv extmail-1.2 extmail #将 extmail-1.2改名为extmail
[root@localhost extsuite]# chown -R root.root * #将其目录所属者,所属组修改为root
②将成品数据库文件导入到mysql中(mysql没设置密码,空密码登录)
[root@localhost extsuite]# mysql < ./extman/docs/extmail.sql
#把模板数据导入到mysql中
#ERROR 1064 (42000) at line 50: You have an error in your SQL
#syntax; check the manual that corresponds to your MariaDB
#server version for the right syntax to use near 'TYPE=MyISAM
#COMMENT='Ext/Webman - Admin Accounts'' at line 15
#如有此报错,进入extmail.sql文件,在编辑模式下输入
#:%s /TYPE=MyISAM/ENGINE=MyISAM/g #全文替换此参数并保存退出
[root@localhost extsuite]# vim ./extman/docs/init.sql
将对应密码改为123456,切记先修改再导入
[root@localhost extsuite]# mysql < ./extman/docs/init.sql
③将邮件模板拷贝到邮件服务器的主目录下
[root@localhost extsuite]# cd extman/docs/
[root@localhost docs]# cp -a mysql_virtual_alias_maps.cf mysql_virtual_domains_maps.cf mysql_virtual_mailbox_maps.cf /etc/postfix/
④创建映射用户&修改配置文件
[root@localhost docs]# useradd -u 600 -s /sbin/nologin vmail
[root@localhostdocs]# vim /etc/postfix/main.cf
inet_interfaces = all #将此行取消注释
#inet_interfaces = localhost #将此行注释掉
#在文件末尾添加
virtual_mailbox_base = /home/vmail
virtual_uid_maps = static:600
virtual_gid_maps = static:600
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_domains_maps.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
④重启服务&发送邮件测试&查看结果
systemctrl restart postfix
echo "hello" | mail -s test support@extmail.org
ll /home/vmail/extmail.org/postmaster/Maildir/new/
四、接收端配置
①安装dovecot相关软件
[root@localhost extsuite]# yum -y install dovecot dovecot-devel dovecot-mysql
[root@localhost extsuite]# systemctl enable dovecot & systemctl restart dovecot设置开机自启&服务重启
②配置dovecot能够去数据库里读数据
[root@localhost extsuite]# vim /etc/dovecot/conf.d/10-mail.conf
mail_location = maildir:/home/vmail/%d/%n/Maildir
#定义 dovecot 查询邮件的位
first_valid_uid = 600
#用户的uid
[root@localhost extsuite]# vim /etc/dovecot/conf.d/10-auth.conf
!include auth-sql.conf.ext #取消调用数据库记录的注释
③调用数据库的连接方式,修改数据库连接配置文件
[root@localhost extsuite]# cp -a /usr/share/doc/dovecot-2.2.36/example-config/dovecot-sql.conf.ext /etc/dovecot/
#复制模板文件
[root@localhost dovecot]#cd /etc/dovecot/
[root@localhost dovecot]# vim dovecot-sql.conf.ext
#修改文件内容并取消注释,也可以直接在文件末尾添加
driver = mysql
#驱动类型
connect = host=localhost dbname=extmail user=extmail password=extmail
#连接数据库信息
default_pass_scheme = MD5
password_query = \
SELECT username, domain, password \
FROM mailbox WHERE username = '%u' AND domain = '%d'
#登陆验证密码的查询
user_query = SELECT maildir, 600 AS uid, 600 AS gid FROM mailbox WHERE username = '%u'
#查询虚拟对应的虚拟目录
④重启dovecot并安装telnet连接测试
[root@localhost extsuite]# systemctl restart dovecot
[root@localhost extsuite]# yum -y install telnet
[root@localhost extsuite]# nslookup mail.extmail.org
#将DNS向自己,解析mai.extmail.org是否能解析到自己的IP[root@localhost extsuite]# telnet mail.extmail.org 110
Trying 192.168.154.187...
Connected to mail.extmail.org.
Escape character is '^]'. #连接信息
+OK Dovecot ready.
user postmaster@extmail.org #登陆postmaster用户
+OK
pass extmail #用户的密码
+OK Logged in
list #查看邮件列表
+OK 3 messages:
.
retr 1 #查看编号为1的邮件
+OK 551 octets
……&
五、mail+web界面
①修改http的配置文件
[root@server ~]$ vim /etc/httpd/conf/httpd.conf
ServerName www.example.com:80 #取消此行注释
#然后在文件末尾添加
<VirtualHost *:80>DocumentRoot /var/www/extsuite/extmail/html #默认访问路径位置ServerName mail.extmail.org #域名scriptalias /extmail/cgi /var/www/extsuite/extmail/cgi #目录别名alias /extmail /var/www/extsuite/extmail/htmlscriptalias /extman/cgi /var/www/extsuite/extman/cgialias /extman /var/www/extsuite/extman/htmlsuexecusergroup vmail vmail #映射用户
</VirtualHost>
[root@server ~]$ httpd -t #检查文件是否有错误
[root@server ~]$ systemcl restart httpd #重启httpd服务
②extmail 目录中更改 cgi 的属组属主,让 vmail 有权限执行
[root@server ~]$ cd /var/www/extsuite/extmail/
[root@server extmail]$ chown -R vmail.vmail cgi/
[root@server extmail]$ cp -a webmail.cf.default webmail.cf
[root@server extmail]$ vim webmail.cf
#修改如下内容
SYS_MAILDIR_BASE = /home/vmail #邮件存放目录
SYS_CRYPT_TYPE = plain #加密类型
SYS_MYSQL_USER = extmail #MySQL 用户名
SYS_MYSQL_PASS = extmail #MySQL 密码
③extman 目录中更改 cgi 的属组属主,让 vmail 有权限执行
[root@server extmail]$ cd ../extman/
[root@server extman]$ chown -R vmail.vmail cgi/
[root@server extman]$ cp -a webman.cf.default webman.cf
[root@server extman]$ vim webman.cf
SYS_MAILDIR_BASE = /home/vmail
SYS_SESS_DIR = /tmp
SYS_CAPTCHA_ON = 0 #1生产环境中开启,实验环境无法显示校验码
SYS_CRYPT_TYPE = plain
④安装 Unix-Syslog 软件
[root@server extman]$ cd /var/www/extsuite/ #进入目录并上传文件
[root@server extsuite]$ tar -zxvf Unix-Syslog-1.1.tar.gz #解压
[root@server extsuite]$ cd Unix-Syslog-1.1/
[root@server Unix-Syslog-1.1]$ perl Makefile.PL
#Can't locate ExtUtils/MakeMaker.pm in @INC (@INC contains:
#/usr/local/lib64/perl5 /usr/local/share/perl5 #/usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl #/usr/lib64/perl5 /usr/share/perl5 .) at Makefile.PL line 1.
#BEGIN failed--compilation aborted at Makefile.PL line 1.
#这里报错是缺少依赖包,安装就可以了
[root@server Unix-Syslog-1.1]$ yum -y install perl-ExtUtils-MakeMaker
#将Unix—Syslog包删除重新解压
[root@server Unix-Syslog-1.1]$ perl Makefile.PL
Checking if your kit is complete...
Looks good
Writing Makefile for Unix::Syslog
[root@server Unix-Syslog-1.1]$ make && make install
⑤windows访问测试
普通用户是 postmaster@extmail.org 密码是extmail
后台管理账户是root@extmail.org 密码是 123
⑥经典错误
[root@server ~]$ yum -y install perl-CGI #安装缺少包
[root@server ~]$ yum -y install perl-DB_File #安装缺少包
[root@server ~]$ vim var/www/extsuite/extmail/ cgi/index.cgi
#!/usr/bin/perl -wT 修改为 #!/usr/bin/perl -w
#重新登陆即可
[root@server ~]$ yum -y install perl-test
yum -y install perl-DBD-mysql