在 UBUNTU 22.04 上逐步构建 Postal SMTP 服务器

构建 Postal SMTP 服务器来发送批量电子邮件是电子邮件营销人员的不错选择。Postal 功能非常强大,并拥有大量开发人员的支持。它是一个用 JavaScript 和 Ruby 编写的开源邮件服务器脚本。它可用于构建内部 SMTP 服务器,就像 Mailgun、Sendgrid、Mailchimp 等一样。

Postal 的安装并不十分简单。安装过程相当复杂。这是因为 Postal 需要预先安装几个包,然后才能使用。我已尝试使其尽可能简单。

Postal SMTP 服务器要求

至少具有 4 GB RAM 和 2 个 vCPU 的 VPS 或云
操作系统:Ubuntu 22.04 或 Ubuntu 20.04

我偿试用Centos 7.x,会在启动时候一直无限重启,最后换了Ubuntu 正常

初始设置

要开始安装,您需要连接到服务器。如果您使用的是 Linux,则必须为此获取 SSH 客户端。Putty 就是这样一个 SSH 客户端。但是如果您使用的是 Linux 或 Mac,只需打开终端并输入ssh@xx.xxxxx ,其中 xx.xxxxx 是您的服务器 IP 地址。
首先切换到root用户

sudo -i

之后更新并升级你的 Ubuntu

apt update -y
apt upgrade -y

接下来设置主机名。将“example.com”替换为您的域名。

hostnamectl set-hostname postal.yourdomain.com

更新 DNS 记录
登录域名注册商并为mail.example.com创建A记录

现在让我们开始安装

安装 Docker 和 Docker-Compose

最近,postal切换到 docker 模式,以便最终用户更轻松地进行安装。因此,我们需要先安装Docker 和 Docker-Compose 。我已经详细讨论了什么是 docker、docker-compose 和安装步骤。请随意阅读本文以清楚地了解 docker。

安装 Docker

首先,设置几个包来设置 Docker 存储库

sudo apt-get install ca-certificates curl gnupg

接下来,添加Docker 的官方 GPG 密钥。

sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg

现在,您可以使用以下命令安装 Docker 存储库

echo \"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

接下来更新系统软件

sudo apt-get update -y

最后,运行以下命令安装Docker Engine和containerd。

sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

安装 Docker-Compose
首先下载 Docker Compose 的当前稳定版本:

curl -SL https://github.com/docker/compose/releases/download/v2.23.3/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose

接下来,更新二进制权限

sudo chmod +x /usr/local/bin/docker-compose

另外,创建一个符号链接

sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

最后,测试docker-compose安装

docker-compose --version

您将看到 docker-compose 版本。如果您看到其他内容,则表示出现问题。

安装Postal SMTP 的其他先决条件

安装 Docker 和 Docker-compose 后,您需要安装一些其他软件包,如 Git、MariaDB 等。
因此,让我们逐一安装它们。
首先,安装 git 和 git curl

apt install git curl jq -y

接下来克隆Postal助手存储库

git clone https://github.com/postalserver/install /opt/postal/install
sudo ln -s /opt/postal/install/bin/postal /usr/bin/postal

安装 MariaDB

现在,你可以在docker容器中安装MariaDB

docker run -d \--name postal-mariadb \-p 127.0.0.1:3306:3306 \--restart always \-e MARIADB_DATABASE=postal \-e MARIADB_ROOT_PASSWORD=postal \mariadb

现在我们已经安装了所有必备软件包,是时候安装 Postal

安装Postal

你之前安装的Postal存储库能够生成一些配置文件以供使用
运行以下命令。

postal bootstrap postal.yourdomain.com

上述命令生成 3 个文件。其中postal.yml是我们感兴趣的。
你将看到类似这样的输出

version: 2postal:web_hostname: postal.yourdomain.comweb_protocol: httpssmtp_hostname: postal.yourdomain.commain_db:host: 127.0.0.1username: rootpassword: postaldatabase: postalmessage_db:host: 127.0.0.1username: rootpassword: postalprefix: postalsmtp_server:default_bind_address: "::"dns:# Specify the DNS records that you have configured. Refer to the documentation at# https://github.com/atech/postal/wiki/Domains-&-DNS-Configuration for further# information about these.mx_records:- mx.postal.yourdomain.comspf_include: spf.postal.yourdomain.comreturn_path_domain: rp.postal.yourdomain.comroute_domain: routes.postal.yourdomain.comtrack_domain: track.postal.yourdomain.comsmtp:# Specify an SMTP server that can be used to send messages from the Postal management# system to users. You can configure this to use a Postal mail server once the# your installation has been set up.host: 127.0.0.1port: 2525username: # Complete when Postal is running and you canpassword: # generate the credentials within the interface.from_name: Postalfrom_address: postal.yourdomain.comrails:# This is generated automatically by the config initialization. It should be a random# string unique to your installation.secret_key: 2f271404e1fac638bf546b0ee4b6485c713351aba71291ae55253f345d0dc045c0450a5750e7ca2bbd2068628d5a2253454cca352c46ea9d9804ed59cbe8a027b24dc74bcadd3b50ae21138a61d344609d13f0875caf21c53681e5289868194f756a8c34e2409b8ec92e3e149c13fe4e08dc6cbdb04bb02bc8943d1ff8faeae6

初始化数据库

初始化数据库非常简单,只需执行以下命令,您就会看到在输出中创建的数据库表。

postal initialize

之后,是时候建立Postal

postal make-user

系统将要求您输入管理员用户的电子邮件 ID、姓名和密码。输入答案,然后转到下一步

启动并运行Postal

启动和运行Postal也非常简单。只需运行以下命令即可。

postal start

您可以检查Postal状态

postal status

安装 Caddy(这个是官网的教程,也可以使用自己熟悉的)

这是Postal添加的新功能,用于自动安装 SSL。

docker run -d \--name postal-caddy \--restart always \--network host \-v /opt/postal/config/Caddyfile:/etc/caddy/Caddyfile \-v /opt/postal/caddy-data:/data \caddy

现在,您可以https://postal.yourdomain.com使用管理员凭据登录。您将看到类似这样的管理页面。在这里插入图片描述

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

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

相关文章

LangChain入门学习笔记(七)—— 使用检索提高生成内容质量

大模型训练使用的数据是开放的、广泛的,因此它显得更加的通用。然而在有些应用场景下,用户需要使用自己的数据使得大模型生成的内容更加贴切,也有时候用户的数据是敏感的,无法提供出来给大模型进行通用性的训练。RAG技术就是一种解…

我是如何使用ai来对uwsgi与nginx的配置进行排查的

以下案例都使用英文来进行询问与排错,原因是因为中文排查结果与实际并不相符 uwsgi的配置排查 1:现在我有2个容器,第一个容器是nginx镜像制作出来的容器,用于作为代理服务器 2:第二个容器是python镜像制作出来的容器,在这个python容器里面安装了django与uwsgi,在这…

linux服务器 部署jenkins

在 Linux 服务器上部署 Jenkins 通常包括以下几个步骤: 更新系统软件包: sudo apt update sudo apt upgrade 安装 Java: Jenkins 需要 Java 运行时环境。推荐使用 OpenJDK 11。 sudo apt install openjdk-11-jdk 添加 Jenkins 软件源并导入…

真北6月小结:于旷野撒野,于轨道修道

一、跑步 1、运动数据 6月跑步111.28公里,时长13:30:48,平均配速717",共19次,其中3次十公里,分别在千灯湖、梧州、二沙岛。 早起120个仰卧起坐,12个俯卧撑,120个深蹲…

Spring boot中如何使用Thymeleaf模板

大家好,我是 网创有方。今天给大家分享下Spring boot中如何使用Thymeleaf模板。 在 IntelliJ IDEA 中使用 Thymeleaf 模板引擎来开发 Spring Boot 应用程序是相对简单的。以下是一些基本步骤,帮助你在 IDEA 中设置和使用 Thymeleaf: 创建一个…

在 CentOS 8 Stream 上直接安装 Docker CE 的方法可能会受到一些限制,但我们可以尝试使用另一种方法来安装 Docker

在 CentOS 8 Stream 上安装 Docker 由于在 CentOS 8 Stream 上直接使用官方仓库安装 Docker CE 可能会有问题,您可以尝试通过 Docker 官方提供的安装脚本来安装 Docker。以下是具体步骤: 下载 Docker 安装脚本: curl -fsSL https://get.dock…

LabVIEW项目外协时选择公司与个人兼职的比较

​在选择LabVIEW项目外协合作伙伴时,外协公司和个人兼职各有优劣。个人兼职成本较低且灵活,但在可靠性、技术覆盖面、资源和风险管理上存在不足。而外协公司拥有专业团队、丰富资源、完善的项目管理和风险控制,尽管成本较高,但能提…

基于单片机火灾自动报警系统设计

摘 要: 我国的火灾自动报警技术已经相对的较为成熟,随着信息技术的发展,网络化、信息化在火灾自动报警器上的应用也越来越多。无线通信的方式使得报警器本身可以方便的应用于大大小小的环境,例如工厂、社区和学校等等。通过对单片…

音频分离人声和伴奏可以实现吗?手机人声分离工具10款无偿分享!

随着科技的飞速发展,音频处理技术已经取得了显著的进步,其中音频分离人声和伴奏已成为现实。这一技术不仅为音乐制作人和音频工程师提供了便利,更为广大音乐爱好者提供了无限的创作可能性。本文将为大家分享10款手机人声分离工具,…

Java知识点整理 16 — Spring Bean

在之前的文章 Java知识点整理 8 — Spring 简介 中介绍了 Spring 的两大核心概念 IoC 和 AOP,但对 Spring Bean 的介绍不全面,本文将补充 Spring 中 Bean 的概念。 一. 什么是 Spring Bean 在 Spring 官方文档中,对 bean 的定义为&#xf…

JVM原理(二):JVM之HotSpot虚拟机中对象的创建寻位与定位整体流程

1. 对象的创建 遇到new指令时 当Java虚拟机遇到一个字节码new指令时。 首先会去检查这个指令的参数是否能在常量池中定位到一个类的符号引用,并且检查这个符号引用代表的类是否被加载、解析和初始化过。 如果没有,那么必须执行类的加载过程(加载、检查…

npm安装依赖报错——npm ERR gyp verb cli的解决方法

1. 问题描述 1.1 npm安装依赖报错——npm ERR! gyp verb cli npm MARN deprecated axiosQ0.18.1: critical security vuLnerability fixed in v0.21.1. For more information, npm WARN deprecated svg001.3.2: This SVGO version is no Longer supported. upgrade to v2.x.x …

Python爬虫技术与反爬虫策略

Python爬虫技术与反爬虫策略 概述User-Agent 伪造应对302重定向IP限制与代理使用Cookies和Session管理动态内容加载数据加密与混淆请求频率限制爬虫检测算法法律与道德考量结语 概述 在数字化时代,网络数据采集已成为获取信息的重要手段之一。然而,随着…

华为实训案例

案例下载 案例内包含空拓扑图、配置完整的拓扑、以及步骤脚本文档,可按需下载。 拓扑图 任务清单 (一)基础配置 根据附录1拓扑图、附录2地址规划表、附录3设备编号表,配置设备接口及主机名信息。 将所有终端超时时间设置为永不…

SOLIDWORKS卡顿反应慢怎么解决 慧德敏学

如果您的SOLIDWORKS软件运行缓慢或反应迟钝,可以尝试以下方法来提高性能和响应速度: 一、硬件检查与升级: 检查计算机硬件配置是否满足SOLIDWORKS官方推荐的要求,特别是CPU、内存和显卡。如果配置较低,考虑升级硬件以…

postgrel的SQL 的执行顺序

在 PostgreSQL 中,SQL 查询的执行顺序一般按照以下步骤进行: FROM 子句: 查询首先从 FROM 子句开始,确定要检索数据的表或视图。 WHERE 子句: 如果有 WHERE 子句,会根据 WHERE 子句中的条件来筛选数据。这…

哨兵模式--哨兵节点的功能?

哨兵节点的主要功能有: 集群监控:监控 主、从节点的健康状况;自动切换主节点:当 Master 运行故障,哨兵启动自动故障恢复流程:从 slave 中选择一台作为新 master。通知:让 slave 执行 replicaof…

社交风潮塑造者:探索用户在Facebook的影响力

在当今数字化社会中,Facebook不仅是人们社交互动的主要平台,更是塑造社交风潮和文化趋势的重要力量。本文将从另一个角度深入探讨用户在Facebook上的影响力,探索其如何通过个人行为和互动,影响和改变社会的各个方面。 个人表达和内…

Cryptographic algorithms—(Green-Book)加密算法

Cryptographic algorithms—加密算法 9.2.3 加密算法9.2.3.1 概述9.2.3.2 哈希函数9.2.3.3 对称密钥算法9.2.3.3.1 概述9.2.3.3.2 加密和解密9.2.3.3.3 高级加密标准9.2.3.3.4 加密操作模式9.2.3.3.5 消息认证码9.2.3.3.6 密钥包装9.2.3.3.7 Galois/Counter Mode9.2.3.3.7.1 概…

探索AudioLM:音频生成技术的未来

目录 2. AudioLM的基础理论 2.1. 音频生成的基本概念 2.2. 语言模型在音频生成中的应用 2.3. 深度学习在音频生成中的作用 3. AudioLM的架构与实现 3.1. AudioLM的基本架构 3.1.1 编码器 3.1.2 解码器 3.1.3 生成模块 3.2. 训练过程 3.2.1 数据预处理 3.2.2 损失函…