亚马逊AWS官方博客

使用 Amazon Workmail 搭建海外企业邮件服务

一、背景

在跨境电商等许多业务场景中,需要使用海外邮箱服务器用于海外分支机构员工、海外客服等相关业务联系。此时使用国内邮箱服务器,可能存在发信延迟、收信延迟、正常邮件被投递到异常垃圾邮件箱等情况。因此,在海外搭建一套企业自己的邮件服务是这个场景的最佳选择。

企业邮件服务通常可选的方案包括:一是购买商用版本的企业邮件服务器软件并在云上私有化部署,二是使用开源邮件服务器私有化部署,三是购买第三方 SaaS 方式的企业邮箱。在亚马逊云科技的云端服务中,针对此场景提供的云服务是 Amazon Workmail。

Amazon Workmail 的底层是基于 Amazon Simple Email Service(SES)服务构建,但是在上层为用户提供了完整的、友好的 WEB UI,包括了日历、联系人、便签功能,还为 PC 端和移动设备提供了 IMAP、POP3、ActiveSync 等协议的支持,可进行移动端设备同步。用户在整个使用过程中,对 Workmail 底层架构无感。除去标准邮件功能外,Workmail 还提供了面向企业邮箱管理的功能,包括邮箱保留周期规则、审计合规(Journaling)、邮件转发规则、关联 Lambda 等功能。目前,Amazon Workmail 在 us-east-1,us-west-2 和 eu-west-1 三个区域可用。

需要注意的是,本场景使用 Workmail 是企业自用邮件服务器,发送和接受在同等重要的地位,甚至接受外部邮件的重要性大于发送。如果您是需要向外发送海量的注册通知、确认信、广告、营销等类型的邮件,那么您应选择直接使用 Amazon Simple Email Service(SES)服务,而不是通过 Workmail 发起。虽然 Workmail 底层也是通过 SES 实现发送和接收,但是 Workmail 是面向企业自用场景,不提供批量发送营销邮件的专用功能。这些功能包括用于发送邮件的独立 IP、邮件信誉管理、日志、模版等,他们仅在 SES 服务中提供。

本文介绍如何在数分钟内配置好一个 Workmail 企业邮箱并投入使用。

二、自有域名和解析要求

1、准备自有域名

为使用企业邮箱,您需要注册并拥有自己的域名。在配置邮箱过程中,会要求为您的域名添加一系列 DNS 解析记录,包括 CNAME 记录,MX 记录,TXT 记录等多种记录,分别用于域名所有人验证、反垃圾签名等用途。

域名的注册和解析是两个独立的行为。您可以在任意域名注册商完成域名注册,然后在任何提供标准 DNS 服务的云上进行域名解析。此配置过程,请参考 Amazon Route 53 相关文档。本文的例子中,域名已经在其他域名注册商注册好,其域名解析功能由 Amazon Route 53 服务提供。

2、Workmail 需要的相关域名记录

配置 Workmail 的过程中需要添加如下解析:

  • 用于验证域名所有人的 TXT 记录
  • 用于接收邮件的 MX 记录/用于接收邮件配置的 CNAME 记录
  • 用于外发邮件的 DKIM 认证等 CNAME 记录和 TXT 记录
  • 用于表示自己身份的 DMARC 协议的 TXT 记录

此外,当在 Workmail 界面上配置时候,域名本身也会成为 SES 验证的域名,因此后续 SES 可以直接使用。

3、Workmail 与 SES 共存时候的域名配置说明

Workmail 服务底层是基于 SES 构建的,可以和 SES 服务使用同一个域名。二者分工如下:

SES 发送邮件:

  • SES 负责外发验证码、广告和营销类,配置过程中主要验证方式是 CNAME 验证;

Workmail 发送和接收邮件:

  • Workmail 负责企业邮箱场景接收外部来信,配置过程分别要配置 CNAME 和 MX 记录;
  • 对外发送时候,通过 Workmail 的 Web UI、移动端设备等方式发出的邮件,都会被 Workmail 交给底层的 SES 发出,这个过程是透明的,用户无感知;
  • 接收邮件时候,外部发来的邮件会通过 MX 记录查询落地到 SES 底层,然后 Workmail 会识别出来,通过 Web UI 或者移动端同步的方式展现给用户,这个过程是透明的,用户无感知;

以上过程可以看出,一个域名可以同时绑定到 Workmail 和 SES。不过,由于 CNAME 不唯一性,每个 Region 使用 SES 配置的 CNAME 都不一样,因此同一个域名可用于多个 AWS Region 上使用 SES 服务。但是由于接收邮件使用的 MX 记录的唯一性,同一个域名只能添加一个 MX 记录,配置 Workmail 接收邮件只能在唯一的 AWS 区域。

三、创建 Workmail 服务

1、创建组织

进入 Workmail 服务,以 us-west-2 区域为例。点击创建组织。如下截图。

在组织类型中,选择 External domain,表示解析是独立管理的,可以是 AWS Route53,也可以是在其他的管理平台进行解析。然后在域名位置输入要提供邮件服务的域名。如下截图。

在域名位置填写上邮箱要绑定的域名。然后继续向下滚动屏幕。如下截图。

点击 Advanced settings 高级设置,下边的两个默认选项保留默认即可,可用不用调整。第一个选项 Create Amazon WorkMail Directory 表示使用 Workmail 自动创建的目录服务,如果您要使用自己管理的微软 Active Directory 服务请选择第二个选项 Use existing directory 即可对接自己的与控制器。在加密位置,选择默认的 Use Amazon WorkMail managed key 即可。如下截图。

创建完毕,屏幕上显示组织创建中。等待 3-5 分钟后,显示 Active 即表示创建完成。此时页面会提示,尚未经过域名验证,这时候需要点击左侧的 Domains 菜单进行域名验证。如下截图。

进入 Domains 菜单后,可以看到屏幕上有两条记录,其中一条是上一步输入的域名本身,显示 Pending Verification,未经验证。另外还有一条 xxxxx.awsapps.com,这条是别名,创建后就立刻可以使用,已经是绿色的 Verified 状态。不过,由于这个域名是别名,不是客户自己的域名,因此只在测试阶段会测试登录等用户,一般不会用于正式的使用。接下来还是完成域名验证。点击域名进入详情。如下截图。

进入域名验证详情后,可以看到屏幕上给出了多种类型的认证,他们包括如下几类:

  • 1、域名所有人验证:TXT 记录
  • 2、邮件服务:MX 记录和 CNAME 记录
  • 3、安全 DKIM 认证:CNAME 记录和 TXT 记录
  • 4、设置发件人(自定义 Mail From)的 DMARC 认证:需要在 SES 服务中完成

点击屏幕上方的 Copy all 按钮可以复制所有的解析到剪贴板。如下截图。

下文将先进入 Route53 配置 1、2、3 这三种类型的认证,然后再进入 SES 配置配置类型四所需要的 DMARC 认证。

2、在 Route53 上配置域名所有人、邮件服务、安全 DKIM 认证

配置域名所有人、邮件服务、安全 DKIM 认证的流程是完全相同的,现在以配置域名所有人为例。

首先从上一步的 Workmail 的 Domain 配置界面中,搜索获得对应的解析记录。例如复制出来结果如下:

  • 记录(Record Name):_amazonses.bitipcman.com.
  • 值(Value):nPFx6OKIWyyRlOOmOmVpPWSXe28k0lNTFz819+MFlDo=

进入 Route53 服务。点击左侧的 Hosted zones 菜单,找到要添加解析的域名。如果不存在的话,可以点击 Create hosted zone。如果要解析的域名已经存在了,那么点击名称,即可进入解析记录配置界面。如下截图。

在解析记录界面,点击右上角的 Create record 按钮创建新的解析记录。如下截图。

在左上角的名称位置,输入的要增加的域名解析的 _amazonses.bitipcman.com. 的子域名,也就是不包含域名本身的部分。在本例中,在 Record name 的位置填写 _amazonses。然后,在解析类型 Record type 位置从下拉框中选择类型是 TXT,在 Value 输入完整的解析,本例中就是从一开始的解析记录复制下来的 nPFx6OKIWyyRlOOmOmVpPWSXe28k0lNTFz819+MFlDo=。输入完毕,在 TTL 生存期位置保持默认的 300 秒无需修改,然后点击右下角的 Create records 按钮创建解析。如下截图。

创建完成后,页面显示创建成功。在下方的 Records 搜索过滤框中,输入关键字,就可以看到刚才创建好的子域名。如下截图。

至此第一个子域名配置完成。配置完成后,等待约 5 分钟。回到域名清单界面,可以看到第一个子域名已经显示为绿色的 Verified 通过认证。

接下来重复上述步骤,配置邮件服务所需要的 MX 记录和 CNAME 记录、以及安全 DKIM 认证所需呀的 CNAME 记录和 TXT 记录配置完成。

配置注意事项:

  • 包括 CNAME 记录在内,解析 Record 的值(Value)最后结尾有一个小圆点,复制时候请复制整条(包含小圆点)一起粘贴到域名解析位置。
  • 其中有一条是根域名的 TXT 记录,配置这条记录的时候,再填写子域名留空。如下截图。

在 Workmail 服务的 Domain 可看到是安全认证部分的根域名的 TXT 记录。如下截图。

配置 Route53 域名解析时候,子域名部分留空,直接填写记录类型和记录值即可。如下截图。

配置完成,可能最多需要等待 1 小时,在通过 Workmail 服务的 Domain 界面,可看到刚才显示未经认证的域名都认证完毕。

3、为 SES 的 Send from Custom Domain 配置 DMARC 认证

在上一步完成后,可以看到在 Workmail 服务的 Domain 内前三项认证都通过,只剩下最后一条 Custom MAIL FROM domain 显示尚未认证。此时提示可点击跳转到 Amazon SES 服务。如下截图。

点击后进入 SES 服务。找到左侧 Verified Domains 菜单,在当前域名下,点击第一个标签页 Authentication,然后向下滚动页面。如下截图。

在页面最下方 Custom MAIL FROM domain 位置,可以看到显示 Not started。此时点击右侧 Edit 编辑按钮修改配置。如下截图。

在启用自定义发送位置选中对话框表示开启,在外发子域名位置,输入 workmail 作为子域名,在 Behavior on MX failure 位置选择第一项默认的。然后点击保存配置按钮。如下截图。

配置完毕后,可看到 SES 服务又给出了两个需要添加认证的记录,这两个记录的配置过程,需要仿照上述步骤,在 Route53 上完成子域名解析的设置。如下截图。

配置 Custom MAIL FROM domain 所需要的两条子域名解析的操作这里不再赘述。

配置完成。此时可以看到,SES 服务的 Custom MAIL FROM domain 位置显示认证成功。如下截图。

至此 SES 服务配置完成。

4、切换 Workmail 外发时候使用的默认域名

为更好理解的 Workmail 的默认域名,先来看一个差不多的例子:CDN 即 CloudFront 服务。

例子:当创建好 CloudFront 发布点后,CloudFront 默认会分配一个 AWS 的域名例如 d123456.cloudfront.net,然后用户需要将自己的域名 www.abc.com 以 CNAME 记录的方式解析过去,即可实现使用用户自定义域名作为入口。此时,用户自己的 CNAME 域名和 AWS 自动生成的 d123456.cloudfront.net 是可以同时访问的。

在 Workmail 配置中,如同刚才 CloudFront 的例子,Workmail 也会默认分配一个使用 xxxx.awsapps.com 样式域名,他和用户自定义的域名也是可是同时使用的,这里需要切换下默认值,将认证完毕的用户自定义域名作为发送时候的默认域名。

现在回到 Workmail 服务的 Domain 详情标签页。在详情标签页下,可看到所有的四种类型的解析终于都成为了绿色状态。如下截图。

现在返回上一级菜单 Domains 清单,可看到四种 Domain 认证方式都配置完成后,自定义域名的状态也变成了绿色。现在需要将其设置为默认域名。如果不完成这个步骤的设置,那么发出邮件后,别人看到的发件人将不是您自己绑定的域名,而是 AWS 默认分配的 xxxx.awsapps.com 域名。

点击选中自己的域名,点击右上角的 Set as default。如下截图。

设置成功。如下截图。

至此后台需要的配置完成。

另外请注意,在以上配置完成后,在 SES 服务控制台的左下角菜单 Email receiving 内,能看到 Receipt rule sets 下,将会自动生成一条 INBOUND_MAIL 的规则。这条规则就是负责将 SES 接收邮件与 Workmail 集成的。请勿删除这一条,否则绑定本域名的 Workmail 将不能正确接收邮件。

下一步开始增加用户。

四、创建用户并使用企业邮箱发送和接收

1、新建用户

进入左侧组织菜单下的 Users 菜单。点击右上角的添加用户按钮。如下截图。

我们以张三为例。输入邮箱名 zhangsan,姓(Lastname)和名(Firstname)为可选输入,在下边友好显示名称 Display name 位置输入 Zhang San。如下截图。

在用户 id 部分输入对应的邮箱,以及域名后缀。在 Show in global address list 位置选中。在 Remote user 位置留空。然后输入两次密码。点击右下角 Add user 按钮,完成用户添加的过程。如下截图。

创建完成。

2、登录 WEB UI 并测试发送和接收

现在查询 WebUI 入口。

进入组织菜单的顶层菜单,从右侧找到 Amazon Workmail web application 的位置,其域名就是入口。如下截图。

点击跳转。输入用户名和密码,点击登录。如下截图。

登录成功。

现在测试收发。通过 WEB 界面,向外部邮箱(例如 Gmail)发一份邮件。编写好之后,点击 Send 按钮发送。如下截图。

登录到 Gmail 中,检查是否成功收到来自 Workmail 自定义域名的发信。可确认收到,且显示发来的来信人的信息正确。如下截图。

起草一封回信,从 Gmail 向 Workmail 邮箱的用户张三发送。如下截图。

回到 Workmail 网页界面,刷新后可看到,接收成功。

至此 Webmail 的收发测试成功。

3、关于发送到国内邮箱时候显示为代发的说明

Workmail 的主要使用场景是海外员工的企业邮箱,因此其发送的目标一般也是 Gmail/Outlook 等海外邮箱。当发给 Gmail/Outlook 等海外邮箱时候,Gmail/Outlook 识别发件人正常,如本文上一个章节的页面截图。

当发送给国内邮箱的时候,国内邮箱可能会显示邮件由 xxxxx.xxx@yourdomain.com 代发的字样。这是由于由于国内很多邮箱对 DMARC 认证后的域名识别不好,即便用户自定义域名通过了包括 DMARC 在内的多种认证过,邮箱页面上依然会显示邮件由 Amazon SES 的域名代发的字样。这个问题是国内的邮件服务商造成的,之前测试 Gmail 时候也可以看到 Gmail 识别准确,不会显示邮件由 Amazon SES 代发。如下截图。

本问题是由国内邮件服务商的技术特性造成的,与 Workmail 无关。今后如果国内的邮件服务商改进对 DMARC 的识别,就和 Gmail/Outlook 一样不显示由 xxx 代发这样的字样了。

4、使用邮件客户端测试

下面测试配置邮件客户端,这里以 Windows 上 Outlook 为例。

启动 Outlook 客户端,在配置界面输入邮箱名称。如下截图。

在邮件服务器类型位置,选择 Outlook.com 类型,表示云端在线邮箱。如下截图。

在弹出窗口中,点击 Allow 允许自动发现识别邮箱配置。选中下边的对话框,未来将不再提示本信息。如下截图。

输入邮箱名称和密码。如下截图。

配置完成,点击 OK 按钮启动 Outlook。如下截图。

启动 Outlook 后,同步云端刚才用 Webmail 测试的邮件完成,邮件已经被同步到 Outlook 中。

至此客户端配置完成。

5、配置移动端通过 Exchange 协议实现邮件、日历的同步

Workmail 至此多种方式的移动端同步,即包括传统的 IMAP 方式,也包括兼容 Exchange 协议的 ActiveSync 至此。本文使用 iOS 17 系统为例进行配置。

在移动端配置 Workmail 的同步又分成手动配置和自动发现配置。自动发现配置需要配置额外的 API 提供 autodiscover.xml 文件的托管和解析,相对步骤较多,本文不展开描述,请参考文本末尾的参考资料进行配置。

手工配置的主要流程如下:

  • 进入 iOS 系统设置,找到邮件,找到账户菜单,点击进入
  • 在账户类型中选择 Microsoft Exchange
  • 在电子邮件地址中,输入本次配置的邮箱全民,例如本例是 zhangsan@bitipcman.com,描述部分填写 Workmail 等友好名称,点击下一步继续
  • 在弹出的对话框中,选择手动配置
  • 在弹出的对话框内,确认邮箱全名正确,然后输入密码

以上操作部分如下截图。

在输入密码后,继续输入如下关键信息:

  • 电子邮件输入全名,本例中是 zhangsan@bitipcman.com
  • 服务器输入 mobile.mail.us-west-2.awsapps.com,如果是其他区域,请替换中间的区域代号
  • 在域(Domain)位置,留空不需要输入
  • 在用户名位置,输入邮箱全名,本例中是 zhangsan@bitipcman.com
  • 在密码位置输入密码
  • 描述位置保持上一步输入的 Workmail 不变

点击下一步继续。如下截图。

接下来选择要同步的服务内容,包括邮件通信录日历提醒事项备忘录,默认都是开启同步状态。最后点击存储,即可完成配置。再次点击邮箱,即可查看同步开关、同步日期等选项。

至此 iOS 手机移动客户端配置完成。接下来可以测试手机发送和接收,以及手机日历同步。

五、参考文档

Setting up email clients for Amazon WorkMail

https://docs.aws.amazon.com/workmail/latest/userguide/clients.html

连接 iOS 设备

https://docs.aws.amazon.com/zhcn/workmail/latest/userguide/mobile-client.html#connectios_device

启用配置 AutoDiscover 终端节点

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

本篇作者

刘辛酉

AWS 解决方案架构师,曾服务于 Parallels、Siemens,在 Atos 担任管理服务部首席架构师。拥有十余年数据中心、互联网技术经验,长期为制造、汽车等行业头部客户提供 IT 咨询和服务。加入 AWS 后负责零售、快消、食品和制造等行业客户。擅长硬件、网络、安全等领域设计。