使用Azure通信服务(Communication Service)使用SMTP发送电子邮件

使用Azure通信服务(Communication Service)使用SMTP发送电子邮件

· json · rss
Subscribe:

About

目前几个大厂提供了邮件发送服务,就是可以使用自己的域名发送邮件,目前AWS SNS(

Simple Notification Service)比较复杂,而且风控比较严格,还需要发工单才能提升配额,要么使用AWS Workmail单用户(4 USD/月)。而且滥用价格直接爆炸,不是特别推荐,这几天逛服务看到了Azure的communication service提供邮件发送服务,不提供接收邮件,但是可以使用CloudFlare的邮件转发来收取邮件,发送邮件价格(0.00025USD/email),也发不了几封邮件其实也无所谓,基本等于免费,但是注意有发送频率的限制,还有一些坑。

1.创建资源

有两个一个是通信服务,另一个是电子邮件通信服务,直接在Azure搜索就能搜索到这两个资源

2.创建资源

没有坑,选自资源组和资源名称就可以,按步骤深渊并创建

3.点开创建的"电子邮件通信服务资源"选择预配域(zH-ms流汗黄豆)

导航到添加域-> 自定义域

添加完会让你验证域名所有权,你需要按步骤在DNS托管商添加记录,一共是4个,首先是所有权认证,添加一个TXT记录类似“ms-domain-verification=xxxxxx”,这个一般很快就生效。

接下来是大头三个记录有个大坑分别是(SPF, DKIM, DKIM2)

SPF很简单直接添加TXT记录类似"sales.us.notification.azurecommtest.netv=spf1" "include:spf.protection.outlook.com -all"

DKIM有个大坑,如果你使用三级域名(xxx.sni.com)CNAME接入Azure,你需要在原本“selector1-azurecomm-prod-net._domainkey”后面添加

.xxx,变成“selector1-azurecomm-prod-net._domainkey.xxx

Azure才会认为你的记录有效,DKMI2同理,等待几分钟,应该就全绿了。

4.添加别名

导航到通信服务的资源下会多出一个资源“电子通信服务域”->MailFrom address

你会发现这里的+Add按钮是灰色,这是Azure限制了直接添加,但是可以用Cloudshell添加目前没有限制,以后不知道会不会限制。

https://stackoverflow.com/questions/78214575/why-is-the-add-button-disabled-in-azure-email-communication-services-mailfrom-ad

命令格式:

az communication email domain sender-username create --email-service-name "<资源名称>" --resource-group "<资源组名称>" --domain-name "<域名>" --sender-username "<别名@前>" --username "<别名@前>" --display-name "<收件人显示的名称>"

如果没有报错并返回一个JSON显示Successful则添加成功。

5.测试电子邮件

导航到通信服务创建的资源,在你的资源组下可以找到,导航到“电子邮件”->"使用电子邮件"

接下来是重头戏(配置SMTP中继)

因为Azure这一套玩意微软也没有一个标准,使用SMTP发信非常复杂。

## 新建一个应用程序(不是企业应用程序)

为了方便你我直接放链接https://portal.azure.com/#view/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/~/RegisteredApps

1.路径Microsoft Entar ID -> 应用程序注册 -> 新注册

不需要变更什么东西,只需要选一个名称,这个app负责账户验证。

需要你记住应用程序(客户端)ID和目录(租户)ID后面需要用

导航到证书和密码->客户端密码->新建客户端密码

记住值Value,后面需要用


打开你的Azure订阅

<https://portal.azure.com/#view/Microsoft_Azure_Billing/SubscriptionsBladeV2>

你的订阅-> 访问控制(标识和访问管理) 英文叫IAM ->添加自定义角色

名字随意,权限选择克隆角色,克隆对象读者(Reader)~~我真服了Azure这个垃圾翻译

权限只需要这两个

添加-> 添加角色分配

搜索你刚刚添加角色的名称,点下一步成员,选择成员搜索你刚刚创建的应用程序名称,不要理会提示,选择应用,最后审阅分配。

随便找个支持smtp的应用测试发送邮件,我这里用RouterOS自带的Email功能

服务器地址:smtp.azurecomm.net

端口:587

TLS:允许加密

用户名:通信服务资源名称 . 应用程序(客户端)ID . 目录(租户)ID (这里使用英文句号分开,不需要空格)</br>

密码:App创建的密码值Value

理论上就可以发送成功了