搭建 EwoMail 邮件服务器

EwoMail简介

EwoMail是基于Linux的开源邮件服务器,支持一键搭建,集成了众多优秀稳定的组件,是一个快速部署、简单高效、安全稳定的邮件解决方案,支持电脑和手机的客户端,适合个人或邮箱功能需求少的企业。

非常稳定:在不改动邮件服务器软件配置的情况下,基本不需要维护,简单的故障重启服务器即可恢复。

搭建邮箱环境

安装前请检查运营商是否开放25端口出站方向,如果你的25端口出站方向被屏蔽了,那么你就不能发送邮件到外面的邮局。但你可以使用465端口登录第三方服务器的邮局。

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

yum install telnet -y
telnet smtp.qq.com 25 

出现220字样才是正常的。
25端口正常的情况下,如果不能链接服务器,请检查域名DNS解析,或做内部通信。

Centos7/8系统 64位,服务器需要干净环境,要求全新干净系统,不能安装在已有的nginx,mysql的环境中。

如需在已有配置数据环境安装,请自行参考安装代码修改和维护。

安装前请仔细看文档,建议使用centos7安装

最低配置要求(云服务器的最低建议配置)

CPU:1核
内存:2G
硬盘:40G
带宽:1-3M

云服务器配置参考

EwoMail安装后,会将数据存储在`/ewomail`目录中。因此,建议您提前创建好`/ewomail`目录,并确保硬盘容量已挂载或分配至该目录。

为保障您的资料隐私安全,请务必通过本文档提供的官方下载渠道进行安装使用。此外,建议使用CentOS 7/8系统进行安装。

云服务器推荐

腾讯云服务器:https://curl.qcloud.com/xgsbEbOF

阿里云服务器:阿里云上云优选,实惠共享

京东云服务器:https://3.cn/1YhYaa-S

优刻云服务器:https://bit.ly/4hzNhjM

Docker容器配置

方法一:docker-compose.yml

mail:image: bestwu/ewomailhostname: mail.yourdomain.comcontainer_name: ewomailrestart: alwaysports:- "25:25"- "143:143"- "587:587"- "993:993"- "109:109"- "110:110"- "465:465"- "995:995"- "80:80"- "8080:8080"volumes:- ./mysql:/ewomail/mysql/data- ./vmail:/ewomail/mail- ./rainloop:/ewomail/www/rainloop/data- ./ssl/certs/:/etc/ssl/certs/- ./ssl/private/:/etc/ssl/private/- ./ssl/dkim/:/ewomail/dkim/

方法二:直接安装容器

docker run  -d -h mail.yourdomain.com --restart=always \-p 25:25 \-p 109:109 \-p 110:110 \-p 143:143 \-p 465:465 \-p 587:587 \-p 993:993 \-p 995:995  \-p 80:80 \-p 8080:8080 \-v `pwd`/mysql/:/ewomail/mysql/data/ \-v `pwd`/vmail/:/ewomail/mail/ \-v `pwd`/ssl/certs/:/etc/ssl/certs/ \-v `pwd`/ssl/private/:/etc/ssl/private/ \-v `pwd`/rainloop:/ewomail/www/rainloop/data \-v `pwd`/ssl/dkim/:/ewomail/dkim/ \--name ewomail bestwu/ewomail:latest

⚠️注意 :如果是云服务器,记得把这些端口打开。

  • 执行命令时需要将 mail.yourdomain.com 换成自己的邮件域名
  • 如果仅使用非加密连接开启 25 143 8080 80 端口就可以了
可配置参数
  • MYSQL_ROOT_PASSWORD:mysql数据库root密码,默认:mysql
  • MYSQL_MAIL_PASSWORD:mysql数据库ewomail密码,默认:123456
  • URL:网站链接,后面不要加/线
  • WEBMAIL_URL:邮件系统链接,后面不要加/线
  • TITLE:用户邮箱标题
  • COPYRIGHT: 邮箱管理后台网站版权
  • ICP:邮箱管理后台网站备案号
  • LANGUAGE:语言选择,默认:zh_CN
构建容器
docker-compose up -d

如果容器启动失败,发现25端口被占用,执行以下命令:

systemctl stop postfix
关闭10024端口

进入容器修改配置

docker exec -it mail bashvi /etc/postfix/main.cf

注释以下行:

# content_filter = smtp-amavis:[127.0.0.1]:10024

域名解析

设置DNS

类型

主机

记录值

A

mail

127.0.0.1

TXT

@

v=spf1 127.0.0.1 -all

CNAME

imap

mail.yourdomain.com

CNAME

smtp

mail.yourdomain.com

CNAME

pop

mail.yourdomain.com

CNAME

pop3

mail.yourdomain.com

MX

@

mail.yourdomain.com | 10

127.0.0.1 改为自己的服务器IP地址

设置DKIM

DKIM是电子邮件验证标准,域名密钥识别邮件标准,主要是用来防止被判定为垃圾邮件。

每个域名都需要添加一个dkim的key,EwoMail默认安装后已自动添加主域名dkim,只需要设置好dkim的dns即可。

获取DKIM KEY

docker exec mail amavisd showkeys

以如下返回结果为例:​​

需要配置相应DNS:

在宿主机输入命令测试

$ docker exec ewomail amavisd testkeys
TESTING#1: dkim._domainkey.yourdomain.com        => pass

访问地址(将IP更换成你服务器IP即可)

邮箱管理后台:http://mail.yourdomain.com:8010 (默认账号admin,密码ewomail123)

web邮件系统:http://mail.yourdomain.com:8000

phpmyadmin:http://mail.yourdomain.com:8020

常规配置(视情况操作)

http://doc.ewomail.com/docs/ewomail/changguipeizhi

修改密码

登陆:http://IP:8010 , 点击”个人资料”进行修改。

修改资料

修改后台标题,备案资料,语言种类等等。。

webmail修改端口

nginx 配置文件 /ewomail/nginx/conf/vhost/rainloop.conf

相关链接

Docker Hub:https://hub.docker.com/r/bestwu/ewomail

Gitee:https://gitee.com/laowu5/EwoMail

Ewomail官网:http://www.ewomail.com/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/463212.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ST算法解RMQ问题

题目 代码 #include <bits/stdc.h> using namespace std; const int N 2e510, M 20; int st[N][M]; int n, m; int main() {ios::sync_with_stdio(0);cin.tie(0);cin >> n;for(int i 1; i < n; i)cin >> st[i][0];for(int i 1; (1 << i) < …

STM32启动文件分析

1. 启动文件简介 启动文件由汇编编写&#xff0c;是系统上电复位后第一个执行的程序。主要做了以下工作&#xff1a; 初始化堆栈指针SP_initial_sp;初始化程序计数器指针PCReset_Handler;设置堆、栈的大小;初始化中断向量表;配置外部SRAM作为数据存储器&#xff08;这个由用户…

Netty 组件介绍 - Future Promise

在异步处理时&#xff0c;经常用到这两个接口 netty 中的 Future 继承 jdk 中的 FutuFuture&#xff0c;而Promise 又对 netty Future 进行了扩展。 idk Future 只能同步等待任务结束&#xff08;或成功或失败)才能得到结果netty Future 可以同步等待任务结束得到结也可以异…

破局智能制造:难点分析与对策

一、 智能制造过程中可能遇到难点: 1. --概念和技术繁多--: - 智能制造领域涉及众多概念和技术,如工业4.0、CPS、工业互联网等,让企业难以选择和应用。 2. --缺乏经验和成功案例--: - 企业在推进智能制造时缺乏经验,存在信息孤岛、自动化孤岛等问题,缺乏统一规划和系统推…

buuctf

就随便刷刷&#xff0c;就不写那么详细啦&#xff0c;就写写我的一些收获和不懂的地方啦 1. mb_substr($page&#xff0c;n&#xff0c;m)&#xff1a;返回page中从第n位开始&#xff0c;到nm位字符串的值 这个我觉得就是从第一个问号的地方开始截取&#xff0c;然后截到第二个…

AIGC实战——生成式人工智能总结与展望

AIGC实战——生成式人工智能总结与展望 0. 前言1. 生成式人工智能发展历程1.1 VAE 和 GAN 时代1.2 Transformer 时代1.3 大模型时代 2. 生成式 AI 的当前进展2.1 大语言模型2.2 文本生成代码模型2.3 文本生成图像模型2.4 其他应用 3. 生成式人工智能发展展望3.1 生成式 AI 在工…

分数阶傅里叶变换与信息熵怎么用于信号处理?

天马行空的理解与思考方式&#xff1a;分数阶傅里叶变换与信息熵怎么用于信号处理&#xff1f; ChiX-Y 快速学习&#xff0c;快速尝试&#xff0c;快速失败 已关注 35 人赞同了该文章 这篇文章希望能写的有趣&#xff0c;同时有质量&#xff0c;学习就是要多维度多角度&…

深入理解C++ Lambda表达式:语法、用法与原理及其包装器的使用

深入理解C Lambda表达式&#xff1a;语法、用法与原理及其包装器的使用 lambda表达式C98中的一个例子lambda表达式语法lambda表达式各部分说明捕获列表说明 函数对象与lambda表达式 包装器function包装器 bind &#x1f30f;个人博客主页&#xff1a; 个人主页 本文深入介绍了…

前端请求后端接口报错(blocked:mixed-content),以及解决办法

报错原因&#xff1a;被浏览器拦截了&#xff0c;因为接口地址不是https的。 什么是混合内容&#xff08;Mixed Content&#xff09; 混合内容是指在同一页面中同时包含安全&#xff08;HTTPS&#xff09;和非安全&#xff08;HTTP&#xff09;资源的情况。当浏览器试图加载非…

Diving into the STM32 HAL-----Interrupts

硬件管理就是处理异步事件。其中大部分来自硬件外围设备。例如&#xff0c;计时器达到配置的 period 值&#xff0c;或者 UART 在数据到达时发出警告。 中断是一个异步事件&#xff0c;它会导致按优先级停止执行当前代码&#xff08;中断越重要&#xff0c;其优先级越高;这将导…

linux操作系统进程

linux操作系统是对下的软硬件进行管理&#xff0c;为了能够对上提供稳定&#xff0c;快速&#xff0c;安全的服务而诞生的软件。 广义上的操作系统是包含搭载在操作系统上的软件和函数库等文件的。 狭义上的操作系统就是操作系统内核&#xff0c;进行进程管理&#xff0c;文件…

js 获取当前时间与前一个月时间

// 获取当前时间的毫秒数 var currentTimeMillis new Date().getTime();// 获取前一个月的Date对象 var dateLastMonth new Date(); dateLastMonth.setMonth(dateLastMonth.getMonth() - 1);// 获取前一个月的毫秒数 var timeMillisLastMonth dateLastMonth.getTime();conso…

php内置服务停止shell小工具,用来停止指定的端口的php内置服务进程

最近vscode总是喜欢闪退&#xff0c;这导致了上面启动的php内置服务变成了无法管理状态&#xff0c;所以就有了这个工具来停止相关的PHP内置服务进程. 将下面的代码保存到本地合适的位置&#xff0c;并命名为 stop.sh #!/bin/bash # Author: tekintian # Date: 2024-11-02 …

服务器文件访问协议

服务器文件访问协议 摘要NFS、CIFS、SMB概述SMBWindows SMBLinux SambaPython SMB NFS 摘要 本篇博客参考网上文档和博客&#xff0c;对基于网络的服务器/主机的文件访问、共享协议进行简要总结&#xff0c;完整内容将会不断更新&#xff0c;以便加深理解和记忆 NFS、CIFS、S…

Leetcode - 周赛421

目录 一&#xff0c;3334. 数组的最大因子得分 二&#xff0c;3335. 字符串转换后的长度 I 三&#xff0c;3336. 最大公约数相等的子序列数量 四&#xff0c;3337. 字符串转换后的长度 II 一&#xff0c;3334. 数组的最大因子得分 暴力方法就不演示&#xff0c;这里介绍一个…

【java】java的基本程序设计结构06-运算符

运算符 一、分类 算术运算符关系运算符位运算符逻辑运算符赋值运算符其他运算符 1.1 算术运算符 操作符描述例子加法 - 相加运算符两侧的值A B 等于 30-减法 - 左操作数减去右操作数A – B 等于 -10*乘法 - 相乘操作符两侧的值A * B等于200/除法 - 左操作数除以右操作数B /…

群控系统服务端开发模式-应用开发-菜单功能开发

为什么优先开发菜单&#xff0c;而不是优先开发管理员&#xff1f;查看一下程序草图就明白&#xff0c;还有一个重点就是&#xff0c;管理员需要添加图片&#xff0c;而我还没有封装上传工具及上传目标。 一、添加路由 在根目录下route文件夹下的app.php文件里面&#xff0c;添…

顶点动画-河流的效果

目标是让一个矩形网格面片&#xff0c;通过顶点动画&#xff0c;实现出河流的效果。&#xff08;如下图&#xff09;所谓的河流效果&#xff0c;就是呈现出波浪感&#xff0c;而想要呈现出波浪感&#xff0c;我们必须了解 波长、波动频率、波动幅度 这些关键因素 1、波浪感的关…

线程函数和线程启动的几种不同形式

线程函数和线程启动的几种不同形式 在C中&#xff0c;线程函数和线程启动可以通过多种形式实现。以下是几种常见的形式&#xff0c;并附有相应的示例代码。 1. 使用函数指针启动线程 最基本的方式是使用函数指针来启动线程。 示例代码&#xff1a; #include <iostream&g…

3.1 快速启动Flink集群

文章目录 1. 环境配置2. 本地启动3. 集群启动4. 向集群提交作业4.1 提交作业概述4.2 添加打包插件4.3 将项目打包4.4 在Web UI上提交作业4.5 命令行提交作业 在本实战中&#xff0c;我们将快速启动Apache Flink 1.13.0集群&#xff0c;并在Hadoop集群环境中提交作业。首先&…