企业邮件服务器搭建(Linux)

企业邮件服务器搭建(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报错

缺少CGI报错

[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

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值