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

本贴最后更新于 1628 天前,其中的信息可能已经物是人非

至于搭建个人邮件的原因?

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

EwoMail 简介

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

安装环境

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

** 配 置:**

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

最低配置:
CPU:1 核
内存:1G
磁盘: 40G

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

准备工作

Nginx 反向配置,SSL 证书配置

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

| 主机记录 | 记录类型 | 解析线路 | 记录值 |
| --- | --- | --- |
| 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 | 1 |

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

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

EwoMail 安装

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

image.png

检查 swap

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

查看swap
free -m

image.png

创建 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

image.png

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

邮箱域名

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


设置主机名(可不配置主机名)

EwoMail 在安装后会默认使用域名前缀 mail 的主机名,例如: mail.slera.cn
将系统主机名改成 slera.cn

查看当前主机名

hostname -f

centos7 配置
输入命令:

hostnamectl set-hostname mail.slera.cn

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

安装(方法一)

虽然官方建议使用此方法安装,但是个人不建议使用 git 方式安装,个人推荐下面方法二通过一个链接就可以安装完成,因为我尝试了 N 次虽然显示安装成功了,但是实际并没有,还有个原因版本库是在 github 上面,国外的网站访问速度有限制。

github 项目地址 https://github.com/gyxuehu/EwoMail

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 输入域名获取安装代码

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

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

image.png


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

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

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

cat /ewomail/config.ini

遇到的报错

部分 centos 版本可能会在安装时不兼容的情况,会出现 ewomail-lamp install failed
在 sh ./start.sh xxx.com 安装域名后面加-f
完整语句

sh ./start.sh xxx.com -f

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

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

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

vim /ewomail/nginx/conf/nginx.conf

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

image.png

#创建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;
     }
}

邮箱管理后台

登录界面

在浏览器输入你的邮箱管理后台地址,例如:http://IP:8010

默认账号:admin
密码:ewomail123

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

邮箱域名管理

image.png

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

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

邮箱系统设置

image.png

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

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

邮箱用户管理

image.png

image.png

接下来就可以通过 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 

正常情况下:
image.png

出于安全考虑,阿里云、腾讯云默认封禁 TCP 25 端口出方向的访问流量,即你无法在阿里云上的云服务器通过 TCP 25 端口连接外部地址,需要去云服器商申请开通 25 访问 腾讯 25 解封 阿里云 25 解封 详情

降低内存占用

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

命令执行

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

image.png

在文件尾部加上该行参数
@bypass_virus_checks_maps= (1);

image.png

最后按下 esc 键,输入:wq 保存

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

修改后

image.png

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

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

数据备份与还原

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

数据备份

备份 ewomail 数据库,相关数据库备份操作可百度 mysql 数据库操作

备份目录/ewomail/mail

数据还原

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

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

将备份的目录/ewomail/mail,覆盖回去。
执行下面的命令

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 为邮箱的数据库

image.png

数据库表说明:

说明
i_admin 是否管理员
i_admin_log 操作日志
i_admin_menu 角色表
i_domains 邮箱域名
i_mail_config 邮箱系统配置
i_quota 邮箱账号
i_system_config 系统配置
i_users 邮箱账号密码

忘记密码

管理员默认账号:admin
默认密码:ewomail123

忘记管理员

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

查看数据库密码

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

image.png

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

打开 ewomail 数据库,找到 i_admin 表,password 栏目为密码,使用 MD5 解密工具解密可查看密码,然后使用账号和密码登录即可。

image.png

image.png

重装与卸载

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

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

服务器执行

service httpd stop
service mysqld stop
rm -rf /ewomail


更多配置请查看官方文档:
http://doc.ewomail.com

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...