如何使用Cloudflare Email Routing创建域名邮箱免费发送邮件

用过 CloudFlare 的都知道,他家的 mail 服务是可以将接收到的邮件转发到指定邮箱用来实现域名邮箱的收件服务的,但是这种方式只可以接收,不能发送邮件。

偶然间看到一个开源项目,实现了使用域名部署临时邮箱,研究了一下发现,发件服务使用的是 CloudFlare 的 Worker 实现的,个人能力有限,网上搜索了一番,总结了几篇文章的教程,成功的实现了域名邮箱的发件。

绑定域名

首先需要将域名绑定到 CloudFlare 上,这一步想必不用多说了吧,会的都会。

启用电子邮件路由

官方教程:https://developers.cloudflare.com/email-routing/get-started/enable-email-routing/

1、进入 CloudFlare 控制台,选择网站,找到你想要添加域名邮箱的域名,点击进入

YXdNvGk

2、点击侧边栏 电子邮件》电子邮件路由,然后点击开始使用

PfdSqPf

3、设置域名邮箱前缀和转发邮箱

wVZA4xv

4、验证转发邮箱,我这里直接用的登录 CloudFlare 的邮箱,直接显示已验证

XBDOjBC

5、添加解析记录

6hfjnru

创建 Worker

Work 代码从这里复制即可:https://gist.github.com/ihsangan/6111b59b9a7b022b5897d28d8454ad8d

直接粘贴部署,一气呵成,不需要修改什么

准备 DKIM 私钥(可选,非必须)

DKIM 是一种电子邮件认证技术,可以验证邮件的发送者身份。

在终端执行下面的命令,生成 DKIM 私钥,参考 Adding-a-DKIM-Signature

openssl genrsa 2048 | tee private_key.pem | openssl rsa -outform der | openssl base64 -A > private_key.txt

echo -n "v=DKIM1;p=" > dkim_record.txt && openssl rsa -in private_key.pem -pubout -outform der | openssl base64 -A >> dkim_record.txt

这两条命令会生成 3 个文件:

  • private_key.pem:私钥文件
  • private_key.txt:私钥文件,base64 编码
  • dkim_record.txt:DKIM 记录

其中 private_key.txt 文件中的内容就是 DKIM_PRIVATE_KEY 的值,如果想要配置的话,发件的时候需要这个值。

配置域名解析

1、进入 Cloudflare 托管域名控制台,选择你的域名 -> 点击 DNS,接下来,需要添加 3 条 TXT 记录并修改 1 条 TXT 记录

J8PrPN4

新增的如下:

类型 名称 备注
TXT _dmarc v=DMARC1; p=reject; adkim=s; aspf=s; rua=mailto:YYY; ruf=mailto:YYY pct=100; fo=1; 固定值,直接粘贴
TXT mailchannels._domainkey v=DKIM1;p=MIIEpQIBAAKCAQEA... 这一条可以不配置,值为上一步 dkim_record.txt 文件的内容
TXT _mailchannels v=mc1 cfid=yesmore.workers.dev 将其中的 yesmore 修改为你的 Worker 账号名称,不知道的可以参考下边截图

xD5QlMG

需要修改的如下(TXT记录值为 example.com 即你的域名的那条):

类型 名称 备注
TXT example.com v=spf1 include:_spf.mx.cloudflare.net include:relay.mailchannels.net ~all 把值替换为这个

最后一共 4 条 TXT 记录:

CmC8zc4

如果配置了 DKIM,可以在 dkim-record-checker 验证 DKIM 记录是否配置成功。

验证发送

方法一:打开网页 https://<sender-name>.<your-name>.workers.dev/submit 根据表单填写内容吗,验证是否可以正常发送

hf65o89

方法二:使用 API 发送

请求地址 https://<sender-name>.<your-name>.workers.dev 请求方法 POST 请求体:

{
  "from": {
      "email": "[email protected]",
      "name": "发送者"
  },
  "personalizations": [
    {
      "to": [
        {
          "email": "[email protected]",
          "name": "接收者"
        }
      ]
    }
  ],
  "subject": "邮件标题",
  "content": [
    {
      "type": "text/plain",
      "value": "邮件内容"
    }
  ]
}

成功的话会返回一个 null,失败的话会返回报错信息,根据报错信息 google 一下

WsJTlpj

VIA

oiov/vmail:  An open source temporary email tool. 只需一个域名部署临时邮箱,支持收发邮件,多域名邮箱配置,密码找回。https://github.com/oiov/vmail

如何使用Cloudflare Email Routing 免费发送邮件 – 软件分享 – LINUX DO https://linux.do/t/topic/47025

vmail/docs/send-tutorial.md at main · oiov/vmail https://github.com/oiov/vmail/blob/main/docs/send-tutorial.md

Related Post

发表回复