【测试平台】Ewomail 邮件服务器搭建

news/2024/10/31 15:21:30/

一、邮件服务器背景介绍

  1. 背景介绍

使用的是开源的Ewomail邮件服务器,方便QA同学在进行业务测试时,通过测试平台自动注册邮件新账号, 减少手工注册的操作。前端页面调用的底层注册邮箱就是我们即将搭建的邮件服务器。

服务访问关系

前端 -> 后端服务器 -> 邮件服务器java 服务器 -> 邮件服务器PHP服务 & 插入ewomail数据库

网络访问层面请运维 进行了特殊的处理,防止被黑客攻击,滥伐邮件

  • 只能接收到来自账号系统6台服务器发送的激活邮件,无法接受其他域名发来的邮件

  • 无法对外进行发送邮件

线上服务器部署相关

服务器部署机器:美东服务器

源代码:/root/EwoMail

Java 程序:/root/java-mail/mail-1.0.0.jar

安装Ewomail路径:/ewomail

机器配置:t3.small cpu 2核, 内存 2G

重启服务
  1. 启动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邮件服务器icon-default.png?t=O83Ahttp://doc.ewomail.com/docs/ewomail/install

2.网友搭建

EwoMail开源邮件服务器软件 - sing1122 - 博客园icon-default.png?t=O83Ahttps://www.cnblogs.com/a154172/articles/14734188.html


http://www.ppmy.cn/news/1543370.html

相关文章

数学建模汇总

模型汇总 数学建模算法汇总 数据分析 数据的统计描述和分析 数据处理 用Python进行数据挖掘(数据预处理) Python机器学习库SKLearn:数据预处理 在Python中进行数据清洗和预处理缺失值处理缺失值补全 灵敏度分析 研究与分析一个系统&…

webpack5搭建react脚手架详细步骤

1. 初始化项目 首先,创建一个新目录并初始化项目: bash mkdir create-react cd create-react pnpm init --y git init 这里使用pnpm作为包管理工具,因为它在处理依赖和速度上表现更好。 2. 安装React和TypeScript 安装React和React-DOM…

[实战-11] FlinkSql设置时区(table.local-time-zone)

table.local-time-zone table.local-time-zone代码测试flink代码执行结果截图1. Asia/Shanghai 结果如下2. UTC结果如下 table.local-time-zone 设置flink程序运行期间得时区,flink的内置数据类型TIMESTAMP(3), 我们设置水位线都是基于TIMESTAMP(3)类型…

seurat对象内部结构

10x Genomics格式: barcodes.tsv 、features/genes.tsv和matrix.mtx文件 是10X Genomics单细胞转录组测序数据的标准文件格式。这些文件通常存储在一个目录中,可以使用Read10X函数从R语言中读取。 barcodes.tsv:包含了每个单细胞的条形码信息…

【AAOS】【源码分析】CarSystemUI

目录 目录 概述 CarSystemUI组件 源代码 源码位置 主要模块 编译选项 CarSystemUI与SystemUI 编译方式 Car Emulator默认服务 CarSystemUI 启动流程 缩略词 概述 AAOS中的SystemUI虽然相较手机要简单不少,但却是车载开发中的一个重要组件,它负责管理和控制车机…

基于SpringBoot的流浪动物管理系统设计与实现

摘要 随着流浪动物数量的增加,如何有效管理这些动物成为社会关注的重要问题。基于Spring Boot框架的流浪动物管理系统,旨在通过信息化手段提高流浪动物的管理效率,帮助管理人员记录、追踪、安置和处理流浪动物的信息。该系统集成了用户管理、…

【无标题】idea 一次性切换多个项目的分支

适合一个目录下面有多个子项目,维护着共同的分支 勾选Settings-Version Control->Git->Executor branch operations on all roots 勾选前(是不能一次切换多个项目的分支为同一个分支的) 勾选此选项 勾选后(可以一次切换多个…

网络编程 TCP编程 Linux环境 C语言实现

所有基于数据传输通信的程序,都会被分成两种角色: 1. 服务端:又称为服务器 server 提供一种通信服务的进程 基本工作过程是:1> 接收请求数据 2> 处理请求数据 3> 发送处理结果 2. 客户端:client 使用一种通…