使用Amazon SES搭建一个邮件营销的服务器,使用开源客户端Listmonk。

下面的示例步骤,使用了公网的VPS进行验证,生产环境的时候可以使用Nginx方向代理的方式实现。

搭建在本地,注意经常备份postgresql数据库的数据。

步骤#01:登录Amazon

创建 AWS 账户并登录管理控制台

在左上角搜索框中输入“SES”,就可以搜到Amazon Simple Email Service

步骤#02:验证域名

验证用于发送电子邮件的电子邮件地址或域名

然后点击“Create Identity”

验证域名

输入一个自己的域名

点击Create Identity

开始验证

有3条CNAME,1条MX,一条TXT,去DNS后台设置一下。

注意它这里的MX记录,是这样的:10 feedback-smtp.us-east-1.amazonses.com,直接将这串字符填入到Value中去就可以。

验证成功后:

发送测试邮件

下一步

这个测试邮件并没有发给自己,发给了 [email protected],没法看到效果。

不过可能在“Create Identity”这步中验证一个自己的个人邮箱,比如Gmail邮箱,可以用于这里的Test Email测试,这一步我没有试过,但在Listmonk中发送测试邮件,就是这么操作的。

步骤#03:安装listmonk

首先安装数据库postgresql

sudo apt install postgresql postgresql-contrib

如果使用的是宝塔面板的话,可以直接进入“软件商店”,安装PostgreSQL管理器,然后安装一个数据库版本。

根据config.toml中的配置,新建一个listmonk数据库,用户名和密码都在这个配置文件中有。

安装listmonk:

下载最新的发布版本:https://github.com/knadh/listmonk/releases ,上传到服务器。我下载的是:listmonk_2.4.0_linux_amd64.tar.gz

解压缩后:

安装流程第一步是产生一个配置文件:

命令:./listmonk --new-config to generate config.toml. Then, edit the file.

这个需要使用root权限产生。

第二步:连接并初始化数据库

./listmonk --install to install the tables in the Postgres DB.

成功的话,应该如下图所示:

注意:配置文件中需要修改登录地址为当前服务器的IP地址,默认是localhost:9000, 将Localhost改为VPS的地址。

步骤#04:配置listmonk

首先在AWS SES中创建一个用户名和密码

创建后,有3个字段:

IAM User Name

Smtp Username

Smtp Password

我们使用SMTP Username与SMTP Password

listmonk设置如下,host填写AWS后台显示的“SMTP endpoint”,例如email-smtp.us-east-1.amazonaws.com

如果发送测试邮件,报错“554 Message rejected: Email address is not verified.“,是因为没有将这个目标邮件地址在AWS SES中认证,这是因为新申请的账号处于沙盒期,必须认证过的邮箱才能接收邮件。(使用“Create Identity”认证邮箱),出沙盒的账号可以给任意邮箱发送邮件。

生产环境部署Listmonk

生产环境的时候,建议使用Nginx反向代理的方式实现:

参考:https://github.com/knadh/listmonk/issues/684

server {
        listen 80 default_server;
        listen [::]:80 default_server;
        server_name demo.listmonk.app;

        location / {
                proxy_pass http://127.0.0.1:9000;
        }
}

listmonk配置The URL in your HTML shows :9000, which means the URL is configured incorrectly in Settings -> General. It should just be https://listmonk.14servers.net (without :9000), as that’s what’s exposed to the public.

另外一个配置SSL的示例:https://yasoob.me/posts/setting-up-listmonk-opensource-newsletter-mailing/#setting-up-ssl

引用:

官方文档:https://listmonk.app/docs/

使用 Amazon SES 控制台、Amazon SES API、AWS 软件开发工具包或 AWS 命令行界面发送电子邮件。