企业邮件服务器搭建(linux)
一、实验准备
centos 7 系统
setenforce 1 #临时关闭selinux
systemctl stop firewalld.server #临时关闭防火墙
rpm -qa |grep postfix #检查postfix软件包,默认安装并自启动
提前准备好需要的软件包
配置网络yum源
安装perl的包,防止访问界面或安装Unix-Syslog时出错
[root@server ~]$ yum -y install perl-CGI
[root@server ~]$ yum -y install perl-DB_File
[root@server ~]$ yum -y install perl-test
[root@server ~]$ yum -y install perl-ExtUtils-MakeMaker
二、DNS搭建
[root@server ~]$ yum -y install bind #安装DNS
[root@server ~]$ vim /etc/named.conf #修改主配置文件
options {
listen-on port 53 { any; }; #修改监听地址为 any
……
……
allow-query { any; }; #修改访问控制为 any
}
[root@server ~]$ vim /etc/named.rfc1912.zones #修改区域配置文件
zone "extmail.org" IN { #使用 extmail.org 作为解析域,只做正向解析即可
type master;
file "extmail.server"; #配置文件名称
allow-update { none; };
};
[root@server ~]$ cd /var/named/
[root@server ~]$ cp -a named.localhost extmail.localhost
[root@server ~]$ vim /var/named/extmail.server #修改正向解析文件
#修改文件
$TTL 1D
@ IN SOA extmail.org. rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS dns.extmail.org.
MX 3 mail.extmail.org.
dns A 192.168.154.187
mail A 192.168.154.187
[root@server ~]$ systemctl start named #启动DNS服务
找一台互通的主机DNS指向此服务器使用 nslookup 命令测试
[root@server ~]$ systemctl start named
[root@server ~]$ nslookup mail.extmail.org
三、发送端配置
3.1安装gcc及其他依赖包
[root@server ~]$ yum -y install gcc* httpd mariadb-devel mariadb-server mariadb mailx
#设置httpd与mariadb启动并自启动
[root@server ~]$ systemctl enable httpd && systemctl start httpd
[root@server ~]$ systemctl enable mariadb && systemctl start mariadb
3.2将web的软件包放在 Apache 的网页下并解压
链接:https://pan.baidu.com/s/1jk0bCQx-WmUBALbYoFLShQ 提取码:mail
[root@server ~]$ mkdir -p /var/www/extsuite
[root@server ~]$ cd /var/www/extsutie
[root@server extsuite]$ tar -xf extmail-1.2.tar.gz
[root@server extsuite]$ tar -xf extman-1.1.tar.gz
[root@server extsuite]$ mv extman-1.1 extman
[root@server extsuite]$ mv extmail-1.2 extmail
3.3将成品数据库的文件导入到 mysql 中
[root@server 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@server extsuite]$ vim extman/docs/extmail.sql
[root@server extsuite]$ mysql < ./extman/docs/extmail.sql
#ERROR 1007 (HY000) at line 46: Can't create database
'extmail'; database exists
#如有此报错,进入/var/lib/mysql 目录
#rm -rf extmial/ 删除extmail目录及文件,再此执行 mysql < ./extman/docs/extmail.sql 即可
[root@server extsuite]$ vim extman/docs/init.sql
#进入模板文件,把密码修改为 123 保存退出后导入数据库
#INSERT INTO `manager` VALUES ('root@extmail.org','123','admin',
[root@server extsuite]$ mysql < extman/docs/init.sql
3.4拷贝邮件模板到主目录下
[root@server extsuite]$ cd extman/docs/
[root@server docs]$ cp -a mysql_virtual_alias_maps.cf mysql_virtual_domains_maps.cf mysql_virtual_mailbox_maps.cf /etc/postfix/
3.5创建映射用户并修改配置文件
[root@server docs]$ useradd -u 1000 -s /sbin/nologin vmail
[root@server docs]$ vim /etc/postfix/main.cf
inet_interfaces = all #将此行取消注释
#inet_interfaces = localhost #将此行注释掉
#在文件末尾添加
virtual_mailbox_base = /home/vmail
virtual_uid_maps = static:1000
virtual_gid_maps = static:1000
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
3.6重启服务并发邮件测试
[root@server docs]$ systemctl restart postfix
[root@server docs]$ echo "hello" | mail -s test support@extmail.org
[root@server docs]$ ll /home/vmail/extmail.org/postmaster/Maildir/new/
#看到此目录下有文件就代表成功了
四、收件方配置
4.1安装dovecot相关软件,启动并自启动
[root@server docs]$ yum -y install dovecot dovecot-devel dovecot-mysql
[root@server docs]$ systemctl start dovecot && systemctl enable dovecot
4.2配置dovecot软件能够到数据库中读文件
[root@server docs]$ vim /etc/dovecot/conf.d/10-mail.conf
mail_location = maildir:/home/vmail/%d/%n/Maildir
#定义 dovecot 查询邮件的位
first_valid_uid = 1000
#用户的uid
[root@server docs]$ vim /etc/dovecot/conf.d/10-auth.conf
!include auth-sql.conf.ext #取消调用数据库记录的注释
4.3修改数据库连接配置文件(需要复制模板生成)
[root@server ~]$ cp -a /usr/share/doc/dovecot-2.2.36/example-config/dovecot-sql.conf.ext /etc/dovecot/
#复制模板文件
[root@server ~]$ cd /etc/dovecot/
[root@server 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, 1000 AS uid, 1000 AS gid FROM mailbox WHERE username = '%u'
#查询虚拟对应的虚拟目录
4.4重启dovecot并安装telnet连接测试
[root@server dovecot]$ systemctl restart dovecot
[root@server dovecot]$ yum -y install telnet
[root@server ~]$ nslookup mail.extmail.org
#将DNS向自己,解析mai.extmail.org是否能解析到自己的IP
[root@server ~]$ 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界面
5.1修改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/html
scriptalias /extman/cgi /var/www/extsuite/extman/cgi
alias /extman /var/www/extsuite/extman/html
suexecusergroup vmail vmail #映射用户
</VirtualHost>
[root@server ~]$ httpd -t #检查文件是否有错误
[root@server ~]$ systemctl restart httpd #重启httpd服务
5.2extmail 目录中更改 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 密码
5.3extman 目录中更改 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
5.4安装 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
5.5访问测试
普通用户是 postmaster@extmail.org 密码是extmail
后台管理账户是root@extmail.org 密码是 123
5.5.1如果访问界面有以下报错
5.5.2CGI.pm报错
[root@server ~]$ yum -y install perl-CGI #安装缺少包即可
5.5.3DB_File.pm报错
[root@server ~]$ yum -y install perl-DB_File #安装缺少包
5.5.4登陆报错(1)
[root@server ~]$ vim var/www/extsuite/extmail/ cgi/index.cgi
#!/usr/bin/perl -wT 修改为 #!/usr/bin/perl -w
#重新登陆即可
5.5.5登陆报错(2)
[root@server ~]$ yum -y install perl-test