# 搭建属于自己的个人邮件服务器 --EwoMai

## 0x01至于搭建个人邮件的原因？

哈哈，原因很简单，作为一个单身许久的程序员实在是无聊。一次偶然的机会接触到了公司搭建的个人邮件服务器。趁着周末时间看了一下网上开源的邮件服务器iredmail、extmail、emos、umail 等；都各有个的优点，论安全性的话我觉得 extmail 邮箱服务器很好，至于我为什么不选择 extmail 因为我尝试了一下，这个是基于 PHP 写的，配置起来太痛苦了，于是小编找遍网上各种开源的 Email 服务器，于是选择了 EwoMai . 原因是界面还不错，还可以切换主题，至于安全性的嘛开源版本的没有绝对的安全，这就点忽略了。

## 0x02EwoMail 简介

EwoMail 是基于 Linux 的开源邮件服务器软件，集成了众多优秀稳定的组件，是一个快速部署、简单高效、多语言、安全稳定的邮件解决方案，帮助你提升运维效率，降低 IT 成本，兼容主流的邮件客户端，同时支持电脑和手机邮件客户端。

### 安全与稳定：

集成知名的开源反垃圾和防病毒组件，为你的邮件保驾护航，服务器定时更新病毒库，无需管理。支持基于 TLS/SSL（POP3/IMAP/SMTP）邮件传输加密，支持服务器与邮件账号的密码破解防御。数据安全，可以根据需求在你的服务器定时备份数据（包括邮件数据）

### 集成组件

* Postfix：邮件服务器
* Dovecot：IMAP/POP3/邮件存储
* Amavisd：反垃圾和反病毒 (低配置服务器建议关闭)
* Fail2ban：监控策略
* LNAMP：apache2.2，nginx1.8， mysql5.5，php5.4
* EwoMail-Admin：Web 邮箱管理后台
* Rainloop：webmail

## 0x03安装环境

服务器需要干净环境，要求全新干净系统，不能安装在已有的 apache,mysql 的环境中。在上面吃过亏数据库给搞坏了，恢复数据大半天放弃了。

### 配 置：

1. 云服务器（CentOS 6/7 系统）
2. 域名（国内需要备案）

### 最低配置：

* CPU：1 核
* 内存：1G
* &#x20;磁盘： 40G

由于新版本的杀毒软件占用的内存比较多，512M 到 2GB 内存请参考降低内存占用

## 0x03准备工作

Nginx 反向配置,SSL 证书配置

### 域名解析配置

首先进入到各大服务商的域名控制台，点击解析按钮，配置以下参数；

![](https://3720283288-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MFJRZX6Th5SswHpXXMy%2F-MUMb6DKIrzt9QUXkwMP%2F-MUMdBgQ-OaJLuofa0Pc%2Fimage-97e2e3e6.png?alt=media\&token=309dede6-2af3-478d-88d9-f896759713fd)

![](https://3720283288-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MFJRZX6Th5SswHpXXMy%2F-MUMb6DKIrzt9QUXkwMP%2F-MUMdM2an8K5UmvTqwmH%2Fimage-e9c2192f.png?alt=media\&token=d7c1da55-dbf0-49c9-be2d-f27e9bb6017e)

| 主机记录 | 记录类型  | 解析线路 | 记录值                                    |
| ---- | ----- | ---- | -------------------------------------- |
| mail | A     | 默认   | 服务器 IP                                 |
| @    | A     | 默认   | 服务器 IP                                 |
| pop3 | CNAME | 默认   | mail.slera.cn                          |
| pop  | CNAME | 默认   | mail.slera.cn                          |
| imap | CNAME | 默认   | mail.slera.cn                          |
| smtp | CNAME | 默认   | mail.slera.cn                          |
| @    | TXT   | 默认   | v=spf1 include:~~118.24.188.192~~ -all |
| @    | MX    | 默认   | mail.slera.cn                          |

**删除线部分**需要改成服务器的 ip 地址，\_dnsauth 这两个是申请 ssl 证书的时候解析的地址，在 SSL 证书申请完成后会自动添加不需要手动添加。pop3，pop，imap 是邮局的协议目前流行的是 imap 协议，其他两个可以不用配置。

至此，域名解析就配置完成，可以进行准备安装了！！

## 0x04EwoMail 安装

### CentOS 6/7 防火墙

安装成功后，系统会开放以下的端口 ，CentOS 系统是默认开启防火墙的，可关闭

### **默认开放的端口**

端口都是 TCP 类型

8000，8010，443，8020，25，143，993，995，587，110，109，22，80，465

如果是使用的是云服务器，可能需要在控制面板的防火墙开放以上端口

必须打开的端口 8000，8010，25，143

### **关闭防火墙**

```
systemctl stop firewalld.service #停止firewall
systemctl disable firewalld.service #禁止firewall开机启动

#firewall 关闭之后看一下iptables状态

service iptables status
systemctl disable iptables.service
service iptables stop
```

### **服务器开启端口**

如果不关闭防火墙可以将端口添加为白名单

```
firewall-cmd --zone=public --add-port=80/tcp --permanent
```

### **关闭 selinux**

```
vi /etc/sysconfig/selinux
SELINUX=enforcing 改为 SELINUX=disabled
```

![](https://3720283288-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MFJRZX6Th5SswHpXXMy%2F-MUMeCF0ORe7mCoZmmjJ%2F-MUMeNBlsKyex9o3n5Xp%2Fimage-3c88b48c.png?alt=media\&token=47b38af7-2ed9-4ad1-9215-9037153b7ebf)

### 检查 swap

如果没启动 swap，这会导致 EwoMail 的防病毒组件不能启动，所以在安装前先检查 swap 是否已经启动，如已启动可跳过该步骤。

```
查看swap
free -m
```

![](https://3720283288-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MFJRZX6Th5SswHpXXMy%2F-MUMeCF0ORe7mCoZmmjJ%2F-MUMeamnj94v4tlzdjhQ%2Fimage-c3da1fad.png?alt=media\&token=91b52bdb-b3b1-4beb-b98c-0e6c9873bb56)

### **创建 swap 分区（内存超过 2G，可不配置）**

创建 1G 的 swap，可以根据你的服务器配置来调整大小

```
dd if=/dev/zero of=/mnt/swap bs=1M count=1024  
```

设置交换分区文件

```
mkswap /mnt/swap
```

启动 swap

```
swapon /mnt/swap
```

设置开机时自启用 swap 分区

```
需要修改文件 /etc/fstab 中的 swap 行，添加
/mnt/swap swap swap defaults 0 0
```

![](https://3720283288-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MFJRZX6Th5SswHpXXMy%2F-MUMews0Ob6THpo0zq6y%2F-MUMfWoCivQHwuqZhFkK%2Fimage-681b6c03.png?alt=media\&token=51eae548-c6f6-4c9a-acc2-83ca87a39065)

个人觉得这地方最好重启一下，可能会因为/etc/fstab 挂载错误导致系统不能启动

### 邮箱域名

EwoMail 本身是可以配置多个域名来收发邮件的，但在安装前需要一个邮箱的主域名。本次教程例子使用的主域名是 iredteam.cn

### 设置主机名（可不配置主机名）

EwoMail 在安装后会默认使用域名前缀 mail 的主机名，例如： mail.iredteam.cn

将系统主机名改成 iredteam.cn

查看当前主机名

```
hostname -f
```

### **CentOS7 配置**

输入命令：

```
hostnamectl set-hostname mail.iredteam.cn
```

修改文件 /etc/hosts , 添加 mail.iredteam.cn，添加 hosts 可以加快域名解析(也可以不配置)

### 安装(方法一)

虽然官方建议使用此方法安装，但是个人不建议使用 Git 方式安装，个人推荐下面方法二通过一个链接就可以安装完成，因为我尝试了 N 次虽然显示安装成功了，

但是实际并没有，还有个原因版本库是在 GitHub 上面，国外的网站访问速度有限制。

GitHub 项目地址 [https://github.com/gyxuehu/EwoMail](https://link.ld246.com/forward?goto=https%3A%2F%2Fgithub.com%2Fgyxuehu%2FEwoMail)

```
yum -y install git
cd /root
git clone https://github.com/gyxuehu/EwoMail.git
cd /root/EwoMail/install
#需要输入一个邮箱域名，不需要前缀，列如下面的ewomail.cn
sh ./start.sh ewomail.cn
```

### 安装 (方法二)

安装前请服务器必须已链接网络，安装时间将会根据你的系统配置和网络环境大概会在 10 分钟内安装完成。（需要 root 权限）

打开：[http://www.ewomail.com/list-11.html](https://link.ld246.com/forward?goto=http%3A%2F%2Fwww.ewomail.com%2Flist-11.html) 输入域名获取安装代码

```
wget -c http://download.ewomail.com:8282/ewomail-1.05.sh && sh ewomail-1.05.sh slera.cn
```

复制上面代码注意修改域名，执行安装命令后全程会自动安装(需要 root 权限);

![](https://3720283288-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MFJRZX6Th5SswHpXXMy%2F-MUMews0Ob6THpo0zq6y%2F-MUMgEtXCuer23FBz4Ky%2Fimage-611b5737.png?alt=media\&token=90c6c7d0-0965-427a-be39-83e246361aa3)

安装过程中可能会显示 shutting down postfix : FAILED，如果它的下面再出现一条 starting postfix : OK ，那就是正常的。

安装成功后将会输出”Complete installation”。

查看安装的域名和数据库密码

```
cat /ewomail/config.ini
```

#### 遇到的报错

部分 CentOS 版本可能会在安装时不兼容的情况，会出现 ewomail-lamp install failed

&#x20;在 sh ./start.sh xxx.com 安装域名后面加-f

#### 完整语句

```
sh ./start.sh xxx.com -f
```

注意：使用该命令安装，必须要求你的系统是全新干净的系统，而且系统没有安装 apache,mysql,nginx 这些组件，否则千万别执行该命令安装。

#### 启用 Nginx 代理 (Http 协议 + Https 协议)

https 协议需要申请 SSL 证书，阿里云、腾讯云等都可以免费申请

```
vim /ewomail/nginx/conf/nginx.conf
```

http 下加入 include /ewomail/nginx/conf.d/\*.conf;

![](https://3720283288-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MFJRZX6Th5SswHpXXMy%2F-MUMh12G2EBvn49zE47v%2F-MUMhSuk8I2iQ6To538k%2Fimage-e9c38bfc.png?alt=media\&token=8efbe00a-512c-49e1-9a81-f563212b9fd6)

```
#创建conf.d文件夹
mkdir -p /ewomail/nginx/conf.d/

#进入conf.d路径下
cd /ewomail/nginx/conf.d/

#创建文件mail.conf
touch mail.conf

#编辑文件mail.conf
vim mail.conf
upstream mail{
   ip_hash;
   server 127.0.0.1:8000 max_fails=3 fail_timeout=600s;
server {
     listen 80;
     server_name slera.cn; #填写绑定证书的域名
     # 获取真实IP
     proxy_set_header X-Real-IP $remote_addr;
     proxy_set_header REMOTE-HOST $remote_addr;
     # 获取代理者的真实ip
     proxy_set_header X-Forwarded-For   $proxy_add_x_forwarded_for;
     proxy_http_version 1.1;
     #proxy_set_header Connection "";
     proxy_buffering off;
     proxy_redirect off;
     location / {
             proxy_pass http://mail;
     }
}

#下面是Https协议，需要申请SSL证书。[申请SSL证书](https://www.slera.cn/articles/2019/11/02/1572624076821.html)

#ssl_certificate和ssl_certificate_key分别是证书文件名称和私钥文件名称(很重要！！)
server {
        listen 443 ssl backlog=65535;
        #ssl on;
        server_tokens off;
        server_name slera.cn;
        #access_log /gs/nginx-logs/teach.access.log;
        #proxy_set_header Host $host:$server_port;
        proxy_set_header Host $host;
        # 获取真实IP
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header REMOTE-HOST $remote_addr;
        # 获取代理者的真实ip
        proxy_set_header X-Forwarded-For   $proxy_add_x_forwarded_for;
        proxy_http_version 1.1;
        #proxy_set_header Connection "";
        proxy_buffering off;
#        proxy_redirect off;
        ssl_certificate /ewomail/nginx/crt/slera.cn.pem;#证书文件名称
        ssl_certificate_key /ewomail/nginx/crt/slera.cn.key;#私钥文件名称
        ssl_session_timeout 5m;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #请按照这个协议配置
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;#请按照这个套件配置
        ssl_prefer_server_ciphers on;
    location / {
             proxy_pass http://mail;
     }
}
```

## 0x05邮箱管理后台

### 登录界面

在浏览器输入你的邮箱管理后台地址，例如：[http://IP:8010](http://ip:8010)

默认账号：admin密码：ewomail123

首次登陆后请尽快改密码。<http://服务器> IP:8010/Admin/user

![](https://3720283288-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MFJRZX6Th5SswHpXXMy%2F-MUMh12G2EBvn49zE47v%2F-MUMhfTGhDtv1HWFHBDV%2Fimage-ee0aa458.png?alt=media\&token=1209cbec-9087-4c63-8698-b0fd6264875f)

### 邮箱域名管理

![](https://3720283288-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MFJRZX6Th5SswHpXXMy%2F-MUMh12G2EBvn49zE47v%2F-MUMht5uBm_XsfTnU8LH%2Fimage-b51dfd6f.png?alt=media\&token=47565575-9ab7-4da9-beba-47ab3e8f7401)

系统安装后会自动把邮箱主域名添加，手动在后台添加的域名基本是副域名。

添加域名后需要设置副域名的 DNS 才能正常收发邮件。

### 邮箱系统设置

![](https://3720283288-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MFJRZX6Th5SswHpXXMy%2F-MUMh12G2EBvn49zE47v%2F-MUMi3aJkuVfxh7edmqU%2Fimage-d542dad7.png?alt=media\&token=0c5f3053-d25a-4255-992a-48dec52ecbae)

系统安装后会自动添加配置信息，在更改主域名后才需要更改邮箱配置信息，一般情况下不建议修改。

imap 和 smtp 是客户端的配置信息。

### 邮箱用户管理

![](https://3720283288-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MFJRZX6Th5SswHpXXMy%2F-MUMh12G2EBvn49zE47v%2F-MUMiG1fHuTRrJHHqCuQ%2Fimage-5fe2312b.png?alt=media\&token=8f215f37-6b91-4c68-9a58-7dcb743ebb0c)

![](https://3720283288-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MFJRZX6Th5SswHpXXMy%2F-MUMh12G2EBvn49zE47v%2F-MUMiKJM2fsr8eCsY7uE%2Fimage-dcc4cb2c.png?alt=media\&token=5725f780-358d-470c-b240-c7fbba21300a)

接下来就可以通过 <http://服务器> IP:8010 进行登录了。

### 无法连接服务器

1、安装过程检查是否有报错

2、检查运营商是否开放 25 端口出站方向

* 25 端口是邮局通信的固定端口，不能更换成其他端口，465 端口只用登录（465 端口不是用于发送邮件，只用于登录，将邮件数据加密传送到本地服务器，最后本地服务器将会链接对方邮局的 25 端口，进行邮件发送，基本所有的邮局，都只用于 25 端口来接收邮件）
* 如果你的 25 端口出站方向被屏蔽了，那么你就不能发送邮件到外面的邮局。
* 但你可以使用 465 端口登录第三方服务器的邮局

> 首先在服务器执行以下命令测试你的端口是否正常，注意（是在你搭建邮局的服务器执行）

以下命令不需修改，复制执行即可

```
yum install xinetd telnet telnet-server -y
telnet smtp.qq.com 25 
```

正常情况下：

![](https://3720283288-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MFJRZX6Th5SswHpXXMy%2F-MUMh12G2EBvn49zE47v%2F-MUMijYj_Xwy7XAwRReV%2Fimage-7d10679a.png?alt=media\&token=868643d4-13fb-4783-a0eb-73d77ac364ef)

出于安全考虑，阿里云、腾讯云默认封禁 TCP 25 端口出方向的访问流量，即你无法在阿里云上的云服务器通过 TCP 25 端口连接外部地址，需要去云服器商申请开通 25 访问 [详情](https://help.aliyun.com/knowledge_detail/56130.html)

## 0x06降低内存占用

```
#查看内存占比命令
free -m
```

命令执行

```
#安装vim
yum install vim -y
#修改文件（修改前请备份文件）
vim /etc/amavisd/amavisd.conf
输入 :set number 回车显示行号
输入 i 回车可以编辑修改
找到大概在383行左右，将图片以下的4行前面加上#符号
```

![](https://3720283288-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MFJRZX6Th5SswHpXXMy%2F-MUMh12G2EBvn49zE47v%2F-MUMjHGlrzq43CyBgs-t%2Fimage-0e1132d1.png?alt=media\&token=0da3ed51-4b9a-467f-91d7-e8d5964cdf4c)

在文件尾部加上该行参数

~~`@bypass_virus_checks_maps= (1);`~~

最后按下 esc 键，输入：wq 保存

```
修改文件（参考上面的例子操作命令修改）
vim /usr/lib/systemd/system/amavisd.service
在 Wants=clamd@amavisd.service 前面加上#符号
保存文件
```

修改后

![](https://3720283288-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MFJRZX6Th5SswHpXXMy%2F-MUMjplr1hRaTnWXxr_d%2F-MUMk1XAexCx1KTTwfK2%2Fimage-7b479e24.png?alt=media\&token=49825732-e21a-41f2-ab9f-52b6a3649825)

输入以下命令即可完成杀毒软件的关闭

```
systemctl daemon-reload
systemctl stop clamd@amavisd
systemctl disable clamd@amavisd
systemctl restart amavisd
```

## 0x07数据备份与还原

EwoMail 主要目录在/ewomail，相关的数据与文件都存放在该目录。

> 数据备份

备份 ewomail 数据库，相关数据库备份操作可百度 MySQL 数据库操作

备份目录/ewomail/mail

> 数据还原

无论你在原有 EwoMail 或新安装的 EwoMail，都可以还原。

将备份的数据库覆盖 MySQL 的 ewomail 数据库

将备份的目录/ewomail/mail，覆盖回去。

&#x20;执行下面的命令

```
chown -R vmail:vmail /ewomail/mail
systemctl restart dovecot
```

### apache/nginx

1.05 版本开始

> nginx

默认绑定 80 端口，需手动启动。

可以利用 nginx 配置 php-fpm 或 apache，php-fpm 默认端口 9000，需手动启动。

配置目录：/ewomail/nginx

启动命令：

```
service nginx start
```

php-fpm 启动命令：

```
service php-fpm start
```

> apache

取消 apache 的 80 端口，管理邮箱后台与 webmail 保留原来的端口。

配置目录：/ewomail/apache

启动命令：

```
service httpd start
```

### 数据管理

为了安全，可以关闭或更换端口

登录后 ewomail 为邮箱的数据库

![](https://3720283288-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MFJRZX6Th5SswHpXXMy%2F-MUMjplr1hRaTnWXxr_d%2F-MUMkFQnd3Zs4RdkR4TW%2Fimage-a9452aeb.png?alt=media\&token=f88a916b-0bb8-424e-943e-74ecf221c17d)

#### **数据库表说明：**

| 表                 | 说明     |
| ----------------- | ------ |
| i\_admin          | 是否管理员  |
| i\_admin\_log     | 操作日志   |
| i\_admin\_menu    | 角色表    |
| i\_domains        | 邮箱域名   |
| i\_mail\_config   | 邮箱系统配置 |
| i\_quota          | 邮箱账号   |
| i\_system\_config | 系统配置   |
| i\_users          | 邮箱账号密码 |

### 忘记密码

管理员默认账号：admin

&#x20;默认密码：ewomail123

> 忘记管理员

如果忘记管理员密码，需要进入数据库修改。

查看数据库密码

进入服务器执行命令：cat /ewomail/config.ini 红色部分为 MySQL root 的密码

![](https://3720283288-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MFJRZX6Th5SswHpXXMy%2F-MUMjplr1hRaTnWXxr_d%2F-MUMkUTxArK7r4O53HE_%2Fimage-9a9b308c.png?alt=media\&token=fb25be37-178d-4641-a1f2-b7b347f466ec)

<http://服务器> IP:8020 phpmyadmin 页面

打开 ewomail 数据库，找到 i\_admin 表，password 栏目为密码，使用 [MD5 解密工具](https://link.ld246.com/forward?goto=https%3A%2F%2Fwww.somd5.com%2F)解密可查看密码，然后使用账号和密码登录即可。

![](https://3720283288-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MFJRZX6Th5SswHpXXMy%2F-MUMjplr1hRaTnWXxr_d%2F-MUMkgLxP2p3hCO5W8nZ%2Fimage-91beb340.png?alt=media\&token=dc6f39af-7be9-4a50-857f-ad8f2ce1a3d5)

![](https://3720283288-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MFJRZX6Th5SswHpXXMy%2F-MUMjplr1hRaTnWXxr_d%2F-MUMkjoVbCwCL_JZwOpi%2Fimage-853c929a.png?alt=media\&token=94346432-8ce1-440c-b56e-8b0a100a8018)

## 0x08重装与卸载

1、重装需要重新安装系统，然后按照教程来安装。

2、卸载，因为依赖的组件比较多，所以卸载后再安装会有相关冲突，所以不能再次重装。

## 更多配置请查看官方文档：

[http://doc.ewomail.com](https://link.ld246.com/forward?goto=http%3A%2F%2Fdoc.ewomail.com)
