为Amazon Workmail配置自动发现Auto Discover

一、背景

在配置邮件客户端的过程中,新建邮箱时除了输入域名、用户名、密码之外,通常需要手工填写收发邮件的服务器地址。此时如果打开了Auto Discover也就是自动发现功能,就能无需手工输入,邮件客户端将自动识别服务器地址,大大简化了配置过程。目前电脑上在用的邮件客户端、手机上的邮件客户端都具备自动发现功能。

当使用Amazon Workmail提供邮箱服务的时候,默认是不开启Auto Discover功能的,需要手工配置。本文介绍如何配置。

二、配置一个可正常收发邮件的Wokmail邮箱

请参考这篇文章创建Workmail邮箱:

如果您需要开启MFA双因素认证,那么请参考这篇文章配置:

https://blog.bitipcman.com/workmail-for-oversea-mail-service/

到目前为止,您应该已经拥有一个配置好的可以正常工作的邮箱了。

https://blog.bitipcman.com/amazon-workmail-enable-mfa-by-iam-identity-center/

三、配置Auto Discover自动发现

1、选择提供服务的方式

Auto Discover的原理是用户邮箱所使用的域名下,提供一个名为autodiscover.xml的文件,这个文件需要以HTTPS的形式进行暴露。为了提供这个文件,可以使用AWS的托管服务包括AWS Certificate Manager证书服务(以下简称ACM)+CloudFront的形式,也可以使用自建WEB Server的方式搭建。

本文使用CloudFront方式提供服务。

2、在ACM服务上创建HTTPS服务需要的证书

在AWS控制台上,首先切换到美东1区域,也就是United States (N.Virginia)弗吉尼亚北部区域。这是因为CloudFront的全球CDN入口管理在这个区域,因此搭配CDN用途的证书必须在本区域生成。然后再左上角搜索Certificate,即可看到证书服务。如下截图。

再次确认右上角的Region正确,然后点击Request a certificate按钮。如下截图。

在选择证书类型的位置,选择Request a public certificates创建一个公有证书。因为这个证书是需要被所有外部邮件客户端信任的,因此必须要选择“Public”类型。如下截图。

在域名位置,输入*.bitipcman.com。这里的例子,域名本身叫做bitipcman.com,然后前边加*号通配符,表示所有子域名。这样稍后配置域名解析时候就可以整体通过了。本证书仅在AWS上的CloudFront等服务可用,生成后不能下载。在认证方式位置,选择DNS验证。如下截图。

注意:这个证书的申请,不影响您在别的云服务商生成的证书,对现有证书体系没有影响。如果您之前在别的云申请证书,它们会继续正常运行,使用当前已经存在域名访问都会由之前的证书来提供服务。当且仅当域名解析到下一步为邮件Auto Discover配置的CloudFront端点时候,才会分配AWS办法的证书。因此无需担心现有证书使用场景。AWS证书一侧即便填写错误,也只是影响邮件Auto Discover配置,不影响之前在别的云申请的证书。

证书申请后,稍等过几秒,页面上会生成CNAME nameCNAME value。把这个信息添加到当前域名的解析记录中,再等待五分钟,即可看到证书颁发成功。如下截图。

具体添加这个CNAME的方法,根据您使用的域名解析服务商有所不同。域名解析服务商可以是任意一个云服务商提供,也可以是您自行搭建的企业自己的DNS,也可以是使用Amazon Route 53解析服务。

填写这两个记录的方式是,首先登录当前域名解析的服务商,选择添加新的解析记录,将新的解析记录选择为CNAME类型,然后把CNAME name里边的记录输入进入。注意不同的解析要求输入的不一样,有的解析服务商要求输入完整名字,有的域名解析服务商不要求输入域名后半部分本身,之要求输入域名·圆点之前的子域名。这个输入方式请咨询域名服务商。在CNAME value部分,域名解析服务商是都要求完整填写整个记录。添加时候,TTL可以选300秒。

至此证书配置完成。

3、为Autodiscover功能创建CloudFront发布点

确认当前创建的Workmail服务位于哪一个区域,三个区域分别使用不同的endpoint:

  • US East (N. Virginia) — autodiscover-service.mail.us-east-1.awsapps.com
  • US West (Oregon) — autodiscover-service.mail.us-west-2.awsapps.com
  • Europe (Ireland) — autodiscover-service.mail.eu-west-1.awsapps.com

将这个endpoint服务下来,下一步将会使用。

现在进入CloudFront服务。在左上角输入CloudFront,进入服务。如下截图。

点击左侧菜单第一项Distributions分发点,然后点击右上角创建按钮。如下截图。

在向导第一步,在Distribution name位置,输入workmail-autodiscover作为名称,在类型位置,选择Single website or app的按钮,创建单一发布点。在Custom domain位置,输入autodiscover.bitipcman.com,然后点击Check domain按钮。此时页面提示,本域名的解析是Route53负责的,因此CloudFront创建发布点后完成后会指引您创建Route53的域名解析记录。最后点击右下角的下一步按钮。如下截图。

在向导第二步,在Origin type类型位置选择Other,在Origin位置下的Custom origin输入autodiscover-service.mail.us-east-1.awsapps.com,在Origin path -optional位置留空。在下方的Origin settings位置,选择默认的Use recommended origin settings。点击下一步继续。如下截图。

在向导第三步,在Web Application Firewall (WAF)设置下,选择Do not enable security protections。然后点击下一步继续。如下截图。

在向导第四步,在Get TLS certificate位置,选择前一步在ACM内创建号的证书,然后点击下一步按钮。如下截图。

在向导最后一步,点击创建按钮。如下截图。

发布点创建完成。此时需要等待大约5分钟,等右上角的Deploying按钮变成部署完成,才可测试访问。

创建发布点步骤完成。

4、为CloudFront绑定CNAME别名

在前文步骤提到,CloudFront控制台会辅助指引您在Route53中添加解析记录,这是2025年6月改版后的CloudFront控制台的变化。

首先从CloudFront控制台中确认发布点已经创建完成,其状态从Deploying已经变化为创建时间。在这里点击Alternate domain names下方的Route doamin to CloudFront按钮。如下截图。

在弹出的对话框中,点击Set up routing automatically。如下截图。

此时CloudFront会自动在Route53上设置新的CNAME记录。窗口正常关闭就表示创建完成。

此时需要需要二次确认,可以在Route53上查询autodiscover开头的域名记录,此时可以查到上一步自动创建的记录。如下截图。

添加CNAME域名解析完成,等待几分钟生效。

如果您的域名不是在Route53解析而是在其他云服务商,那么还需要您手工添加解析。本例就是autodiscover.bitipcman.com的CNAME记录,将其解析为上一步复制下来的Distribution domain name,自行添加CNAME时候TTL可以设置为300秒。

至此CNAME设置完成。

5、修改CloudFront高级设置满足AutoDiscover的要求

以上创建Autodiscover需要的发布点的功能是由CloudFront向导自动进行的,因此一些选项都处于默认配置,这里还需要手工调整部分设置。

点击进入刚才的发布点,点击Behaviors标签页,选中下边唯一的一条,点击Edit按钮。如下截图。

在这个页面下,对如下选项做出调整,其他选项不需要修改:

  • Viewer protocol policy位置选择HTTPS only
  • Allowed HTTP methods位置,选择GET, HEAD, OPTIONS, PUT, POST, PATCH, DELETE

如下截图。

点击保存按钮,完成设置。

6、测试CloudFront发布点正常

执行如下命令,请替换其中的域名为实际使用的域名:

curl -X POST -v https://autodiscover.bitipcman.com/autodiscover/autodiscover.xml

返回信息中包含如下一段,则表示正常。

> POST /autodiscover/autodiscover.xml HTTP/2
> Host: autodiscover.bitipcman.com
> User-Agent: curl/8.7.1
> Accept: */*
> 
* Request completely sent off
< HTTP/2 401 
< content-length: 0
< date: Tue, 17 Jun 2025 08:00:48 GMT

四、使用多种客户端验证自动发现功能

1、MacOS上的Outlook

进入Outlook for Mac,点击设置,点击Account,点击添加account。填写邮箱,点击继续。如下截图。

在邮箱登录位置,输入Domain\用户名的格式,本例中,邮箱是zhangsan@bitipcman.com,那么其Domain就是bitipcman.com,用户名就是zhangsan。点击下一步继续。输入密码,点击添加账户即可完成。如下截图。

至此Outlook客户端自动发现功能工作正常。

注意:如果当前的Amazon Workmail开启了MFA功能,因为Outlook客户端是不支持配置MFA的,因此您就需要输入本账户的Personal Access Token(简称PAT)替代密码。开启MFA和实用PAT的方法请参考这篇博客。

2、苹果手机iOS系统内置的邮箱功能

在苹果手机的iOS操作系统上,添加新的邮箱,输入邮箱名后,点击登录,即可借助Autodiscover功能自动完成服务器地址等配置。如下截图。

五、参考文档

Enabling AutoDiscover to configure endpoints

https://docs.aws.amazon.com/workmail/latest/adminguide/autodiscover.html