本地到云端电子邮件迁移指南
鸟
2020年6月28日
电子邮件
1 min read

关键要点
Bird Cloud 建立在成熟的 Momentum MTA 引擎之上,为客户提供成熟的本地系统性能,并具有现代云电子邮件 API 平台的新增优势。
许多传统发件人仍依赖于 Momentum 或 PowerMTA,而 Bird 为两者提供了明确的迁移路径——完全云迁移或通过本地节点的混合路由。
迁移需要了解您是否会:
消除所有本地基础设施,或
继续使用您的 MTA 进行预处理、路由或满足传统限制。
Bird 只接受通过端口 587 或 2525 的经过身份验证的 SMTP 注入(强烈推荐使用 TLS)。REST API 注入也可用于直接基于 JSON 的传递。
选项 #1(“冷火鸡”)允许通过 SMTP 或 REST 直接发送到 Bird,完全取消 MTA,从而简化架构并实现发送架构现代化。
选项 #2 支持混合环境——通过配置与 Bird 的 SMTP_Auth 的出站域,将选定的流从 Momentum 或 PMTA 路由到 Bird。
PowerMTA 和 Momentum 配置可以通过使用 TLS、基于 API 密钥的 SMTP_Auth 和路由定义安全地将流量转发给 Bird。
使用高级 Lua 脚本、内联替换或预送达过滤的客户可能会保持混合,直到将逻辑重构到上游系统中。
Bird 支持 BYOIP(自带 IP)对于拥有连续的 /24 块的客户,允许您保留预热 IP 声誉并跳过完整的 IP 预热。
对于非 BYOIP 用户,Bird 提供自动 IP 预热,并建议分阶段迁移——从小量开始,然后逐步增加流量。
适当的域设置(DKIM、SPF、DMARC、退信域、跟踪域)对于在迁移过程中对齐和平稳共存至关重要。
Bird 通过 webhooks 或 Events API 提供实时事件数据,支持下游自动化、ETL 流程,并在需要时进行日志样式重构。
Q&A 精华
主要的两个迁移方案是什么?
要么完全退役所有本地 MTAs(选项 #1),要么保持混合设置,其中一些流量在到达 Bird 之前通过 Momentum/PMTA 路由(选项 #2)。
是什么决定了您选择Option #1还是Option #2?
您的依赖在Lua脚本、预处理逻辑、消息重写、安全要求或无法通过端口587发送身份验证流量的生成器。
Bird 是否接受通过端口 25 的 SMTP 注入?
不——Bird 需要通过端口 587 或 2525 进行 SMTP 注入,并使用 SMTP_Auth 进行身份验证。
需要 TLS 吗?
并非严格要求,但强烈建议使用来自生成器或本地MTAs的安全消息注入。
发件人可以使用REST API而不是SMTP吗?
是——发送方可以通过Transmissions REST API传递JSON有效负载,通常可以简化工作流程,并无需生成原始SMTP消息。
什么是 Bird 的 BYOIP 计划?
一种允许客户将其现有的连续 /24 块 IP 纳入 Bird 的过程,保持信誉并跳过预热。
如果 BYOIP 不是一个选项怎么办?
使用新的发送域(例如,sp.yourdomain.com),同时运行两个环境,并依靠Bird的自动IP暖机功能。
您如何在混合设置中仅通过Bird路由选定的流?
通过配置外发域(Momentum)或汇总配置/VMTAs(PowerMTA),以验证并传送到Bird的SMTP端点。
通过SMTP注入时需要进行哪些元数据更改?
添加一个
X-MSYS-API标头,其中包含以前通过X-Headers处理的ip_pool、campaign和任何自定义元数据等属性。迁移前需要在 DNS 中配置什么?
DKIM记录、SPF、DMARC、退信域名和跟踪域名,以确保域名一致性并降低在过渡期间的投递风险。
如何将流量迁移到 Bird?
逐渐地:从小流量开始,然后10%,再到20%,每天增加,直到所有流量都已转移——类似于IP升温的最佳实践。
发送者在迁移后如何收集交付和互动数据?
通过使用Bird的实时webhook系统或Events API;webhook采集器可以快速构建并为下游存储或ETL系统提供数据。
很多次,我们会听到这样的问题,“您是否有某种剧本可以说明从内部安装迁移到Bird的过程”?
是的,我们确实有。请继续阅读。
首先,一些背景故事。Bird Cloud服务于2014年因On-Premises Momentum MTA解决方案的巨大成功而创建。Momentum是Bird Cloud的核心,为数千个客户提供高速传输和流量整形服务。因此,Momentum获得了我们大量的工程关注,但这项工作的结果往往埋藏在性能改进中,没有获得太多的宣传。 Momentum客户在每次发布新的Momentum公共版本时都可以看到这项工作的好处。
这并不意味着Bird只是“云中的Momentum”。MessageBird远不止于此,并且可以为选择迁移或以混合方式使用它们的客户带来额外的好处。这些好处来自我们的现代基于云的电子邮件API架构,提供了传统内部解决方案无法获得的功能。此外,我们还为PowerMTA客户提供了非常简单的迁移或以混合配置使用PowerMTA和Bird的方式。本文档的其余部分将详细描述如何将您的消息流从Momentum或PowerMTA迁移到Bird Cloud服务。
实际上,对于从Momentum或PowerMTA迁移到Bird时需要考虑两种不同的情况。
您已准备好完全离开内部世界,关闭您的物理数据中心,不再直接管理任何本地MTA。这意味着从您的部署中消除Momentum或PowerMTA,并直接向SparkPost发送消息以进行消息处理。在停止您的内部基础设施之前,确保您对所有关键系统进行了全面的数据库备份,尤其是如果您正在运行包含重要历史数据或配置的PostgreSQL数据库。
您有理由保留一些本地痕迹。可能的一些情况包括:
需要在Momentum中进行预处理的特定传输流
容量分配以应对突发或灾难恢复需求
在PMTA中支持旧客户,同时将新客户转移到SparkPost
…然后您希望将其他消息转发给Bird以进行后续消息处理。
在任何情况下,您都需要知道Bird仅接受通过端口587或2525注入的SMTP消息,并使用具有特定用户名和密码的SMTP_Auth(查看SMTP文档)。我们还强烈建议使用TLS连接,但这并不是绝对必要的。如果您完全替换MTA层(情况1),那么您可能还需要考虑使用Transmissions REST API,该API可以通过HTTPS连接接受消息。有关该API的文档在这里。
对于需要安全电子邮件功能的维护本地基础设施的组织,我们的PowerMTA和Momentum S/MIME实施指南提供了加密电子邮件传输的详细设置说明。
很多次,我们会听到这样的问题,“您是否有某种剧本可以说明从内部安装迁移到Bird的过程”?
是的,我们确实有。请继续阅读。
首先,一些背景故事。Bird Cloud服务于2014年因On-Premises Momentum MTA解决方案的巨大成功而创建。Momentum是Bird Cloud的核心,为数千个客户提供高速传输和流量整形服务。因此,Momentum获得了我们大量的工程关注,但这项工作的结果往往埋藏在性能改进中,没有获得太多的宣传。 Momentum客户在每次发布新的Momentum公共版本时都可以看到这项工作的好处。
这并不意味着Bird只是“云中的Momentum”。MessageBird远不止于此,并且可以为选择迁移或以混合方式使用它们的客户带来额外的好处。这些好处来自我们的现代基于云的电子邮件API架构,提供了传统内部解决方案无法获得的功能。此外,我们还为PowerMTA客户提供了非常简单的迁移或以混合配置使用PowerMTA和Bird的方式。本文档的其余部分将详细描述如何将您的消息流从Momentum或PowerMTA迁移到Bird Cloud服务。
实际上,对于从Momentum或PowerMTA迁移到Bird时需要考虑两种不同的情况。
您已准备好完全离开内部世界,关闭您的物理数据中心,不再直接管理任何本地MTA。这意味着从您的部署中消除Momentum或PowerMTA,并直接向SparkPost发送消息以进行消息处理。在停止您的内部基础设施之前,确保您对所有关键系统进行了全面的数据库备份,尤其是如果您正在运行包含重要历史数据或配置的PostgreSQL数据库。
您有理由保留一些本地痕迹。可能的一些情况包括:
需要在Momentum中进行预处理的特定传输流
容量分配以应对突发或灾难恢复需求
在PMTA中支持旧客户,同时将新客户转移到SparkPost
…然后您希望将其他消息转发给Bird以进行后续消息处理。
在任何情况下,您都需要知道Bird仅接受通过端口587或2525注入的SMTP消息,并使用具有特定用户名和密码的SMTP_Auth(查看SMTP文档)。我们还强烈建议使用TLS连接,但这并不是绝对必要的。如果您完全替换MTA层(情况1),那么您可能还需要考虑使用Transmissions REST API,该API可以通过HTTPS连接接受消息。有关该API的文档在这里。
对于需要安全电子邮件功能的维护本地基础设施的组织,我们的PowerMTA和Momentum S/MIME实施指南提供了加密电子邮件传输的详细设置说明。
很多次,我们会听到这样的问题,“您是否有某种剧本可以说明从内部安装迁移到Bird的过程”?
是的,我们确实有。请继续阅读。
首先,一些背景故事。Bird Cloud服务于2014年因On-Premises Momentum MTA解决方案的巨大成功而创建。Momentum是Bird Cloud的核心,为数千个客户提供高速传输和流量整形服务。因此,Momentum获得了我们大量的工程关注,但这项工作的结果往往埋藏在性能改进中,没有获得太多的宣传。 Momentum客户在每次发布新的Momentum公共版本时都可以看到这项工作的好处。
这并不意味着Bird只是“云中的Momentum”。MessageBird远不止于此,并且可以为选择迁移或以混合方式使用它们的客户带来额外的好处。这些好处来自我们的现代基于云的电子邮件API架构,提供了传统内部解决方案无法获得的功能。此外,我们还为PowerMTA客户提供了非常简单的迁移或以混合配置使用PowerMTA和Bird的方式。本文档的其余部分将详细描述如何将您的消息流从Momentum或PowerMTA迁移到Bird Cloud服务。
实际上,对于从Momentum或PowerMTA迁移到Bird时需要考虑两种不同的情况。
您已准备好完全离开内部世界,关闭您的物理数据中心,不再直接管理任何本地MTA。这意味着从您的部署中消除Momentum或PowerMTA,并直接向SparkPost发送消息以进行消息处理。在停止您的内部基础设施之前,确保您对所有关键系统进行了全面的数据库备份,尤其是如果您正在运行包含重要历史数据或配置的PostgreSQL数据库。
您有理由保留一些本地痕迹。可能的一些情况包括:
需要在Momentum中进行预处理的特定传输流
容量分配以应对突发或灾难恢复需求
在PMTA中支持旧客户,同时将新客户转移到SparkPost
…然后您希望将其他消息转发给Bird以进行后续消息处理。
在任何情况下,您都需要知道Bird仅接受通过端口587或2525注入的SMTP消息,并使用具有特定用户名和密码的SMTP_Auth(查看SMTP文档)。我们还强烈建议使用TLS连接,但这并不是绝对必要的。如果您完全替换MTA层(情况1),那么您可能还需要考虑使用Transmissions REST API,该API可以通过HTTPS连接接受消息。有关该API的文档在这里。
对于需要安全电子邮件功能的维护本地基础设施的组织,我们的PowerMTA和Momentum S/MIME实施指南提供了加密电子邮件传输的详细设置说明。
我应该选择哪个选项?
要确定你属于选项#1还是选项#2,请考虑以下因素:
您是否使用Momentum的Lua脚本引擎来处理消息路由之外的复杂事务?
Lua是一种全面的脚本工具,可用于在线操作消息,但我们绝大多数用户仅使用它来选择交付绑定。如果是这样,您可以修改生成代码,在X-MSYS-API头中添加一个ip_pool属性,让Bird为您分配路由。
如果您使用Lua进行更复杂的操作,如正文过滤、Mail_From重写或消息节奏计算,并且将这些逻辑移入注入应用程序中不可行,您可能需要考虑切换到选项#2。
您的生成系统能够使用TLS和SMTP_Auth通过端口587发送消息吗?
一些活动管理系统只能通过端口25以明文方式推送邮件。这对Bird造成安全问题,因此您可能需要考虑选项#2。
您是否使用了PowerMTA替换语法或其他在线消息修改功能?
如果您可以将此功能移动到生成器中或使用Bird 模板语言,那么您仍可以使用选项1,否则您可能需要考虑在线保持一个PMTA节点以进行消息修改,然后再交付给Bird。
您是否需要在注入前进行入站AV/AS扫描?虽然在Momentum和PowerMTA中可以实现,但eBird假定您已完成所有这些检查。您可能需要考虑在注入前进行。
无论您选择哪种方式,都必定会影响您的商业关系。正如您所想,这不是我们的第一次操作。请务必让您的商业客户经理和客户成功经理参与其中,以便我们帮助您处理细节,确保您获得最佳的投资回报。
要确定你属于选项#1还是选项#2,请考虑以下因素:
您是否使用Momentum的Lua脚本引擎来处理消息路由之外的复杂事务?
Lua是一种全面的脚本工具,可用于在线操作消息,但我们绝大多数用户仅使用它来选择交付绑定。如果是这样,您可以修改生成代码,在X-MSYS-API头中添加一个ip_pool属性,让Bird为您分配路由。
如果您使用Lua进行更复杂的操作,如正文过滤、Mail_From重写或消息节奏计算,并且将这些逻辑移入注入应用程序中不可行,您可能需要考虑切换到选项#2。
您的生成系统能够使用TLS和SMTP_Auth通过端口587发送消息吗?
一些活动管理系统只能通过端口25以明文方式推送邮件。这对Bird造成安全问题,因此您可能需要考虑选项#2。
您是否使用了PowerMTA替换语法或其他在线消息修改功能?
如果您可以将此功能移动到生成器中或使用Bird 模板语言,那么您仍可以使用选项1,否则您可能需要考虑在线保持一个PMTA节点以进行消息修改,然后再交付给Bird。
您是否需要在注入前进行入站AV/AS扫描?虽然在Momentum和PowerMTA中可以实现,但eBird假定您已完成所有这些检查。您可能需要考虑在注入前进行。
无论您选择哪种方式,都必定会影响您的商业关系。正如您所想,这不是我们的第一次操作。请务必让您的商业客户经理和客户成功经理参与其中,以便我们帮助您处理细节,确保您获得最佳的投资回报。
要确定你属于选项#1还是选项#2,请考虑以下因素:
您是否使用Momentum的Lua脚本引擎来处理消息路由之外的复杂事务?
Lua是一种全面的脚本工具,可用于在线操作消息,但我们绝大多数用户仅使用它来选择交付绑定。如果是这样,您可以修改生成代码,在X-MSYS-API头中添加一个ip_pool属性,让Bird为您分配路由。
如果您使用Lua进行更复杂的操作,如正文过滤、Mail_From重写或消息节奏计算,并且将这些逻辑移入注入应用程序中不可行,您可能需要考虑切换到选项#2。
您的生成系统能够使用TLS和SMTP_Auth通过端口587发送消息吗?
一些活动管理系统只能通过端口25以明文方式推送邮件。这对Bird造成安全问题,因此您可能需要考虑选项#2。
您是否使用了PowerMTA替换语法或其他在线消息修改功能?
如果您可以将此功能移动到生成器中或使用Bird 模板语言,那么您仍可以使用选项1,否则您可能需要考虑在线保持一个PMTA节点以进行消息修改,然后再交付给Bird。
您是否需要在注入前进行入站AV/AS扫描?虽然在Momentum和PowerMTA中可以实现,但eBird假定您已完成所有这些检查。您可能需要考虑在注入前进行。
无论您选择哪种方式,都必定会影响您的商业关系。正如您所想,这不是我们的第一次操作。请务必让您的商业客户经理和客户成功经理参与其中,以便我们帮助您处理细节,确保您获得最佳的投资回报。
对于选项#1营地(彻底戒除):
假设您对选项1感到满意,并且您准备关闭本地的MTA,并决定继续使用SMTP注入方法,不改变您的消息创建系统。您的生成系统应该创建一个完全格式化的SMTP消息,然后通过TLS使用SMTP_AUTH推送到Bird,用户名和密码如此页面所述。请记住,“密码”是您在Bird账户中生成的API密钥,并开启SMTP投递选项。
如果您属于选项#1的阵营,考虑直接从您的生成系统切换到REST API。大多数情况下,我们发现客户的处理系统已经通过HTTP使用JSON,并且必须在注入前转换为SMTP。您可以跳过那一步,直接将其作为JSON格式的REST负载发送给我们。
如果您选择通过REST API进行注入,您可能需要稍微更改您的内容创建系统,但这可能值得。您可以在这里了解更多。
大ESP最关注的一个问题是迁移时的IP预热。通常,他们花了多年时间精心培养IP地址库存,所以放弃所有这些工作是很痛苦的。Bird已制定出一套Bring Your Own IP(BYOIP)流程来解决这个问题。如果您至少有一个连续的/24 CIDR块,Bird可以使用那些现有的IP来交付,从而节省您重新预热它们的麻烦。如果您能利用该选项,您可以跳过关于IP预热的部分。
如果您觉得已准备好了,可以跳到“付诸实现”部分。
假设您对选项1感到满意,并且您准备关闭本地的MTA,并决定继续使用SMTP注入方法,不改变您的消息创建系统。您的生成系统应该创建一个完全格式化的SMTP消息,然后通过TLS使用SMTP_AUTH推送到Bird,用户名和密码如此页面所述。请记住,“密码”是您在Bird账户中生成的API密钥,并开启SMTP投递选项。
如果您属于选项#1的阵营,考虑直接从您的生成系统切换到REST API。大多数情况下,我们发现客户的处理系统已经通过HTTP使用JSON,并且必须在注入前转换为SMTP。您可以跳过那一步,直接将其作为JSON格式的REST负载发送给我们。
如果您选择通过REST API进行注入,您可能需要稍微更改您的内容创建系统,但这可能值得。您可以在这里了解更多。
大ESP最关注的一个问题是迁移时的IP预热。通常,他们花了多年时间精心培养IP地址库存,所以放弃所有这些工作是很痛苦的。Bird已制定出一套Bring Your Own IP(BYOIP)流程来解决这个问题。如果您至少有一个连续的/24 CIDR块,Bird可以使用那些现有的IP来交付,从而节省您重新预热它们的麻烦。如果您能利用该选项,您可以跳过关于IP预热的部分。
如果您觉得已准备好了,可以跳到“付诸实现”部分。
假设您对选项1感到满意,并且您准备关闭本地的MTA,并决定继续使用SMTP注入方法,不改变您的消息创建系统。您的生成系统应该创建一个完全格式化的SMTP消息,然后通过TLS使用SMTP_AUTH推送到Bird,用户名和密码如此页面所述。请记住,“密码”是您在Bird账户中生成的API密钥,并开启SMTP投递选项。
如果您属于选项#1的阵营,考虑直接从您的生成系统切换到REST API。大多数情况下,我们发现客户的处理系统已经通过HTTP使用JSON,并且必须在注入前转换为SMTP。您可以跳过那一步,直接将其作为JSON格式的REST负载发送给我们。
如果您选择通过REST API进行注入,您可能需要稍微更改您的内容创建系统,但这可能值得。您可以在这里了解更多。
大ESP最关注的一个问题是迁移时的IP预热。通常,他们花了多年时间精心培养IP地址库存,所以放弃所有这些工作是很痛苦的。Bird已制定出一套Bring Your Own IP(BYOIP)流程来解决这个问题。如果您至少有一个连续的/24 CIDR块,Bird可以使用那些现有的IP来交付,从而节省您重新预热它们的麻烦。如果您能利用该选项,您可以跳过关于IP预热的部分。
如果您觉得已准备好了,可以跳到“付诸实现”部分。
利用 Option #2(on-prem 预处理):
然而,如果您属于选项#2团队,那么您将需要对部署进行一些配置更改。最不痛苦的方法是从Momentum或PMTA迁移一些选择的消息流到Bird,同时仍使用您的生成系统的SMTP注入,是在您的配置中添加一个特殊路由。
对于Momentum:
设置Momentum版本> 3.6.23。
安装有效的SSL证书并打开出站端口587,以便Momentum可以与Bird通信。配置一个出站域,这样您就可以通过Momentum将消息路由到Bird。
根据以下配置,任何碰到该配置的消息都将通过端口587和SMTP_Auth以及在此定义的用户名和密码路由到smtp.sparkpostmail.com。
outbound_smtp_auth { } Keep_Message_Dicts_In_Memory = true Domain "smtp.sparkpostmail.com" { Remote_SMTP_Port = "587" Outbound_SMTP_AUTH_Type = "LOGIN" Outbound_SMTP_AUTH_user = "SMTP_Injection" Outbound_SMTP_AUTH_pass = "17258redacted8bd6cd7a8redacted8c22bce" }
配置您希望通过MessageBird使用TLS中继的绑定,并将它们连接到您上面定义的域。
注意:TLS不是严格要求的,但强烈推荐。如果由于某种原因不能使用TLS,那么IP白名单API密钥也是强烈建议的。binding "CustomerA-Outbound" { Gateway = "smtp-demo.sparkpostelite.com" TLS = "required" TLS_Certificate = "/etc/pki/tls/certs/trymsys.net.crt" TLS_Key = "/etc/pki/tls/certs/trymsys.net.key" TLS_Ciphers = "DEFAULT" }
对于PowerMTA:
设置PowerMTA版本> 4.5.0
安装有效的SSL证书并打开出站端口587,以便PowerMTA可以与Bird通信。
配置一个出站域路径,以便您可以通过PowerMTA将消息路由到Bird。根据以下配置,任何碰到该配置的消息都将通过端口587和SMTP_Auth以及在此定义的用户名和密码路由到smtp.sparkpostmail.com。 在PowerMTA中,这也是可以设置TLS的地方。注意这也有更详细的文档记录这里。
<domain sparkpost.rollup> use-unencrypted-plain-auth yes auth-username SMTP_Injection auth-password YourAPIKeygoesherewhenyougenerateit route smtp.sparkpostmail.com:587 use-starttls yes require-starttls yes max-smtp-out 10 </domain>
4. 配置您希望通过Bird中继的VMTAs使用您上面定义的{sparkpost}汇总配置。
<virtual-mta SparkPostRelay> <domain *> queue-to {sparkpost} </domain> </virtual-mta>
一旦您做出这些配置更改,发送到选定的“binding”或“VMTA”的任何消息都应自动通过Bird传递。
然而,如果您属于选项#2团队,那么您将需要对部署进行一些配置更改。最不痛苦的方法是从Momentum或PMTA迁移一些选择的消息流到Bird,同时仍使用您的生成系统的SMTP注入,是在您的配置中添加一个特殊路由。
对于Momentum:
设置Momentum版本> 3.6.23。
安装有效的SSL证书并打开出站端口587,以便Momentum可以与Bird通信。配置一个出站域,这样您就可以通过Momentum将消息路由到Bird。
根据以下配置,任何碰到该配置的消息都将通过端口587和SMTP_Auth以及在此定义的用户名和密码路由到smtp.sparkpostmail.com。
outbound_smtp_auth { } Keep_Message_Dicts_In_Memory = true Domain "smtp.sparkpostmail.com" { Remote_SMTP_Port = "587" Outbound_SMTP_AUTH_Type = "LOGIN" Outbound_SMTP_AUTH_user = "SMTP_Injection" Outbound_SMTP_AUTH_pass = "17258redacted8bd6cd7a8redacted8c22bce" }
配置您希望通过MessageBird使用TLS中继的绑定,并将它们连接到您上面定义的域。
注意:TLS不是严格要求的,但强烈推荐。如果由于某种原因不能使用TLS,那么IP白名单API密钥也是强烈建议的。binding "CustomerA-Outbound" { Gateway = "smtp-demo.sparkpostelite.com" TLS = "required" TLS_Certificate = "/etc/pki/tls/certs/trymsys.net.crt" TLS_Key = "/etc/pki/tls/certs/trymsys.net.key" TLS_Ciphers = "DEFAULT" }
对于PowerMTA:
设置PowerMTA版本> 4.5.0
安装有效的SSL证书并打开出站端口587,以便PowerMTA可以与Bird通信。
配置一个出站域路径,以便您可以通过PowerMTA将消息路由到Bird。根据以下配置,任何碰到该配置的消息都将通过端口587和SMTP_Auth以及在此定义的用户名和密码路由到smtp.sparkpostmail.com。 在PowerMTA中,这也是可以设置TLS的地方。注意这也有更详细的文档记录这里。
<domain sparkpost.rollup> use-unencrypted-plain-auth yes auth-username SMTP_Injection auth-password YourAPIKeygoesherewhenyougenerateit route smtp.sparkpostmail.com:587 use-starttls yes require-starttls yes max-smtp-out 10 </domain>
4. 配置您希望通过Bird中继的VMTAs使用您上面定义的{sparkpost}汇总配置。
<virtual-mta SparkPostRelay> <domain *> queue-to {sparkpost} </domain> </virtual-mta>
一旦您做出这些配置更改,发送到选定的“binding”或“VMTA”的任何消息都应自动通过Bird传递。
然而,如果您属于选项#2团队,那么您将需要对部署进行一些配置更改。最不痛苦的方法是从Momentum或PMTA迁移一些选择的消息流到Bird,同时仍使用您的生成系统的SMTP注入,是在您的配置中添加一个特殊路由。
对于Momentum:
设置Momentum版本> 3.6.23。
安装有效的SSL证书并打开出站端口587,以便Momentum可以与Bird通信。配置一个出站域,这样您就可以通过Momentum将消息路由到Bird。
根据以下配置,任何碰到该配置的消息都将通过端口587和SMTP_Auth以及在此定义的用户名和密码路由到smtp.sparkpostmail.com。
outbound_smtp_auth { } Keep_Message_Dicts_In_Memory = true Domain "smtp.sparkpostmail.com" { Remote_SMTP_Port = "587" Outbound_SMTP_AUTH_Type = "LOGIN" Outbound_SMTP_AUTH_user = "SMTP_Injection" Outbound_SMTP_AUTH_pass = "17258redacted8bd6cd7a8redacted8c22bce" }
配置您希望通过MessageBird使用TLS中继的绑定,并将它们连接到您上面定义的域。
注意:TLS不是严格要求的,但强烈推荐。如果由于某种原因不能使用TLS,那么IP白名单API密钥也是强烈建议的。binding "CustomerA-Outbound" { Gateway = "smtp-demo.sparkpostelite.com" TLS = "required" TLS_Certificate = "/etc/pki/tls/certs/trymsys.net.crt" TLS_Key = "/etc/pki/tls/certs/trymsys.net.key" TLS_Ciphers = "DEFAULT" }
对于PowerMTA:
设置PowerMTA版本> 4.5.0
安装有效的SSL证书并打开出站端口587,以便PowerMTA可以与Bird通信。
配置一个出站域路径,以便您可以通过PowerMTA将消息路由到Bird。根据以下配置,任何碰到该配置的消息都将通过端口587和SMTP_Auth以及在此定义的用户名和密码路由到smtp.sparkpostmail.com。 在PowerMTA中,这也是可以设置TLS的地方。注意这也有更详细的文档记录这里。
<domain sparkpost.rollup> use-unencrypted-plain-auth yes auth-username SMTP_Injection auth-password YourAPIKeygoesherewhenyougenerateit route smtp.sparkpostmail.com:587 use-starttls yes require-starttls yes max-smtp-out 10 </domain>
4. 配置您希望通过Bird中继的VMTAs使用您上面定义的{sparkpost}汇总配置。
<virtual-mta SparkPostRelay> <domain *> queue-to {sparkpost} </domain> </virtual-mta>
一旦您做出这些配置更改,发送到选定的“binding”或“VMTA”的任何消息都应自动通过Bird传递。
实现它
当你开始走上这条路时,不要误以为这是一个一夜之间的操作。正确地完成这件事需要一些时间和细心。
设置你的Bird账户并使用开发子账户进行全面测试,以便稍后可以过滤掉该流量。无论选择哪种方式,你都需要这样做,因为无论如何都需要API密钥作为SMTP_Auth密码。
如果你使用SMTP注入,计划添加一个X-MSYS-API标头以整合所需的所有元数据和消息属性。任何X-Headers都应重写为元数据,并且你还应包括ip_pool和campaign属性。这里提供了示例。
如果你不使用BYOIP,那么你应该确保为MessageBird设置稍微不同的发送域,以便在需要时可以平行运行这两个环境。如果你当前的发送域是mycompany.com,可以专门为Bird传递设置sp.mycompany.com。这允许你在不妥协任何一个域的情况下慢慢小心地迁移。
确保启用了完整的域对齐和安全特性。在DNS中,设置DKIM, SPF, DMARC,退回和跟踪域,以便它们看起来都属于同一个组织。
从一个消息流开始,然后从那里继续前进。就像IP预热一样,你不想一次性完成这件事。首先重定向几百条消息,然后重定向10%的流量,接着在第二天增加到20%,并不断增加直到你将所有流量转移完毕。如果你是一家ESP,选择一个可以合作的客户,并根据他们的反馈测试这个过程。如果一切顺利,继续下一个。如果遇到问题,花时间解决并将其融入到下一个过程。
尽可能通过API实现自动化。除DNS更改外,SparkPost配置大部分可以通过几个API调用自动化。
当你开始走上这条路时,不要误以为这是一个一夜之间的操作。正确地完成这件事需要一些时间和细心。
设置你的Bird账户并使用开发子账户进行全面测试,以便稍后可以过滤掉该流量。无论选择哪种方式,你都需要这样做,因为无论如何都需要API密钥作为SMTP_Auth密码。
如果你使用SMTP注入,计划添加一个X-MSYS-API标头以整合所需的所有元数据和消息属性。任何X-Headers都应重写为元数据,并且你还应包括ip_pool和campaign属性。这里提供了示例。
如果你不使用BYOIP,那么你应该确保为MessageBird设置稍微不同的发送域,以便在需要时可以平行运行这两个环境。如果你当前的发送域是mycompany.com,可以专门为Bird传递设置sp.mycompany.com。这允许你在不妥协任何一个域的情况下慢慢小心地迁移。
确保启用了完整的域对齐和安全特性。在DNS中,设置DKIM, SPF, DMARC,退回和跟踪域,以便它们看起来都属于同一个组织。
从一个消息流开始,然后从那里继续前进。就像IP预热一样,你不想一次性完成这件事。首先重定向几百条消息,然后重定向10%的流量,接着在第二天增加到20%,并不断增加直到你将所有流量转移完毕。如果你是一家ESP,选择一个可以合作的客户,并根据他们的反馈测试这个过程。如果一切顺利,继续下一个。如果遇到问题,花时间解决并将其融入到下一个过程。
尽可能通过API实现自动化。除DNS更改外,SparkPost配置大部分可以通过几个API调用自动化。
当你开始走上这条路时,不要误以为这是一个一夜之间的操作。正确地完成这件事需要一些时间和细心。
设置你的Bird账户并使用开发子账户进行全面测试,以便稍后可以过滤掉该流量。无论选择哪种方式,你都需要这样做,因为无论如何都需要API密钥作为SMTP_Auth密码。
如果你使用SMTP注入,计划添加一个X-MSYS-API标头以整合所需的所有元数据和消息属性。任何X-Headers都应重写为元数据,并且你还应包括ip_pool和campaign属性。这里提供了示例。
如果你不使用BYOIP,那么你应该确保为MessageBird设置稍微不同的发送域,以便在需要时可以平行运行这两个环境。如果你当前的发送域是mycompany.com,可以专门为Bird传递设置sp.mycompany.com。这允许你在不妥协任何一个域的情况下慢慢小心地迁移。
确保启用了完整的域对齐和安全特性。在DNS中,设置DKIM, SPF, DMARC,退回和跟踪域,以便它们看起来都属于同一个组织。
从一个消息流开始,然后从那里继续前进。就像IP预热一样,你不想一次性完成这件事。首先重定向几百条消息,然后重定向10%的流量,接着在第二天增加到20%,并不断增加直到你将所有流量转移完毕。如果你是一家ESP,选择一个可以合作的客户,并根据他们的反馈测试这个过程。如果一切顺利,继续下一个。如果遇到问题,花时间解决并将其融入到下一个过程。
尽可能通过API实现自动化。除DNS更改外,SparkPost配置大部分可以通过几个API调用自动化。
从 Bird 收集数据
MessageBird 报告在 webhooks 数据流或消息事件 API 中的消息传递。访问 Bird 纯文本日志是不可能的。您可以使用 webhooks 收集器或通过定期调用 Events API 并消费数据将此数据回传到您的环境中。我们建议使用 webhooks 并且在这里有一些关于如何正确使用的建议。以最基本的形式,一个 PHP webhook 收集器可以在几行代码中部署:
<?php $verb = $_SERVER['REQUEST_METHOD']; if ($verb === "POST") { $jsonStr = file_get_contents("php://input"); http_response_code(200); $rnum = rand(1000, 9999); $timestamp = date("YmdHis") . $rnum; $filePath = './data/data_' . $timestamp . '.txt'; // Handle duplicate filenames (edge case) if (file_exists($filePath)) { $baseName = basename($filePath, ".txt"); $seq = 0; $ftail = substr($baseName, -2, 1); if ($ftail === "-") { $seq = (int)
当您正在试验时,您可以尝试使用诸如http://webhook.site/等免费收集器。
一旦您收集了所有的 webhook 数据,您可以将其读取到数据存储中进行额外处理。还有一些方法可以通过像 StitchData 和 Segment 这样的服务推送 Webhooks。
如果您需要提取数据且不能接受推送数据,则Events API中也提供了相同的信息。以下是一个示例 Event API 调用:
GET https://api.sparkpost.com/api/v1/events/message?/
recipients=recipient@example.com&templates=my-template&events
该 API 在此处提供完整的文档以及示例:https://developers.sparkpost.com/api/events/#events-get-search-for-message-events
如果您真的需要将事件数据返回到看起来像 PMTA 或 Momentum 记录的形式,那也是可能的,只要您使用一些额外的条件代码。好消息是已经有一些例子可以借鉴。
MessageBird 报告在 webhooks 数据流或消息事件 API 中的消息传递。访问 Bird 纯文本日志是不可能的。您可以使用 webhooks 收集器或通过定期调用 Events API 并消费数据将此数据回传到您的环境中。我们建议使用 webhooks 并且在这里有一些关于如何正确使用的建议。以最基本的形式,一个 PHP webhook 收集器可以在几行代码中部署:
<?php $verb = $_SERVER['REQUEST_METHOD']; if ($verb === "POST") { $jsonStr = file_get_contents("php://input"); http_response_code(200); $rnum = rand(1000, 9999); $timestamp = date("YmdHis") . $rnum; $filePath = './data/data_' . $timestamp . '.txt'; // Handle duplicate filenames (edge case) if (file_exists($filePath)) { $baseName = basename($filePath, ".txt"); $seq = 0; $ftail = substr($baseName, -2, 1); if ($ftail === "-") { $seq = (int)
当您正在试验时,您可以尝试使用诸如http://webhook.site/等免费收集器。
一旦您收集了所有的 webhook 数据,您可以将其读取到数据存储中进行额外处理。还有一些方法可以通过像 StitchData 和 Segment 这样的服务推送 Webhooks。
如果您需要提取数据且不能接受推送数据,则Events API中也提供了相同的信息。以下是一个示例 Event API 调用:
GET https://api.sparkpost.com/api/v1/events/message?/
recipients=recipient@example.com&templates=my-template&events
该 API 在此处提供完整的文档以及示例:https://developers.sparkpost.com/api/events/#events-get-search-for-message-events
如果您真的需要将事件数据返回到看起来像 PMTA 或 Momentum 记录的形式,那也是可能的,只要您使用一些额外的条件代码。好消息是已经有一些例子可以借鉴。
MessageBird 报告在 webhooks 数据流或消息事件 API 中的消息传递。访问 Bird 纯文本日志是不可能的。您可以使用 webhooks 收集器或通过定期调用 Events API 并消费数据将此数据回传到您的环境中。我们建议使用 webhooks 并且在这里有一些关于如何正确使用的建议。以最基本的形式,一个 PHP webhook 收集器可以在几行代码中部署:
<?php $verb = $_SERVER['REQUEST_METHOD']; if ($verb === "POST") { $jsonStr = file_get_contents("php://input"); http_response_code(200); $rnum = rand(1000, 9999); $timestamp = date("YmdHis") . $rnum; $filePath = './data/data_' . $timestamp . '.txt'; // Handle duplicate filenames (edge case) if (file_exists($filePath)) { $baseName = basename($filePath, ".txt"); $seq = 0; $ftail = substr($baseName, -2, 1); if ($ftail === "-") { $seq = (int)
当您正在试验时,您可以尝试使用诸如http://webhook.site/等免费收集器。
一旦您收集了所有的 webhook 数据,您可以将其读取到数据存储中进行额外处理。还有一些方法可以通过像 StitchData 和 Segment 这样的服务推送 Webhooks。
如果您需要提取数据且不能接受推送数据,则Events API中也提供了相同的信息。以下是一个示例 Event API 调用:
GET https://api.sparkpost.com/api/v1/events/message?/
recipients=recipient@example.com&templates=my-template&events
该 API 在此处提供完整的文档以及示例:https://developers.sparkpost.com/api/events/#events-get-search-for-message-events
如果您真的需要将事件数据返回到看起来像 PMTA 或 Momentum 记录的形式,那也是可能的,只要您使用一些额外的条件代码。好消息是已经有一些例子可以借鉴。
Recap
确保与您的销售和成功管理团队交流。我们以前做过这件事,可以快速且具有成本效益地帮助您。
找出您是属于营地 #1 (能够完全从 On-Prem 迁移) 还是营地 #2 (仍需要一些本地 MTA)。
注册一个免费测试账户以评估集成细节。
如果您使用 SMTP 注入,请弄清楚如何将头数据和消息属性放入 X-MSYS-API 头中。
确认您是否可以使用我们的 BYOIP 过程。
如有必要,用新域更新您的 DNS。
构建一个小样本以测试您的迁移。您可能需要调整配置。
增加流量,以便所有流量都迁移完毕。
如果您属于营地 #1,流量迁移完成后,您可以最终关闭本地 MTA。
在计划高容量电子邮件系统的 DNS 更改时,请注意可能会影响大规模电子邮件交付性能的 AWS DNS 扩展挑战。
确保与您的销售和成功管理团队交流。我们以前做过这件事,可以快速且具有成本效益地帮助您。
找出您是属于营地 #1 (能够完全从 On-Prem 迁移) 还是营地 #2 (仍需要一些本地 MTA)。
注册一个免费测试账户以评估集成细节。
如果您使用 SMTP 注入,请弄清楚如何将头数据和消息属性放入 X-MSYS-API 头中。
确认您是否可以使用我们的 BYOIP 过程。
如有必要,用新域更新您的 DNS。
构建一个小样本以测试您的迁移。您可能需要调整配置。
增加流量,以便所有流量都迁移完毕。
如果您属于营地 #1,流量迁移完成后,您可以最终关闭本地 MTA。
在计划高容量电子邮件系统的 DNS 更改时,请注意可能会影响大规模电子邮件交付性能的 AWS DNS 扩展挑战。
确保与您的销售和成功管理团队交流。我们以前做过这件事,可以快速且具有成本效益地帮助您。
找出您是属于营地 #1 (能够完全从 On-Prem 迁移) 还是营地 #2 (仍需要一些本地 MTA)。
注册一个免费测试账户以评估集成细节。
如果您使用 SMTP 注入,请弄清楚如何将头数据和消息属性放入 X-MSYS-API 头中。
确认您是否可以使用我们的 BYOIP 过程。
如有必要,用新域更新您的 DNS。
构建一个小样本以测试您的迁移。您可能需要调整配置。
增加流量,以便所有流量都迁移完毕。
如果您属于营地 #1,流量迁移完成后,您可以最终关闭本地 MTA。
在计划高容量电子邮件系统的 DNS 更改时,请注意可能会影响大规模电子邮件交付性能的 AWS DNS 扩展挑战。



