一、邮件服务器背景介绍
-
背景介绍
使用的是开源的Ewomail邮件服务器,方便QA同学在进行业务测试时,通过测试平台自动注册邮件新账号, 减少手工注册的操作。前端页面调用的底层注册邮箱就是我们即将搭建的邮件服务器。
服务访问关系
前端 -> 后端服务器 -> 邮件服务器java 服务器 -> 邮件服务器PHP服务 & 插入ewomail数据库
网络访问层面请运维 进行了特殊的处理,防止被黑客攻击,滥伐邮件
-
只能接收到来自账号系统6台服务器发送的激活邮件,无法接受其他域名发来的邮件
-
无法对外进行发送邮件
线上服务器部署相关
服务器部署机器:美东服务器
源代码:/root/EwoMail
Java 程序:/root/java-mail/mail-1.0.0.jar
安装Ewomail路径:/ewomail
机器配置:t3.small cpu 2核, 内存 2G
重启服务
-
启动ewomail
systemctl restart nginx php-fpm mysqld postfix dovecot amavisd
检查是否启动成功:
http://mail.XXX.tv:8000/ - 邮件web界面
http://mail.XXXX.tv:8030/ - 管理员界面
注:如果 http://mail.XXXX.tv:8030/ - 管理员界面 无法访问, 请检查防火墙是否关闭。重启机器以后,防火墙会自动被打开,所以需要在手动关闭下.
# 查看防火墙状态
sudo systemctl status firewalld# 关闭防火墙
sudo systemctl stop firewalld
sudo systemctl disable firewalld
重启java程序
每次重启的时候, 可以删除相关 日志文件可以删除。减少存储空间。
cd /root/java-mail/# 删除日志
rm -rf log
rm -rf mail.log # 重启Java服务,供odin平台调用
sudo java -jar mail-1.0.0.jar --spring.profiles.active=pro > mail.log &
二.安装步骤
需要一台干净的服务器,否则后面安装会出现各种报错,诡异的问题,无法解决和启动服务。如果不是干净的服务器,需要请运维重装系统
1.创建 /ewomail
sudo mkdir /ewomail
EwoMail安装后会把数据存放在 /ewomail 目录 建议你提前创建 /ewomail 目录,并且将硬盘容量挂载或分配到/ewomail
2.关闭selinux
sudo vim /etc/sysconfig/selinux
SELINUX=enforcing 改为 SELINUX=disabled
修改前:
修改后:
保存/etc/sysconfig/selinux 的配置以后,需要重启服务器(否则后面安装ewomail会报错):
# 重启机器命令 sudo reboot
3.检查swap
[qa-t3test-use1b-1 ~]$ free -mtotal used free shared buff/cache available
Mem: 1800 80 1598 16 122 1572
Swap: 5119 0 5119
注:如果没有swap 对应的都是0 需要进行配置, 可以查看官方文档,进行如何配置swap
4.关闭防火墙
# 查看防火墙状态
sudo systemctl status firewalld# 关闭防火墙
sudo systemctl stop firewalld
sudo systemctl disable firewalld
防火墙开启:
防火墙关闭:
注:如果不关闭后面的端口号会自动关闭无法访问,具体见FAQ部分
5.检查是否机器是否安装了mysql 和nginx
[qa-pts-awsuse1b-01 ~]$ mysql --version
-bash: mysql: command not found
[qa-pts-awsuse1b-01 ~]$ systemctl status mysql
Unit mysql.service could not be found.
[qa-pts-awsuse1b-01 ~]$ nginx -v
-bash: nginx: command not found
[qa-pts-awsuse1b-01 ~]$ systemctl status nginx
Unit nginx.service could not be found.
6.拉取最新的ewomail源代码
[qa-pts-awsuse1b-01 data]$ sudo su & cd /data
[root@qa-pts-awsuse1b-01 data]# yum -y install git
[root@qa-pts-awsuse1b-01 data]# git clone https://github.com/gyxuehu/EwoMail.git
Cloning into 'EwoMail'...
remote: Enumerating objects: 2384, done.
remote: Counting objects: 100% (454/454), done.
remote: Compressing objects: 100% (299/299), done.
remote: Total 2384 (delta 151), reused 420 (delta 151), pack-reused 1930
Receiving objects: 100% (2384/2384), 332.20 MiB | 108.67 MiB/s, done.
Resolving deltas: 100% (448/448), done.
7.修改ewomail-admin php 源代码
7.1修改ewomail-admin/core/class/SimpleCaptcha.class.php文件185行~192行
登录时候所有的验证码都会强制变成 "hiwz"
cd /data/EwoMail/ewomail-admin
vim ewomail-admin/core/class/SimpleCaptcha.class.php
修改前:
修改后:
7.2 修改 ewomail-admin/api/User.class.php 文件82行和159行,修改创建用户逻辑
vim ewomail-admin/api/User.class.php
修改前: 82行
修改后:82行
修改前:159行
修改后:159行
7.3修改ewomail-admin/api/Admin.class.php login()方法里 第 287行和 293行
管理员登陆去掉 IP 登陆限制,防止测试平台 多人同时使用admin账号登陆出现登陆失败。注释掉 287 和293行
vim ewomail-admin/api/Admin.class.php
修改前:
修改后:
以上修改的源文件,都上传到git ,也可以直接使用git 的邮件服务器源代码进行安装ewomail。对应的版本号为1.15.1。
8.安装ewomail服务
cd /data/EwoMail/install
sh ./start.sh fluxer.tv en
安装失败:
安装成功:(重新找运维做了系统,然后按照文档装一遍就成功了)
注:如果碰到了安装失败,因为系统不是干净的。需要找运维重新安装一个新的服务器,就可以安装成功。
9.检查数据库和nginx状态
三.安装后的常规配置
修改/etc/hosts文件
sudo vim /etc/hosts 添加这行 127.0.0.1 mail.fluxer.tv fluxer.tv smtp.fluxer.tv imap.fluxer.tv
登录Ewomail服务
邮箱管理后台:http://IP:8010 (默认账号admin,密码XXXXX),这里修改成了8030的端口号,具体原因见后面
web邮件系统:http://IP:8000
测试邮件服务器是否可以正常使用
在管理员后台添加2个账号A 和B
该账号在8000 的web邮件系统进行登录,让A 账号给B账号发邮件,看内部是否可以正常收到邮件
注:如果域名和ip地址是绑定的,可以测试外部邮件给ewomail的邮件服务器发送邮件。 如果没有ip 和域名没有绑定,外部给ewomail发送邮件,邮件无法送达.
四.常见问题
1.管理员后台地址 ip:8010 无法访问。修改端口号为8030
修改后:
修改对应的8010端口号 为8030端口号
vim /ewomail/nginx/conf/vhost/ewomail-admin.conf
重启服务
# 针对V1.09+ 以上的, 可以使用这个命令,目前最新的版本是v1.15.1 systemctl restart nginx php-fpm mysqld postfix dovecot amavisd
自己本机访问,检查端口是否开放,可以访问成功。如果8030 没有开放请找运维开放端口号。(需要在服务器上启动对应的端口程序,然后在访问)
部署ewomai服务器上检查端口是否被使用
netstat -nltp |grep 8030
2.8030端口访问好好的突然就无法访问了无法连接,需要关闭服务器上的防火墙
解决方案:关闭服务器上的防火墙
# 查看防火墙状态
sudo systemctl status firewalld# 关闭防火墙
sudo systemctl stop firewalld
sudo systemctl disable firewalld
3.本地服务器部署完毕添加完账号以后,账号登录提示域不允许
解决方案:
sudo vim /ewomail/www/ewomail-admin/core/config.php
修改前:
修改后:
注:如果是正式环境是mail.XXXX.tv的域名,应该不会有这个问题。因为这个是ip地址来访问的,所以出现了这个问题。 如果是用mail.XXXX.tv来访问的, 应该不会出现这个问题.
4.Ewomail邮件服务器,无法登录提示“无法连接服务器”,接口报错返回Errorcode:104
解决办法:磁盘空间满了先删除文件 + 重启相关服务
df -Th
删除置底文件下的文件(存放邮件内容的)
rm -rf /ewomail/mail/vmail/fluxer.tv
重启服务
service php-fpm restart
service mysqld restart
systemctl restart postfix dovecot amavisd
5.Ewomail邮件服务器管理员后台启动报错
解决方案:清除数据库表中的数据,然后再重启服务
第一步:连接数据库
数据库查看:cat /ewomail/config.ini
[root@qalme-lm-1 ewomail]# cat config.ini
domain:fluxer.tv
mysql-root-password:fKyWwuHjRvuL3vxl
mysql-ewomail-password:L1CgESpcs9Vf7A6y
mysql -hlocalhost -uewomail -pL1CgESpcs9Vf7A6y
第二步:清除i_admin_log表中的数据
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| ewomail |
| mysql |
| performance_schema |
| test |
+--------------------+
5 rows in set (0.00 sec)mysql> use ewomail;
Database changed
mysql> show tables;
+-------------------+
| Tables_in_ewomail |
+-------------------+
| i_admin |
| i_admin_group |
| i_admin_log |
| i_admin_menu |
| i_aliases |
| i_bcc_user |
| i_domains |
| i_mail_config |
| i_quota |
| i_system_config |
| i_users |
+-------------------+
11 rows in set (0.00 sec)mysql> select * from i_admin_log order by ctime desc-> ;
ERROR 145 (HY000): Table './ewomail/i_admin_log' is marked as crashed and should be repaired
mysql> truncate TABLE i_admin_log-> ;
Query OK, 0 rows affected (0.00 sec)mysql> select * from i_admin_log;
Empty set (0.00 sec)
6.Ewomail邮件服务器无法收取到外部发来的邮件。但是可以正常的外部发邮件
解决方案:重启机器 + 重启服务
# 重启机器
reboot# 重启邮件服务器
service php-fpm restart
service mysqld restart
systemctl restart postfix dovecot amavisd# 检查邮件服务器状态
postsuper -d ALL
systemctl status postfix
五.帮助文档
1.官方文档
安装 - EwoMail邮件服务器http://doc.ewomail.com/docs/ewomail/install
2.网友搭建
EwoMail开源邮件服务器软件 - sing1122 - 博客园https://www.cnblogs.com/a154172/articles/14734188.html