<?xml version='1.0' encoding='UTF-8'?>
<?xml-stylesheet href="/rss/stylesheet/" type="text/xsl"?>
<rss xmlns:content='http://purl.org/rss/1.0/modules/content/' xmlns:taxo='http://purl.org/rss/1.0/modules/taxonomy/' xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#' xmlns:itunes='http://www.itunes.com/dtds/podcast-1.0.dtd' xmlns:googleplay="http://www.google.com/schemas/play-podcasts/1.0" xmlns:dc='http://purl.org/dc/elements/1.1/' xmlns:atom='http://www.w3.org/2005/Atom' xmlns:podbridge='http://www.podbridge.com/podbridge-ad.dtd' version='2.0'>
<channel>
  <title>Snicoe&apos;s Blog</title>
  <language>zh-cn</language>
  <generator>microfeed.org</generator>
  <itunes:type>serial</itunes:type>
  <itunes:explicit>false</itunes:explicit>
  <atom:link rel="self" href="https://blog-arklink-org.pages.dev/rss/" type="application/rss+xml"/>
  <link>https://blog.arklink.org</link>
  <description>
    <![CDATA[<blockquote><em><u>“这是一步死棋”</u></em></blockquote><p>这里是Snicoe自言自语的地方，随便写点东西，也没啥人看，所以看心情更新一些陈芝麻烂谷子的东西。</p><p>计划有变，我可能不会经常维护此站点，也许可能永久不更新消失在汪洋互联网之中，会回来吗？也许吧，Good Luck！</p><p>社媒: <a href="https://www.instagram.com/snicoe0716" rel="noopener noreferrer" target="_blank">Instagram</a> | <a href="https://www.youtube.com/@snicoeofficial" rel="noopener noreferrer" target="_blank">Youtube</a> | <a href="https://x.com/snicoeofficial" rel="noopener noreferrer" target="_blank">X / Twitter</a></p><p>如果你使用了我的部分服务可以前往<a href="https://status0.arklink.org" rel="noopener noreferrer" target="_blank">Status</a>页面查看可用状态，全部服务均优先运行在IPv6网络。</p><p>本人生理男性并自认为男性，性取向正常，社恐一个，看心情回复❤️。</p>]]>
  </description>
  <itunes:author>Snicoeの自言自语</itunes:author>
  <itunes:image href="https://media-cdn.arklink.org/blog-arklink-org/production/images/channel-35018318ef9161a58e1728b4144ab0a9.png"/>
  <image>
    <title>Snicoe&apos;s Blog</title>
    <url>https://media-cdn.arklink.org/blog-arklink-org/production/images/channel-35018318ef9161a58e1728b4144ab0a9.png</url>
    <link>https://blog.arklink.org</link>
  </image>
  <copyright>©2019-2025</copyright>
  <itunes:category text="Science"/>
  <item>
    <title>使用Azure通信服务(Communication Service)使用SMTP发送电子邮件</title>
    <guid>6xE0hisL-5R</guid>
    <pubDate>Wed, 25 Dec 2024 12:45:51 GMT</pubDate>
    <itunes:explicit>false</itunes:explicit>
    <description>
      <![CDATA[<p>目前几个大厂提供了邮件发送服务，就是可以使用自己的域名发送邮件，目前AWS SNS(</p><p><strong>Simple Notification Service</strong>)比较复杂，而且风控比较严格，还需要发工单才能提升配额，要么使用AWS Workmail单用户(4 USD/月)。而且滥用价格直接爆炸，不是特别推荐，这几天逛服务看到了Azure的communication service提供邮件发送服务，不提供接收邮件，但是可以使用CloudFlare的邮件转发来收取邮件，发送邮件价格(0.00025USD/email)，也发不了几封邮件其实也无所谓，基本等于免费，但是注意有发送频率的限制，还有一些坑。</p><p>1.创建资源</p><p>有两个一个是通信服务，另一个是电子邮件通信服务，直接在Azure搜索就能搜索到这两个资源</p><p><img src="https://media-cdn.arklink.org/blog-arklink-org/production/media/rich-editor/items/6xE0hisL-5R/image-8b7507746a22ff59da2d1b5397a257b4.png"></p><p>2.创建资源</p><p>没有坑，选自资源组和资源名称就可以，按步骤深渊并创建</p><p><img src="https://media-cdn.arklink.org/blog-arklink-org/production/media/rich-editor/items/6xE0hisL-5R/image-44bbe7fea074d37f064dffbabd6dbf2b.png"></p><p>3.点开创建的"电子邮件通信服务资源"选择预配域(zH-ms流汗黄豆)</p><p><img src="https://media-cdn.arklink.org/blog-arklink-org/production/media/rich-editor/items/6xE0hisL-5R/image-f00e805cd0b93ac84ac9237a15dd31a2.png"></p><p>导航到添加域-&gt; 自定义域</p><p>添加完会让你验证域名所有权，你需要按步骤在DNS托管商添加记录，一共是4个，首先是所有权认证，添加一个TXT记录类似“ms-domain-verification=xxxxxx”，这个一般很快就生效。</p><p>接下来是大头三个记录有个大坑分别是(SPF, DKIM, DKIM2)</p><p>SPF很简单直接添加TXT记录类似"sales.us.notification.azurecommtest.netv=spf1" "include:spf.protection.outlook.com -all"</p><p>DKIM有个大坑，如果你使用三级域名(<strong>xxx</strong>.sni.com)CNAME接入Azure，你需要在原本“selector1-azurecomm-prod-net._domainkey”后面添加</p><p>.<strong>xxx</strong>，变成“selector1-azurecomm-prod-net._domainkey.<strong>xxx</strong>”</p><p>Azure才会认为你的记录有效，DKMI2同理，等待几分钟，应该就全绿了。</p><p><img src="https://media-cdn.arklink.org/blog-arklink-org/production/media/rich-editor/items/6xE0hisL-5R/image-d8ab820725527c784f790c3b153c4a11.png"></p><p>4.添加别名</p><p>导航到通信服务的资源下会多出一个资源“电子通信服务域”-&gt;MailFrom address</p><p><img src="https://media-cdn.arklink.org/blog-arklink-org/production/media/rich-editor/items/6xE0hisL-5R/image-6bba88c2e191ed24a72f6ba239d9c2d0.png"></p><p>你会发现这里的+Add按钮是灰色，这是Azure限制了直接添加，但是可以用Cloudshell添加目前没有限制，以后不知道会不会限制。</p><p><a href="https://stackoverflow.com/questions/78214575/why-is-the-add-button-disabled-in-azure-email-communication-services-mailfrom-ad" rel="noopener noreferrer" target="_blank">https://stackoverflow.com/questions/78214575/why-is-the-add-button-disabled-in-azure-email-communication-services-mailfrom-ad</a></p><p>命令格式：</p><pre class="ql-syntax" spellcheck="false">az communication email domain sender-username create --email-service-name "&lt;资源名称&gt;" --resource-group "&lt;资源组名称&gt;" --domain-name "&lt;域名&gt;" --sender-username "&lt;别名@前&gt;" --username "&lt;别名@前&gt;" --display-name "&lt;收件人显示的名称&gt;"
</pre><p>如果没有报错并返回一个JSON显示Successful则添加成功。</p><p>5.测试电子邮件</p><p>导航到通信服务创建的资源，在你的资源组下可以找到，导航到“电子邮件”-&gt;"使用电子邮件"</p><p><img src="https://media-cdn.arklink.org/blog-arklink-org/production/media/rich-editor/items/6xE0hisL-5R/image-3d7557af9886bc39823109a5add6e884.png"></p><p>接下来是重头戏(配置SMTP中继)</p><p>因为Azure这一套玩意微软也没有一个标准，使用SMTP发信非常复杂。</p><p>## 新建一个应用程序(不是企业应用程序)</p><p>为了方便你我直接放链接https://portal.azure.com/#view/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/~/RegisteredApps</p><p>1.路径Microsoft Entar ID -&gt; 应用程序注册 -&gt; 新注册</p><p>不需要变更什么东西，只需要选一个名称，这个app负责账户验证。</p><p><img src="https://media-cdn.arklink.org/blog-arklink-org/production/media/rich-editor/items/6xE0hisL-5R/image-46e2beb50c579ec294288a01e7137327.png"></p><p>需要你记住应用程序(客户端)ID和目录(租户)ID后面需要用</p><p><img src="https://media-cdn.arklink.org/blog-arklink-org/production/media/rich-editor/items/6xE0hisL-5R/image-ceda8acdff7b88c472d99f8bd8ace6c6.png"></p><p>导航到证书和密码-&gt;客户端密码-&gt;新建客户端密码</p><p>记住值Value，后面需要用</p><p><br></p><p>打开你的Azure订阅</p><p>&lt;https://portal.azure.com/#view/Microsoft_Azure_Billing/SubscriptionsBladeV2&gt;</p><p>你的订阅-&gt; 访问控制(标识和访问管理) 英文叫IAM -&gt;添加自定义角色</p><p><img src="https://media-cdn.arklink.org/blog-arklink-org/production/media/rich-editor/items/6xE0hisL-5R/image-a4e99bc47c83481831bf0b21e6ae18ef.png"></p><p>名字随意，权限选择克隆角色，克隆对象读者(Reader)~~我真服了Azure这个垃圾翻译</p><p>权限只需要这两个</p><p><img src="https://media-cdn.arklink.org/blog-arklink-org/production/media/rich-editor/items/6xE0hisL-5R/image-7214985492f0e409eb661ab82ff4b252.png"></p><p>添加-&gt; 添加角色分配</p><p>搜索你刚刚添加角色的名称，点下一步成员，选择成员搜索你刚刚创建的应用程序名称，不要理会提示，选择应用，最后审阅分配。</p><p><img src="https://media-cdn.arklink.org/blog-arklink-org/production/media/rich-editor/items/6xE0hisL-5R/image-5ef2de58a89c72224ddf69d81c634f75.png"></p><p>随便找个支持smtp的应用测试发送邮件，我这里用RouterOS自带的Email功能</p><p><img src="https://media-cdn.arklink.org/blog-arklink-org/production/media/rich-editor/items/6xE0hisL-5R/image-8f3adfc16831281f8832abc60b929245.png"></p><p>服务器地址：smtp.azurecomm.net</p><p>端口：587</p><p>TLS：允许加密</p><p>用户名：通信服务资源名称 . 应用程序(客户端)ID . 目录(租户)ID&nbsp;（这里使用英文句号分开，不需要空格）&lt;/br&gt;</p><p>密码：App创建的密码值Value</p><p>理论上就可以发送成功了</p><p><img src="https://media-cdn.arklink.org/blog-arklink-org/production/media/rich-editor/items/6xE0hisL-5R/image-1be064e0f5a88a86ff9ccc445eb19443.png"></p>]]>
    </description>
    <link>https://blog.arklink.org/i/azuredianziyoujian-6xE0hisL-5R/</link>
    <itunes:episodeType>full</itunes:episodeType>
  </item>
</channel>
</rss>