使用 Mailgun 用于邮件服务

在近期,我逐步将近乎所有的服务所使用的邮件服务都更换为 Mailgun,本文我将讲述我作出这一决定的原因和具体做法。

在确定使用 Mailgun 以前,我曾对SMTP邮件推送这一部分有过多种尝试。

曾用品

阿里/腾讯 企业邮箱(国内)

在我仍在职圆云的时候,我们依靠阿里云的企业邮箱进行企业事务处理。

企业邮箱同时兼具收发功能,具有较好的稳定性,但价格较高。对于个人服务来说,买五个账号起步,每年600元的企业邮箱,似乎毫无必要。
而腾讯企业邮箱等服务依赖企业微信,过于冗杂,对于个人来说过于麻烦,而且 Exchange 协议支持的不完善。

因此,我放弃这一想法。

阿里/腾讯 邮件推送

我曾在圆云时期使用阿里云的邮件推送进行邮件通知。其好处在于,稳定性较高,且支持多域名多用户等情况。
但其只提供了邮件发送服务,完全不对邮件接收做支持,甚至不支持转发,因此在使用一段时间后我放弃了这一方案。

ahdark.com 在很长一段时间均使用阿里云邮件推送进行通知,单独设立域名 notify.ahdark.com

Microsoft Exchange 企业邮箱

Microsoft Exchange 算是一个可自定义性较高的解决方案,依赖 Microsoft 企业服务。使用开发者 E5 套餐和基础商业套餐都可以自由使用这一服务,成本可以控制在较为合适的区间内。不仅如此,它还同时提供接收和发送邮件的功能,使得我的域名邮箱服务无需单独设立。

但缺点在于,其高度依赖微软的企业用户服务,而 login.live.com 的难用程度众所周知。而且这一方案因服务器在国外,无法将邮箱挂在 Windows 10 和 Windows 11 的 Mail 应用程序,在系统级接收邮件变得较为困难。

因此我在使用一段时间这一方案后逐步进行更换,现仅保留 sourcegcdn.com 与 sourcegcdn.net 在使用这一方案。

Forward Mail

这一服务提供域名邮箱的邮件转发,功能不多但比较有效。在 ahdark.com 使用阿里云邮件推送进行发件时,我也使用 Forward Mail 服务进行邮件的接受服务。我将对应账号名的邮件转发至 ahdark@outlook.com (即我的主邮箱),以此实现对域名邮箱的接收。但因其没有提供发件服务,我只得使用代理发送。后续我使用 Mailgun 同时替代了这一服务和阿里云邮件推送,因此被弃用。

Mailgun

Mailgun 是一个专为电子邮件提供服务的公司,其主体为 Mailgun Technologies, Inc.,服务站点位于 https://www.mailgun.com
其产品囊括了邮件的发送、转发、跟踪。支持SMTP、API两种邮件发送方法;WebHook、Forward两种邮件转发方法,和较为有效的跟踪方法。

因其较好的名誉和较高质量的服务,我在近期开始使用这一服务。

bafkreihyjoxtxy3qzupsv7a32vhqk6l6ion4s4gr3behicy2qizdwdwilu.png

注册

Mailgun 的注册需要以下信息:

  • 一个已有的邮箱
  • 手机号码(需接收验证码)
  • 信用卡号(仅作验证)

我使用自己持有的 MasterCard 虚拟卡和虚拟手机号码进行注册

套餐

bafkreicr67iwugxh6agwsal4fq5nona52k5beqzifaoioxrudcmpmgda2m.png

bafkreibztknge3h5ugrvtazb6rhv4tcmkq4r7o4gszvjiddwcodos34vze.png

注册后会开启一个30天的使用,称作 Foundation Trial 套餐。在其阶段你可享受以下服务:

  • 5000 条邮件收发/月
  • 5 天的日志追踪期
  • 7*24 服务支持

30天后会自动转换为 35美元/月 的 Foundation 50k 套餐,即 50k 邮件收发/月。

注册后,你可以在 Billing 页面进行 Downgrade 以降级到按量付费(即用即付)的Flex套餐。此套餐没有月固定付费,提供 1000 条邮件收发/月 的免费额度和 1000 条额外邮件收发/1美元 的即用即付模式。

添加域

注册后,你可以在后台添加域名。

bafkreihsprgy64njjs7o3yidfo7pw3dwfsh2pkkhmxwy2al2tt5sydqpu4.png

Mailgun 会赠送一个 Sandbox 域名用于测试,你也可以添加自己的域名。

添加域名需要对域名添加DNS解析:

记录名 记录类型 记录值示例
@ TXT v=spf1 include:mailgun.org ~all
mx._domainkey TXT k=rsa; p=<string>
@ MX 10 mxa.mailgun.org
@ MX 10 mxb.mailgun.org

具体请参考添加时说明。

SMTP 发件

添加域名后,你可以在 Sending - Domain Settings - SMTP credentials 找到 SMTP 凭据的设置项。

bafkreih6cjl6rhyadn3o7tgqflbio35p6oal7f7ne2mo6pceymmeyj3oda.png

设置凭据后,你会得到对应账号的密码。而后可使用以下凭据登录:

  • SMTP服务器:smtp.mailgun.org
  • 端口:25 / 465 (SSL/TLS) / 587
  • 账号:no-reply@ahdark.blog
  • 密码:<your-password>

收件(转发)

bafkreidgxgnmvxqetateeeozfurkbvhulxcfe6d5f27bystiu6funqgk2m.png

你可在 Receiving 里设置邮件接收的处理方法,支持邮箱转发和WebHook两种方法,具体可参考文档配置:https://documentation.mailgun.com/en/latest/user_manual.html#routes

WordPress 使用 Mailgun 发件

Mailgun 官方制作了 Mailgun for WordPress 这一插件,也是我所使用的方法。

首先需在 Mailgun 后台生成 API 凭据,可在 Sending - Domain Settings - Sending API keys 找到。

生成后,可凭 Mailgun 添加的域名和 API Key 作为登陆凭据,只需在 WordPress 的 Mailgun 插件设置页面填入。当然,也需完善相关信息。

bafkreihlsndtobop3djkqwmokc3lshkgdv56xfzsncgo74d4thjp4p426m.png

完成配置后,可在底部点击保存,而后点击 Test Configuration 按钮进行测试。

总结

以上便是本篇文章的全部内容。

之所以没有考虑自建SMTP的原因主要就是因为发件收件的不稳定,且几乎全部国内云服务厂商都封禁了25端口或严格限制发件服务器架设。

正是因此,国内服务器自建SMTP的法子基本被封死,我也因此写了本文。

在最后,只希望邮件服务不会如同短信服务一般,被滥用作为恶意攻击他人的工具。

Read more

Web 后端应用程序的可观测性改进

Web 后端应用程序的可观测性改进

相信日志,即 Logging,对于大多数开发人员是不陌生的。 日志是一种记录应用程序运行状态的重要手段,它可以帮助我们了解应用程序的运行情况,排查问题,甚至是监控应用程序的性能。在 Web 后端应用程序中,日志是不可或缺的一部分,它可以记录用户请求、应用程序的错误、警告等信息,帮助我们更好地了解应用程序的运行情况。 但它真的不可或缺吗?读完这篇文章后我想我给你的答案是:不是。日志的形式很单一,只是文本,这注定了它很冗杂的特点,我们很难从中提取我们需要的信息。即使你使用 AI 如 ChatGPT,也并不一定可以得到一个有建设性的答案。对于自己构建的应用程序,ChatGPT 既不了解也不可能去真的全部了解你的代码,这就带来了问题。 为什么日志不是不可或缺的 日志的形式单一,以纯文本呈现,信息常常显得冗余且难以提取。即便是使用 AI 进行分析,也不一定能提供清晰的洞见。日志的主要问题在于: * 冗余性和庞大的数据量:日志往往包含大量无用信息,查找特定问题的关键信息耗时。 * 缺乏上下文关联:单条日志难以呈现多个服务之间的调用关系和上下文,尤其是在微服务架构中

By AHdark
我如何从零开始学习一门编程语言

我如何从零开始学习一门编程语言

作为一门全栈开发,我理应掌握多门语言。截止 2024 年 9 月,我掌握了超过 30 门编程语言,可以使用它们构建简单的应用程序、为开源社区提交代码、为公司开发产品。我们不讨论对于“掌握”的定义,让我梳理思路,详细阐述我是怎么一步步掌握如 此多的编程语言的。如果你也想学习一门新的编程语言,希望这篇文章能够帮助到你。

By AHdark