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

目录

  • 一、背景
  • 二、自有域名和解析要求
  • 三、创建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