- 搜索页面
- 目录
经常问的问题
这项服务有多快?
电子邮件平均在 5 秒内送达。与依赖延迟队列的其他供应商不同,我们实时运作。
我们不写入磁盘或存储日志——使用 错误例外 和 出站 SMTP (见我们的 隐私政策).
一切都在内存中完成 我们的源代码在 GitHub 上.
如何开始和设置电子邮件转发?
user@gmail.com
使用您要将电子邮件转发到的电子邮件地址(如果它还不准确)。同样一定要更换 o3o.ca
使用您的自定义域名(如果它还不准确)。
- 如果您已经在某处注册了您的域名,那么您必须完全跳过这一步,进入第二步!否则你可以 点击这里注册您的域名.
-
你还记得你在哪里注册你的域名吗?记住这一点后,请按照以下说明进行操作:
重要的: 您必须打开一个新选项卡并登录到您的域注册商。您可以轻松地单击下面的“注册商”来自动执行此操作。在这个新选项卡中,您必须导航到注册商的 DNS 管理页面——我们在下面的“配置步骤”列下提供了逐步导航步骤。在新选项卡中导航到此页面后,您可以返回此选项卡并继续执行下面的第三步。 不要关闭打开的标签页;您将需要它来完成未来的步骤!
注册商 配置步骤 1&1 登录 域中心 (选择您的域名) 编辑 DNS 设置 亚马逊 53 号公路 登录 托管区域 (选择您的域名) Aplus.net 登录 我的服务器 域管理 DNS 管理器 蓝主机 对于摇滚:登录 域 (点击管理旁边的▼图标) DNS
对于传统:登录 域 区域编辑器 (选择您的域名)云耀斑 登录 DNS 轻松实现 DNS 登录 DNS (选择您的域名) DNS简单 登录 (选择您的域名) DNS 管理 数字海洋 登录 联网 域 (选择您的域名) 更多的 管理域 域名.com 登录 在卡片视图中,单击域上的管理 在列表视图中,单击 齿轮图标 DNS 和域名服务器 DNS 记录 Domains.com
手表登录 (选择您的域名) 管理 (点击齿轮图标) 单击左侧菜单中的 DNS 和名称服务器 梦想主机 登录 控制板 域 管理域 DNS 男人 登录 概述 管理 简单的编辑器 记录 思考 登录 (选择您的域名) 管理 编辑区域 去吧爸爸
手表登录 管理我的域 (选择您的域名) 管理 DNS 谷歌域名
手表登录 (选择您的域名) 配置 DNS 名不虚传
手表登录 域列表 (选择您的域名) 管理 高级 DNS 网络化 登录 (选择您的域名) 设置 Netlify DNS 网络解决方案 登录 客户经理 我的域名 (选择您的域名) 管理 更改域指向的位置 高级 DNS 购物
手表登录 托管域 (选择您的域名) DNS 设置 广场空间 登录 主菜单 设置 域 (选择您的域名) 高级设置 自定义记录 维塞尔的现在 使用“现在”CLI now dns add [domain] '@' MX [record-value] [priority]
蹑手蹑脚 登录 域页面 (选择您的域名) DNS 蜡 登录 域页面 (点击 图标) 选择管理 DNS 记录 初级 登录 域 我的域名 其他 重要的: 此处未列出您的注册商名称?只需在 Internet 上搜索“如何更改 $REGISTRAR 上的 DNS 记录”(将 $REGISTRAR 替换为您的注册商的名称 - 例如,如果您使用 GoDaddy,则“如何更改 GoDaddy 上的 DNS 记录”)。 - 使用您的注册商的 DNS 管理页面(您打开的另一个选项卡),设置以下“MX”记录:
重要的: 请注意,应该没有其他 MX 记录集。下面显示的两个记录都必须存在。确保没有错别字;并且您的 mx1 和 mx2 都拼写正确。如果已经存在 MX 记录,请彻底删除。 “TTL”值不需要是 3600,如果需要,它可以是更低或更高的值。
名称/主机/别名 TTL 类型 优先 答案/值 “@”、“.”或空白 3600 MX 10 mx1.forwardemail.net
“@”、“.”或空白 3600 MX 10 mx2.forwardemail.net
- 使用您的注册商的 DNS 管理页面(您打开的另一个选项卡),设置以下内容 TXT 记录):
重要的: 如果您使用的是付费计划,那么您必须完全跳过此步骤并转到第五步!如果您不在付费计划中,那么您转发的地址将是可公开搜索的——请访问 我的帐户 域 并根据需要将您的域升级到付费计划。如果您想了解有关付费计划的更多信息,请参阅我们的 价钱 页。否则,您可以继续从下面列出的选项 A 到选项 F 中选择一种或多种组合。
选项 A: 如果您要将域中的所有电子邮件(例如“all@o3o.ca”、“hello@o3o.ca”等)转发到特定地址“user@gmail.com”:名称/主机/别名 TTL 类型 答案/值 “@”、“.”或空白 3600 TXT forward-email=user@gmail.com
小费: 确保将“值”列中的上述值替换为您自己的电子邮件地址。 “TTL”值不需要是 3600,如果需要,它可以是更低或更高的值。较低的生存时间 (“TTL”) 值将确保对您的 DNS 记录所做的任何未来更改更快地传播到整个 Internet - 将其视为它将在内存中缓存多长时间(以秒为单位)。您可以了解更多关于 维基百科上的 TTL,免费的百科全书.
选项 B: 如果您只需要转发一个电子邮件地址(例如hello@o3o.ca
至user@gmail.com
;这也会自动将“hello+test@o3o.ca”转发到“user+test@gmail.com”:名称/主机/别名 TTL 类型 答案/值 “@”、“.”或空白 3600 TXT forward-email=hello:user@gmail.com
选项 C: 如果您要转发多封电子邮件,那么您需要用逗号分隔它们:名称/主机/别名 TTL 类型 答案/值 “@”、“.”或空白 3600 TXT forward-email=hello:user@gmail.com,support:user@gmail.com
选项 D: 您可以设置无限数量的转发电子邮件 - 只需确保在单行中不包含超过 255 个字符,并以“forward-email =”开始每一行。下面提供了一个示例:名称/主机/别名 TTL 类型 答案/值 “@”、“.”或空白 3600 TXT forward-email=hello:user@gmail.com,support:user@gmail.com
“@”、“.”或空白 3600 TXT forward-email=help:user@gmail.com,foo:user@gmail.com
“@”、“.”或空白 3600 TXT forward-email=orders:user@gmail.com,baz:user@gmail.com
“@”、“.”或空白 3600 TXT forward-email=info:user@gmail.com,beep:user@gmail.com
“@”、“.”或空白 3600 TXT forward-email=errors:user@gmail.com,boop:user@gmail.com
选项 E: 您还可以在您的 TXT 记录具有全局别名转发(例如“user@o3o.ca”将被转发到“user@example.net”):名称/主机/别名 TTL 类型 答案/值 “@”、“.”或空白 3600 TXT forward-email=example.net
选项 F: 您甚至可以使用 webhook 作为全局或个人别名来转发电子邮件。请参阅标题为 webhook 的示例和完整部分 你支持网络钩子吗 以下。名称/主机/别名 TTL 类型 答案/值 “@”、“.”或空白 3600 TXT forward-email=alias:https://requestbin.com/r/en8pfhdgcculn
选项 G: 您甚至可以使用正则表达式(“regex”)来匹配别名和处理替换以将电子邮件转发到。请参阅标题为 regex 的示例和完整部分 你支持正则表达式还是正则表达式 以下。需要带替换的高级正则表达式? 请参阅标题为 regex 的示例和完整部分 你支持正则表达式还是正则表达式 以下。简单示例: 如果我希望所有发送到 `linus@o3o.ca` 或 `torvalds@o3o.ca` 的电子邮件都转发到 `user@gmail.com`:名称/主机/别名 TTL 类型 答案/值 “@”、“.”或空白 3600 TXT forward-email=/^(linus|torvalds)$/:user@gmail.com
- 使用您的注册商的 DNS 管理页面(您打开的另一个选项卡),另外设置以下内容 TXT 记录:
名称/主机/别名 TTL 类型 答案/值 “@”、“.”或空白 3600 TXT v=spf1 a mx include:spf.forwardemail.net -all
重要的: 如果您使用的是 Gmail(例如 Send Mail As)或 G Suite,那么您需要附加include:_spf.google.com
到上面的值,例如:
v=spf1 a mx include:spf.forwardemail.net include:_spf.google.com -all
小费: 如果您已经有类似的“v=spf1”行,那么您需要追加include:spf.forwardemail.net
就在任何现有的“include:host.com”记录之前和同一行中的“-all”之前,例如:
v=spf1 a mx include:spf.forwardemail.net include:host.com -all
请注意,“-all”和“~all”之间是有区别的。 “-”表示如果不匹配则 SPF 检查应该失败,“~”表示 SPF 检查应该 SOFTFAIL。我们建议使用“-all”方法来防止域伪造。
您可能还需要包含您发送邮件的主机的 SPF 记录(例如 Outlook)。 - 使用我们的“验证记录”工具验证您的 DNS 记录,网址为 我的帐户 域 设置。
- 发送测试电子邮件以确认它有效。请注意,您的 DNS 记录可能需要一些时间才能传播。
小费: 如果您没有收到测试电子邮件,或者收到一封测试电子邮件,上面写着“请注意此消息”,请查看以下内容的答案 为什么我收不到测试邮件 和 为什么我在 Gmail 中发送给自己的测试电子邮件显示为“可疑” 分别。
- 如果您希望从 Gmail “发送邮件”,那么您需要 看这个视频,或按照以下步骤操作 如何使用 Gmail 发送邮件 以下。
是否支持使用 SMTP 发送电子邮件?
是的,从 2023 年 5 月起,我们支持使用 SMTP 发送电子邮件作为所有付费用户的附加组件。
-
去 我的帐户 域 设置 出站 SMTP 配置并遵循设置说明
-
为您的域创建一个新别名 我的帐户 域 别名(例如
你好@o3o.ca
) -
点击 生成密码 在新创建的别名旁边。复制到剪贴板并安全地存储屏幕上显示的生成密码。
-
使用您首选的电子邮件应用程序,使用您新创建的别名(例如
你好@o3o.ca
) -
当提示输入 SMTP 服务器名称时,输入
smtp.forwardemail.net
-
当提示输入 SMTP 服务器端口时,输入
587
(TLS) – 见 备用 SMTP 端口 如有必要 -
当提示输入 SMTP 服务器密码时,将密码粘贴到 生成密码 在上面的第 3 步中
-
保存您的设置并发送您的第一封测试电子邮件 – 如果您遇到问题,请 联系我们
您的出站 SMTP 限制是多少?
我们将用户和域的速率限制为每 1 天 300 条出站 SMTP 消息。这平均每个日历月有 9000 多封电子邮件。如果您需要超过此数量或一直有大量电子邮件,请联系我们。
您的 SMTP 服务器配置设置是什么?
我们的服务器是 smtp.forwardemail.net
并且也在我们的监控 状态页面.
它同时支持 IPv4 和 IPv6,并且可以通过端口使用 587
, 2587
, 2525
, 和 25
对于 TLS (STARTTLS) – 和 465
和 2465
对于 SSL。
协议 | 主机名 | 港口 | IPv4 | IPv6 |
---|---|---|---|---|
TLS (STARTTLS) | smtp.forwardemail.net | 587 , 2587 , 2525 , 25 | ✅ | ✅ |
SSL | smtp.forwardemail.net | 465 , 2465 | ✅ | ✅ |
登录 | 例子 | 描述 |
---|---|---|
用户名 | user@o3o.ca | 域中存在的别名的电子邮件地址 我的帐户 域. |
密码 | ************************ | 别名特定或全域(即将推出)生成的密码。 |
为了使用 SMTP 发送出站电子邮件, SMTP用户 必须是域中存在的别名的电子邮件地址 我的帐户 域 – 和 邮件密码 必须是特定别名或域范围(即将推出)生成的密码。
请参阅 是否支持使用 SMTP 发送电子邮件 一步一步的指导。
是否支持使用 API 发送邮件?
是的,从 2023 年 5 月起,我们支持使用 API 发送电子邮件作为所有付费用户的附加组件。
请查看我们的部分 电子邮件 在我们的 API 文档中获取选项、示例和更多见解。
为了使用我们的 API 发送出站电子邮件,您必须使用您的 API 令牌 我的安全.
您是否支持使用 IMAP 接收电子邮件?
我们计划在不久的将来提供此功能。
如何使用 Gmail 发送邮件?
-
去 我的帐户 域 设置 出站 SMTP 配置并遵循设置说明
-
为您的域创建一个新别名 我的帐户 域 别名(例如
你好@o3o.ca
) -
点击 生成密码 在新创建的别名旁边。复制到剪贴板并安全地存储屏幕上显示的生成密码。
-
去 电子邮件 和下 设置 账户和进口 发送邮件为,点击“添加另一个电子邮件地址”
-
当提示输入“姓名”时,输入您希望电子邮件显示为“发件人”的姓名(例如“Linus Torvalds”)。
-
当提示输入“电子邮件地址”时,输入您在下面创建的别名的完整电子邮件地址 我的帐户 域 别名(例如
你好@o3o.ca
) -
取消选中“视为别名”
-
点击“下一步”继续
-
当提示输入“SMTP 服务器”时,输入
smtp.forwardemail.net
并离开港口587
-
当提示输入“用户名”时,输入您在下面创建的别名的完整电子邮件地址 我的帐户 域 别名(例如
你好@o3o.ca
) -
当提示输入“密码”时,粘贴密码 生成密码 在上面的第 3 步中
-
选中“使用 TLS 的安全连接”单选按钮
-
单击“添加帐户”继续
-
打开一个新选项卡以 电子邮件 并等待您的验证电子邮件到达(您将收到一个验证码,确认您是您尝试“发送邮件”的电子邮件地址的所有者)
-
到达后,根据您在上一步中收到的提示复制并粘贴验证码
-
完成后,返回电子邮件并单击“确认请求”链接。您很可能需要执行此步骤和上一步才能正确配置电子邮件。
使用 Gmail 发送邮件的旧版免费指南是什么?
-
你需要有 Gmail 的两步验证 启用此功能。访问 https://www.google.com/landing/2step/ 如果您没有启用它。
-
一旦启用了双因素身份验证(或者如果您已经启用了它),然后访问 https://myaccount.google.com/apppasswords.
-
当提示“选择要为其生成应用密码的应用和设备”时:
- 在“选择应用程序”下拉菜单下选择“邮件”
- 在“选择设备”下拉菜单下选择“其他”
- 当提示输入文本时,输入您转发的自定义域的电子邮件地址(例如
你好@o3o.ca
- 如果您为多个帐户使用此服务,这将帮助您保持跟踪)
-
将密码复制到自动生成的剪贴板
重要的: 如果您使用 G Suite,请访问您的管理面板 应用 G 套件 Gmail 设置 设置 并确保选中“允许用户通过外部 SMTP 服务器发送邮件...”。激活此更改会有一些延迟,因此请等待几分钟。 -
去 电子邮件 和下 设置 账户和进口 发送邮件为,点击“添加另一个电子邮件地址”
-
当提示输入“姓名”时,输入您希望电子邮件显示为“发件人”的姓名(例如“Linus Torvalds”)
-
当系统提示输入“电子邮件地址”时,输入带有您在上面使用的自定义域的电子邮件地址(例如
你好@o3o.ca
) -
取消选中“视为别名”
-
点击“下一步”继续
-
当提示输入“SMTP 服务器”时,输入
smtp.gmail.com
并离开港口587
-
当提示输入“用户名”时,输入您的 Gmail 地址中不带 gmail.com 部分(例如,如果我的电子邮件是“用户” 用户@gmail.com)
重要的: 如果“用户名”部分是自动填充的,那么 你需要改变这个 改为您的 Gmail 地址的用户名部分。 -
当提示输入“密码”时,从剪贴板粘贴您在上述第 2 步中生成的密码
-
选中“使用 TLS 的安全连接”单选按钮
-
单击“添加帐户”继续
-
打开一个新选项卡以 电子邮件 并等待您的验证电子邮件到达(您将收到一个验证码,确认您是您尝试“发送邮件”的电子邮件地址的所有者)
-
到达后,根据您在上一步中收到的提示复制并粘贴验证码
-
完成后,返回电子邮件并单击“确认请求”链接。您很可能需要执行此步骤和上一步才能正确配置电子邮件。
为什么我收不到测试邮件?
如果您要向自己发送一封测试电子邮件,那么它可能不会出现在您的收件箱中,因为它具有相同的“Message-Id”标头。
这是一个广为人知的问题,也会影响 Gmail 等服务。 这是关于此问题的官方 Gmail 答复.
如果您仍然遇到问题,则很可能是 DNS 传播问题。您需要稍等片刻再试一次(或尝试在您的 TXT 记录)。
还是有问题? 请 联系我们 因此我们可以帮助调查问题并找到快速解决方案。
您的电子邮件转发系统如何工作?
电子邮件依赖于 SMTP 协议.该协议由发送到服务器的命令组成(最常在端口 25 上运行)。有一个初始连接,然后发件人指示邮件来自谁(“MAIL FROM”),然后是它要去的地方(“RCPT TO”),最后是邮件本身的标题和正文(“DATA” )。我们的电子邮件转发系统的流程相对于下面的每个 SMTP 协议命令进行了描述:
-
初始连接(无命令名称,例如
telnet o3o.ca 25
) - 这是初始连接。我们检查不在我们的发件人 白名单 反对我们的 拒绝名单.最后,如果发件人不在我们的许可名单中,那么我们会检查他们是否已经加入 列入灰名单. -
HELO
- 这表示用于识别发件人的 FQDN、IP 地址或邮件处理程序名称的问候语。这个值可以被欺骗,所以我们不依赖这个数据,而是使用连接 IP 地址的反向主机名查找。 -
MAIL FROM
- 这表示来自电子邮件地址的信封邮件。如果输入了值,则它必须是有效的 RFC 5322 电子邮件地址。允许使用空值。我们 检查反向散射 在这里,我们还对照我们的 MAIL FROM 拒绝名单.我们最终会检查不在允许列表中的发件人以进行速率限制(请参阅有关 速率限制 和 白名单 了解更多信息)。 -
RCPT TO
- 这表示电子邮件的收件人。这些必须是有效的 RFC 5322 电子邮件地址。我们只允许每封邮件最多 50 个信封收件人(这与电子邮件中的“收件人”标题不同)。我们还检查一个有效的 发件人重写方案 (“SRS”)地址在此处,以防止使用我们的 SRS 域名进行欺骗。提供的包含“无回复”地址的收件人将收到 553 错误。见 以下“无回复”地址的完整列表.我们还会对照我们的 拒绝名单. -
DATA
- 这是我们处理电子邮件的服务的核心部分。见章节 您如何处理电子邮件以进行转发 下面以获得更多见解。
您如何处理电子邮件以进行转发?
本节介绍我们与 SMTP 协议命令相关的流程 DATA
在该部分 您的电子邮件转发系统如何工作 上面——它是我们如何处理电子邮件的标题、正文、安全性,确定它需要传递到哪里,以及我们如何处理连接。
-
如果消息超过 50mb 的最大大小,则会被拒绝并返回 552 错误代码。
-
如果消息没有任何标头,或者标头无法解析,则会被拒绝并返回 421 错误代码。
-
如果邮件不包含“发件人”标头,或者“发件人”标头中的任何值不是有效的 RFC 5322 电子邮件地址,则该邮件将被拒绝并显示 550 错误代码。
-
如果邮件有超过 25 个“已接收”标头,则确定它已陷入重定向循环,并以 550 错误代码被拒绝。
-
使用电子邮件的指纹(请参阅 指纹识别),我们将检查消息是否已尝试重试超过 5 天(匹配 默认后缀行为),如果是这样,它将被拒绝并返回 550 错误代码。
-
如果邮件有一个“To”标头,并且如果邮件的任何“To”标头使用我们的域名指向 SRS 重写地址,那么我们将重写它们(这即适用于假期响应者)。
-
我们将扫描电子邮件的结果存储在内存中 垃圾邮件扫描器.
-
如果 Spam Scanner 有任何任意结果,则会以 554 错误代码拒绝它。在撰写本文时,任意结果仅包括 GTUBE 测试。看 https://spamassassin.apache.org/gtube/ 以获得更多洞察力。
-
我们将在消息中添加以下标头以进行调试和防止滥用:
X-Original-To
- 原本的RCPT TO
消息的电子邮件地址。- 这对于确定电子邮件最初发送到的位置很有用。
- 将在 Forward Email v10+ 中发布。
- 现有值(如果有)保留为
X-Original-Preserved-To
.
X-ForwardEmail-Version
- 当前 半版本 版本来自package.json
我们的代码库。X-ForwardEmail-Session-ID
- 用于调试目的的会话 ID 值(仅适用于非生产环境)。X-ForwardEmail-Sender
- 一个逗号分隔的列表,包含原始信封 MAIL FROM 地址(如果不是空白)、反向 PTR 客户端 FQDN(如果存在)和发件人的 IP 地址。X-Report-Abuse
- 值为abuse@forwardemail.net
.X-Report-Abuse-To
- 值为abuse@forwardemail.net
.X-Complaints-To
- 值为abuse@forwardemail.net
.
-
然后我们检查消息 DKIM, SPF, ARC, 和 DMARC.
- 如果消息未通过 DMARC 并且域具有拒绝策略(例如
p=reject
在 DMARC 政策中),然后以 550 错误代码拒绝它。通常,域的 DMARC 策略可以在_dmarc
子域 TXT 记录,(例如dig _dmarc.o3o.ca txt
). - 如果消息未能通过 SPF 并且域具有硬失败策略(例如
-all
在 SPF 政策中,而不是~all
或根本没有策略),然后它会被拒绝并显示 550 错误代码。通常,域的 SPF 策略可以在 TXT 根域的记录(例如dig o3o.ca txt
)。有关更多信息,请参阅本节 像使用 Gmail 一样发送邮件 关于 SPF。
- 如果消息未通过 DMARC 并且域具有拒绝策略(例如
-
现在我们处理从
RCPT TO
部分中的命令 您的电子邮件转发系统如何工作 以上。对于每个收件人,我们执行以下操作:- 我们查找 TXT 域名记录(后面的部分
@
符号,例如o3o.ca
如果电子邮件地址是test@o3o.ca
)。例如,如果域是o3o.ca
我们进行 DNS 查找,例如dig o3o.ca txt
. - 我们解析所有 TXT 以任一开头的记录
forward-email=
(免费计划)或forward-email-site-verification=
(付费计划)。请注意,我们会解析两者,以便在用户升级或降级计划时处理电子邮件。 - 从这些解析 TXT 记录,我们遍历它们以提取转发配置(如 部分所述 如何开始和设置电子邮件转发 以上)。请注意,我们只支持一个
forward-email-site-verification=
值,如果提供了多个值,则会发生 550 错误,并且发件人将收到此收件人的退回邮件。 - 我们递归地遍历提取的转发配置以确定全局转发、基于正则表达式的转发和所有其他支持的转发配置——现在称为我们的“转发地址”。
- 对于每个转发地址,我们支持一个递归查找(它将在给定地址上开始这一系列操作)。如果找到递归匹配,则父结果将从转发地址中删除,并添加子结果。
- 转发地址被解析为唯一性(因为我们不想将重复发送到一个地址或产生额外的不必要的 SMTP 客户端连接)。
- 对于每个转发地址,我们根据 API 端点查找其域名
/v1/max-forwarded-addresses
(为了确定允许域将电子邮件转发到每个别名的地址数量,例如,默认情况下为 10 - 请参阅关于 每个别名的最大转发限制)。如果超出此限制,则会发生 550 错误,并且发件人将收到此收件人的退回邮件。 - 我们根据我们的 API 端点查找原始收件人的设置
/v1/settings
,它支持对付费用户的查找(免费用户的后备)。这将返回一个用于高级设置的配置对象port
(数字,例如25
),has_adult_content_protection
(布尔),has_phishing_protection
(布尔),has_executable_protection
(布尔),和has_virus_protection
(布尔)。 - 根据这些设置,我们会检查垃圾邮件扫描器的结果,如果出现任何错误,则邮件将被拒绝并显示 554 错误代码(例如,如果
has_virus_protection
已启用,然后我们将检查垃圾邮件扫描程序的结果是否有病毒)。请注意,所有免费计划用户都将选择加入对成人内容、网络钓鱼、可执行文件和病毒的检查。默认情况下,所有付费计划用户也都选择加入,但可以在转发电子邮件仪表板中域的“设置”页面下更改此配置)。
- 我们查找 TXT 域名记录(后面的部分
-
对于每个已处理的收件人的转发地址,我们然后执行以下操作:
- 该地址已根据我们的检查 拒绝名单,如果已列出,则会出现 554 错误代码,并且发件人将收到此收件人的退回邮件。
- 如果地址是一个 webhook,那么我们为未来的操作设置一个布尔值(见下文——我们将相似的 webhook 组合在一起以发出一个 POST 请求,而不是多个用于交付)。
- 如果地址是电子邮件地址,那么我们会解析主机以供将来操作(见下文 - 我们将相似的主机组合在一起以建立一个连接,而不是多个单独的连接以进行交付)。
-
如果没有收件人且没有退回邮件,我们会以“收件人无效”的 550 错误响应。
-
如果有收件人,那么我们遍历它们(由同一主机组合在一起)并传递电子邮件。见章节 您如何处理电子邮件发送问题 下面以获得更多见解。
- 如果在发送电子邮件时发生任何错误,我们会将它们存储在内存中以供以后处理。
- 我们将从发送电子邮件中获取最低的错误代码(如果有) - 并将其用作响应代码
DATA
命令。这意味着未发送的电子邮件通常会由原始发件人重试,但已发送的电子邮件将不会在下次发送邮件时重新发送(正如我们使用 指纹识别). - 如果没有发生错误,那么我们将发送一个 250 成功的 SMTP 响应状态码。
- 退回被确定为任何导致状态代码 >= 500(永久失败)的交付尝试。
-
如果没有发生退回(永久失败),那么我们将返回非永久失败中最低错误代码的 SMTP 响应状态代码(如果没有,则返回 250 成功状态代码)。
-
如果确实发生了退回邮件,我们将在将所有错误代码中最低的一个返回给发件人后在后台发送退回邮件。但是,如果最低错误代码 >= 500,则我们不会发送任何退回电子邮件。这是因为如果我们这样做了,那么发件人会收到一封重复退回的电子邮件(例如,一封来自他们的出站 MTA,例如 Gmail,还有一封来自我们)。请参阅关于 如何防止反向散射 下面以获得更多见解。
您如何处理电子邮件发送问题?
请注意,当且仅当发件人的 DMARC 政策为 p=reject
,并且它有一个通过的 SPF,并且没有 DKIM 签名与“发件人”标头对齐。这意味着我们将更改消息上的“From”标头,设置“X-Original-From”,如果尚未设置,还设置“Reply-To”。我们还将在更改这些标头后重新密封消息上的 ARC 密封。
我们还在堆栈的每个级别使用错误消息的智能解析——在我们的代码中,DNS 请求、Node.js 内部、HTTP 请求(例如,如果接收者将 408、413 和 429 映射到 SMTP 响应代码 421是一个 webhook)和邮件服务器响应(例如,带有“defer”或“slowdown”的响应将作为 421 错误重试)。
我们的逻辑是防伪的,它还会重试 TLS/SSL 错误、连接问题等。虚拟打样的目标是最大限度地提高转发配置对所有收件人的可传递性。
如果接收者是 webhook,那么我们将允许 60 秒的超时时间来完成请求,最多重试 3 次(因此在失败之前总共有 4 个请求)。请注意,我们正确解析了错误代码 408、413 和 429,并将它们映射到 SMTP 响应代码 421。
否则,如果收件人是电子邮件地址,那么我们将尝试使用机会性 TLS 发送电子邮件(如果收件人邮件服务器上可用,我们将尝试使用 STARTTLS)。如果在尝试发送电子邮件时发生 SSL 或 TLS 错误,那么我们将尝试在不使用 TLS 的情况下发送电子邮件(不使用 STARTTLS)。
如果发生任何 DNS 或连接错误,我们将返回 DATA
命令 SMTP 响应代码 421,否则如果有 >= 500 级错误,则将发送退回邮件。
如果我们检测到我们尝试投递的电子邮件服务器有一个或多个我们的邮件交换 IP 地址被阻止(例如,通过他们用于延迟垃圾邮件发送者的任何技术),那么我们将向发件人发送一个 421 的 SMTP 响应代码到稍后重试他们的消息(我们会收到有关该问题的警报,因此我们希望在下一次尝试之前解决它)。
您如何处理您的 IP 地址被封锁?
我们定期监控所有主要的 DNS 拒绝名单,如果我们的任何邮件交换 (“MX”) IP 地址被列在主要拒绝名单中,我们将尽可能将其从相关的 DNS A 记录循环中移除,直到问题得到解决。
在撰写本文时,我们也在多个 DNS 白名单中列出,并且我们非常重视监控黑名单。如果您在我们有机会解决之前发现任何问题,请通过以下方式书面通知我们 support@forwardemail.net.
什么是无回复地址?
我们不会将电子邮件转发到“无回复”地址,任何尝试转发的发件人都会收到 553 错误。
等于以下任何一项(不区分大小写)的电子邮件用户名被视为无回复地址:
do-not-reply
do-not-respond
do.not.reply
donotreply
donotrespond
dont-reply
naoresponda
no-replies
no-reply
no-replys
no.replies
no.reply
no.replys
no_reply
nobody
noreplies
noreply
noreplys
此列表已维护 作为 GitHub 上的开源项目.
你有白名单吗?
是的,我们有一个 域名后缀列表 默认情况下列入白名单,并且基于关闭的动态、缓存和滚动白名单 严格的标准.
默认情况下哪些域名扩展被列入白名单
默认情况下,以下域名扩展被视为白名单(无论它们是否在 Umbrella 流行列表中):
edu
gov
mil
dni.us
fed.us
isa.us
kids.us
nsn.us
ak.us
al.us
ar.us
as.us
az.us
ca.us
co.us
ct.us
dc.us
de.us
fl.us
ga.us
gu.us
hi.us
ia.us
id.us
il.us
in.us
ks.us
ky.us
la.us
ma.us
md.us
me.us
mi.us
mn.us
mo.us
ms.us
mt.us
nc.us
nd.us
ne.us
nh.us
nj.us
nm.us
nv.us
ny.us
oh.us
ok.us
or.us
pa.us
pr.us
ri.us
sc.us
sd.us
tn.us
tx.us
ut.us
va.us
vi.us
vt.us
wa.us
wi.us
wv.us
wy.us
mil.tt
edu.tt
edu.tr
edu.ua
edu.au
ac.at
edu.br
ac.nz
school.nz
cri.nz
health.nz
mil.nz
parliament.nz
ac.in
edu.in
mil.in
ac.jp
ed.jp
lg.jp
ac.za
edu.za
mil.za
school.za
mil.kr
ac.kr
hs.kr
ms.kr
es.kr
sc.kr
kg.kr
edu.es
ac.lk
sch.lk
edu.lk
ac.th
mi.th
admin.ch
canada.ca
gc.ca
go.id
go.jp
go.ke
go.kr
go.th
gob.ar
gob.cl
gob.es
gob.mx
gob.pe
gob.ve
gouv.fr
gouv.nc
gouv.qc.ca
gov.ad
gov.af
gov.ai
gov.al
gov.am
gov.ao
gov.au
gov.aw
gov.ax
gov.az
gov.bd
gov.be
gov.bg
gov.bm
gov.br
gov.by
gov.cl
gov.cn
gov.co
gov.cy
gov.cz
gov.dz
gov.eg
gov.fi
gov.fk
gov.gg
gov.gr
gov.hk
gov.hr
gov.hu
gov.ie
gov.il
gov.im
gov.in
gov.iq
gov.ir
gov.it
gov.je
gov.kp
gov.krd
gov.ky
gov.kz
gov.lb
gov.lk
gov.lt
gov.lv
gov.ma
gov.mm
gov.mo
gov.mt
gov.my
gov.ng
gov.np
gov.ph
gov.pk
gov.pl
gov.pt
gov.py
gov.ro
gov.ru
gov.scot
gov.se
gov.sg
gov.si
gov.sk
gov.tr
gov.tt
gov.tw
gov.ua
gov.uk
gov.vn
gov.wales
gov.za
government.pn
govt.nz
gub.uy
gv.at
ac.uk
bl.uk
judiciary.uk
mod.uk
nhs.uk
parliament.uk
police.uk
rct.uk
royal.uk
sch.uk
ukaea.uk
您的许可名单标准是什么
我们有一个静态列表 默认列入白名单的域名后缀 – 我们还根据以下严格标准维护一个动态的、缓存的、滚动的许可名单:
- 发件人根域必须是 与我们在免费计划中提供的列表相匹配的域名扩展名 (加上
biz
和info
).我们还包括edu
,gov
, 和mil
部分匹配,例如xyz.gov.au
和xyz.edu.au
. - 发件人根域必须在前 100,000 个唯一根域解析结果之内 雨伞人气榜 ("UPL").
- 发件人根域必须位于 UPL 的过去 7 天中至少有 4 天出现的唯一根域的前 50,000 个结果中 (~50%+)。
- 发件人根域不能是 分类的 作为 Cloudflare 的成人内容或恶意软件。
- 发件人根域必须设置 A 或 MX 记录。
- 发件人根域必须具有 A 记录、MX 记录、DMARC 记录
p=reject
或者p=quarantine
,或 SPF 记录-all
或者~all
预选赛。
如果满足此条件,则发件人根域将缓存 7 天。请注意,我们的自动化作业每天运行 - 因此这是一个每天更新的滚动许可名单缓存。
我们的自动化作业将下载前 7 天的 UPL 内存,解压缩它们,然后根据上述严格标准在内存中解析。
在撰写本文时流行的域,如谷歌、雅虎、微软、亚马逊、Meta、Twitter、Netflix、Spotify 等——当然包括在内。
如果您是不在我们白名单中的发件人,那么您的 FQDN 根域或 IP 地址第一次发送电子邮件时,您将 限速 和 列入灰名单.请注意,这是作为电子邮件标准采用的标准做法。如果大多数电子邮件服务器客户端收到速率限制或灰名单错误(例如 421 或 4xx 级别错误状态代码),它们将尝试重试。
请注意特定的发件人,例如 a@gmail.com
, b@xyz.edu
, 和 c@gov.au
仍然可以 黑名单 (例如,如果我们自动检测来自这些发件人的垃圾邮件、网络钓鱼或恶意软件)。
哪些域名后缀可以免费使用?
自 2023 年 3 月 31 日起,我们实施了一项新的一揽子垃圾邮件规则,以保护我们的用户和服务。
这条新规则只允许在我们的免费计划中使用以下域名扩展:
ai
app
au
ca
ch
co
com
de
dev
dk
es
family
fi
fm
fr
ie
im
io
is
it
jp
li
me
net
nl
no
nz
org
sh
sm
st
tv
uk
us
vc
xyz
你有灰名单吗?
是的,我们有一个非常松懈的 电子邮件灰名单 使用的策略。灰名单仅适用于不在我们许可名单上的发件人,并在我们的缓存中持续 30 天。
对于任何新的发件人,我们在 Redis 数据库中存储一个密钥 30 天,其值设置为他们第一次请求的初始到达时间。然后,我们以 450 的重试状态代码拒绝他们的电子邮件,并仅在 5 分钟过去后允许它通过。
如果他们从这个初始到达时间成功等待了 5 分钟,那么他们的电子邮件将被接受,他们将不会收到这个 450 状态代码。
密钥由 FQDN 根域或发件人的 IP 地址组成。这意味着通过灰名单的任何子域也将通过根域,反之亦然(这就是我们所说的“非常宽松”的策略)。
例如,如果一封电子邮件来自 test.o3o.ca
在我们看到一封电子邮件来自之前 o3o.ca
,然后是来自 test.o3o.ca
和/或 o3o.ca
从连接的初始到达时间起必须等待 5 分钟。我们不做两者 test.o3o.ca
和 o3o.ca
每个人都等待自己的 5 分钟时间(我们的灰名单政策适用于根域级别)。
请注意,灰名单不适用于我们的任何发件人 白名单 (例如撰写本文时的 Meta、Amazon、Netflix、Google、Microsoft)。
你有拒绝名单吗?
是的,我们运营自己的私人黑名单,并根据检测到的垃圾邮件和恶意活动实时和手动自动更新。被拒绝的发件人将收到 554 错误消息。
我们还从 UCEPROTECT 级别 1 拒绝列表中删除 http://wget-mirrors.uceprotect.net/rbldnsd-all/dnsbl-1.uceprotect.net.gz 每小时一次,并将其输入到我们的 Redis 数据库中,有效期为 7 天。
允许列表请求(或拒绝列表删除请求)可以发送到 allowlist@forwardemail.net (请提供完整的描述和添加到白名单的原因、网站链接以及您的企业的成立证书以列入我们的白名单)。
你有速率限制吗?
是的,我们有速率限制,仅适用于不在 白名单.
对于每个发件人解析的 FQDN 根域(或)发件人远程 IP 地址(如果没有可用的反向 PTR)和每个信封收件人,我们每小时最多允许 100 个连接。我们将用于速率限制的密钥作为加密哈希存储在我们的 Redis 数据库中。
如果您通过我们的系统发送电子邮件,请确保您为所有 IP 地址设置了反向 PTR(否则您发送的每个唯一 FQDN 根域或 IP 地址将受到速率限制)。
请注意,如果您通过流行的系统(如 Amazon SES)发送,那么您将不会受到速率限制,因为(在撰写本文时)Amazon SES 已列在我们的白名单中。
如果您从域发送,例如 test.abc.123.o3o.ca
,那么速率限制将被施加于 o3o.ca
.许多垃圾邮件发送者使用数百个子域来解决常见的垃圾邮件过滤器,这些过滤器仅对唯一主机名进行速率限制,而不是唯一的 FQDN 根域。
超过速率限制的发件人将被拒绝并出现 421 错误。
如何防止反向散射?
误导性退回或退回垃圾邮件(称为“后向散射") 可能会对发件人 IP 地址造成负面声誉。
我们采取两个步骤来防止反向散射,这将在以下部分中详细介绍 防止来自已知的 MAIL FROM 垃圾邮件发送者的退回 和 防止不必要的反弹以防止反向散射 以下。
防止来自已知的 MAIL FROM 垃圾邮件发送者的退回
我们从 反向散射.org (供电 UCEPROTECT) 在 http://wget-mirrors.uceprotect.net/rbldnsd-all/ips.backscatterer.org.gz 每小时并将其输入到我们的 Redis 数据库中(我们还会提前比较差异;以防任何需要兑现的 IP 被删除)。
如果 MAIL FROM 为空白或包含(不区分大小写)以下用户名之一(电子邮件中 @ 之前的部分),则我们检查发件人 IP 是否与此列表中的一个匹配:
abuse@
ftp@
hostmaster@
mailer-daemon@
mailer_daemon@
mailerdaemon@
news@
no-reply@
no_reply@
nobody@
noreplies@
noreply@
postmaster@
root@
security@
usenet@
webmaster@
www@
如果发件人的 IP 被列出(而不是在我们的 白名单),然后我们发送一个 554 错误消息 The IP ${session.remoteAddress} is blocked by https://www.backscatterer.org/index.php?target=test&ip=${session.remoteAddress}
.如果发件人同时在反向散射者列表和我们的白名单中,我们将收到提醒,以便我们在必要时解决问题。
本节中描述的技术遵循“安全模式”建议 https://www.backscatterer.org/?target=usage – 如果某些条件已经满足,我们只检查发件人 IP。
防止不必要的反弹以防止反向散射
退回邮件是指将电子邮件转发给收件人完全失败且不会重试的电子邮件。
被列入 Backscatterer 列表的一个常见原因是被误导的退回邮件或退回垃圾邮件,因此我们必须通过以下几种方式来防范这种情况:
-
我们仅在发生 >= 500 状态代码错误时发送退回邮件(当尝试转发的电子邮件失败时,例如 Gmail 以 500 级错误响应)。
-
我们只发送一次退回邮件(我们使用计算的退回指纹密钥并将其存储在缓存中以防止发送重复)。退回指纹是一个密钥,它是消息的指纹与退回地址及其错误代码的哈希值的组合)。请参阅关于 指纹识别 以更深入地了解如何计算消息指纹。成功发送的退回指纹将在我们的 Redis 缓存中 7 天后过期。
-
仅当 MAIL FROM 不为空白且不包含(不区分大小写)以下用户名之一(电子邮件中 @ 之前的部分)时,我们才会发送退回邮件。请注意,此列表比 MAIL FROM 检查中的上述列表要短一些,因为我们不希望出现误报(例如,security@ 是您可能想要退回的有效地址;很多人将 security@ 用于他们的漏洞赏金计划)。
abuse@
mailer-daemon@
mailer_daemon@
mailerdaemon@
-
如果原始邮件具有以下任何标头(不区分大小写),我们不会发送退回邮件:
Auto-Submitted
(值为no
)X-Auto-Response-Suppress
(值为dr
,autoreply
,auto-reply
,auto_reply
, 或者all
)List-Id
List-Unsubscribe
Feedback-ID
X-Auto-Reply
X-Autoreply
X-Auto-Respond
X-Autorespond
Precedence
(值为bulk
,autoreply
,auto-reply
,auto_reply
, 或者list
)
如何确定电子邮件指纹?
电子邮件的指纹用于确定电子邮件的唯一性并防止重复消息被传递和 重复反弹 从被发送。
指纹是一系列以冒号分隔的密码计算哈希,在我们的代码库内部使用。
当且仅当它们的值存在时,这些计算的哈希值才会被推送到数组(列表):
- 客户端解析的 FQDN 主机名或 IP 地址
Message-ID
标头值Date
标头值(当且仅当Message-ID
不存在)From
标头值(当且仅当Message-ID
不存在)To
标头值(当且仅当Message-ID
不存在)Cc
标头值(当且仅当Message-ID
不存在)Subject
标头值(当且仅当Message-ID
不存在)Body
价值(当且仅当Message-ID
不存在)
为什么我在 Gmail 中发送给自己的测试电子邮件显示为“可疑”?
如果您在向自己发送测试时在 Gmail 中看到此错误消息,或者当您使用别名发送电子邮件的人第一次看到您的电子邮件时,那么 请不要担心 – 因为这是 Gmail 的内置安全功能。
您只需单击“看起来很安全”即可。例如,如果您使用发送邮件作为功能发送测试消息(给其他人),那么他们将看不到此消息。
但是,如果他们确实看到了这条消息,那是因为他们通常习惯于看到您的电子邮件来自 约翰@gmail.com 代替 约翰@customdomain.com (只是一个例子)。 Gmail 会提醒用户确保一切安全,以防万一,没有解决方法。
我可以删除 Gmail 中的 via forwardemail dot net?
这个主题与一个 Gmail 中广为人知的问题,发件人姓名旁边会显示额外信息.
自 2023 年 5 月起,我们支持使用 SMTP 发送电子邮件作为所有付费用户的附加组件——这意味着您可以删除 通过转发邮件点网 在 Gmail 中。
请注意,此常见问题解答主题专门针对那些使用 如何使用 Gmail 发送邮件 特征。
请参阅以下部分 是否支持使用 SMTP 发送电子邮件 有关配置说明。
我可以将电子邮件转发到 25 以外的端口吗(例如,如果我的 ISP 阻止了端口 25)?
是的,自 2020 年 5 月 5 日起,我们已添加此功能。现在该功能是特定于域的,而不是特定于别名的。如果您要求它是特定于别名的,请联系我们让我们知道您的需求。
如果您使用的是免费计划,那么只需添加一个新的 DNS TXT 如下所示记录,但将端口从 25 更改为您选择的端口。
例如,如果我想要所有发往 o3o.ca
转发到别名收件人的 SMTP 端口 1337 而不是 25:
名称/主机/别名 | TTL | 类型 | 答案/值 |
---|---|---|---|
“@”、“.”或空白 | 3600 | TXT | forward-email-port=1337 |
名称/主机/别名 | TTL | 类型 | 答案/值 |
---|---|---|---|
“@”、“.”或空白 | 3600 | TXT | forward-email=o3o.ca |
您是否为付费计划提供退款保证?
是的!当您在计划首次开始后的 30 天内升级、降级或取消帐户时,会自动退款。这仅适用于首次使用的客户。
如果我改变计划,你会按比例计算并退还差价吗?
当您切换计划时,我们不会按比例计算或退还差价。相反,我们会将您现有计划的到期日期的剩余期限转换为新计划的最接近的相对期限(按月四舍五入)。
请注意,如果您在首次启动付费计划后的 30 天内升级或降级付费计划,那么我们将自动从您现有的计划中退还全部金额。
你支持网络钩子吗?
是的,自 2020 年 5 月 15 日起,我们已添加此功能。您可以像添加任何收件人一样简单地添加 webhook!请确保您在 webhook 的 URL 中有前缀“http”或“https”协议。
如果您使用的是免费计划,那么只需添加一个新的 DNS TXT 记录如下图:
例如,如果我想要所有发往 alias@o3o.ca
转发到一个新的 请求箱 测试端点:
名称/主机/别名 | TTL | 类型 | 答案/值 |
---|---|---|---|
“@”、“.”或空白 | 3600 | TXT | forward-email=alias:https://requestbin.com/r/en8pfhdgcculn |
或者,也许您想要所有发送到 o3o.ca
转发到此端点:
名称/主机/别名 | TTL | 类型 | 答案/值 |
---|---|---|---|
“@”、“.”或空白 | 3600 | TXT | forward-email=https://requestbin.com/r/en8pfhdgcculn |
以下是有关 webhook 的附加说明:
-
如果 webhook 没有响应
200
状态代码,然后我们将其响应存储在 创建错误日志 – 这对调试很有用。 -
Webhook HTTP 请求将在每次 SMTP 连接尝试时最多重试 3 次,每个端点 POST 请求的最大超时时间为 60 秒。 请注意,这并不意味着它只重试 3 次,它实际上会在第三次 HTTP POST 请求尝试失败后通过发送 421 的 SMTP 代码(向发件人表示稍后重试)来连续重试。这意味着电子邮件将连续重试几天,直到达到 200 状态代码。
-
我们将根据中使用的默认状态和错误代码自动重试 superagent的重试方法 (我们是维护者)。
-
我们将向同一个端点发送的 webhook HTTP 请求组合在一个请求中,而不是多个),以节省资源并加快响应时间。例如,如果您向 webhook1@o3o.ca, webhook2@o3o.ca, 和 webhook3@o3o.ca,并且所有这些都配置为命中相同 精确的 端点 URL,则只会发出一个请求。我们通过严格相等的精确端点匹配分组在一起。
-
请注意,我们使用 邮件解析器 库的“simpleParser”方法将消息解析为 JSON 友好对象。
-
作为字符串的原始电子邮件值作为属性“raw”给出。
-
身份验证结果以属性“dkim”、“spf”、“arc”、“dmarc”和“bimi”的形式给出。
-
解析后的电子邮件标题以属性“headers”的形式给出——但还请注意,您可以使用“headerLines”来更轻松地进行迭代和解析。
-
此 webhook 的分组接收者被分组在一起,并作为属性“接收者”给出。
-
SMTP 会话信息作为属性“会话”给出。这包含有关消息发送者、消息到达时间、HELO 和客户端主机名的信息。客户端主机名值为
session.clientHostname
是 FQDN(来自反向 PTR 查找)或者是session.remoteAddress
括在括号中(例如"[127.0.0.1]"
). -
如果您需要一种快速的方法来获取
X-Original-To
, 然后你可以使用的值session.recipient
(见下面的例子)。标头X-Original-To
是我们添加到消息中的标头,用于与原始消息进行调试RCPT TO
消息的电子邮件地址。 -
如果有附件,它们将被附加到
attachments
带有缓冲区值的数组。您可以使用 JavaScript 方法将它们解析回内容,例如:const data = [ 104, 101, 108, 108, 111, 32, 119, 111, 114, 108, 100, 33 ];
// // outputs "hello world!" to the console // (this is the content from the filename "text1.txt" in the example JSON request payload above) // console.log(Buffer.from(data).toString());
{
"attachments": [
{
"type": "attachment",
"content": {
"type": "Buffer",
"data": [
104,
101,
108,
108,
111,
32,
119,
111,
114,
108,
100,
33
]
},
"contentType": "text/plain",
"partId": "2",
"release": null,
"contentDisposition": "attachment",
"filename": "text1.txt",
"headers": {},
"checksum": "fc3ff98e8c6a0d3087d515c0473f8677",
"size": 12
}
],
"headers": "ARC-Seal: i=1; a=rsa-sha256; t=1653506802; cv=none; d=forwardemail.net;\r\n s=default;\r\n b=R6QJ0tGwwjg2VPxiAlVIKxsg3jEPtRGKPTIOdZNWuhWrbssttFdOYzRRqvacDyN5SLoyDhVye\r\n DUA/64IxANXdHVFlpR258Yp7WxLDv2gtJD5vNSKYmUJZOWk1TynmlqTYrp0Vuqg2xIUjIlPBWAJ\r\n PPNx4JvOLjJuWYynU2qIWz0=\r\nARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed;\r\n d=forwardemail.net; h=MIME-Version: Date: Message-ID: From: Content-Type;\r\n q=dns/txt; s=default; t=1653506802;\r\n bh=cEYDoyTy+Ub29XZt/zXR+sprfUE6BW0y5cHfah01PT4=;\r\n b=F/t56AAXr2Kv3G6VsbdT5OKDVJf2ulhwLiTM18Ra4tDPUKPSGSLKrWvxiXEg5NMWwdWnsOYrL\r\n r3YSm4uMxVMhHZbHm/sUu4QZq5/18hQsAkCv6fI9ifTjDwBrN5zpLOhPoZFFo+TyvHxiII3Xv3L\r\n UEzmUIIaJRX6tboQ160tino=\r\nARC-Authentication-Results: i=1; mx1.forwardemail.net;\r\n dkim=none (message not signed);\r\n spf=none (mx1.forwardemail.net: example.net does not designate permitted sender hosts) smtp.mailfrom=test@example.net smtp.helo=user.oem.local;\r\n dmarc=none header.from=o3o.ca;\r\n bimi=skipped (DMARC not enabled)\r\nReceived-SPF: none (mx1.forwardemail.net: example.net does not designate permitted sender hosts) client-ip=127.0.0.1;\r\nAuthentication-Results: mx1.forwardemail.net;\r\n dkim=none (message not signed);\r\n spf=none (mx1.forwardemail.net: example.net does not designate permitted sender hosts) smtp.mailfrom=test@example.net smtp.helo=user.oem.local;\r\n dmarc=none header.from=o3o.ca;\r\n bimi=skipped (DMARC not enabled)\r\n",
"headerLines": [
{
"key": "arc-seal",
"line": "ARC-Seal: i=1; a=rsa-sha256; t=1653506802; cv=none; d=forwardemail.net;\r\n s=default;\r\n b=R6QJ0tGwwjg2VPxiAlVIKxsg3jEPtRGKPTIOdZNWuhWrbssttFdOYzRRqvacDyN5SLoyDhVye\r\n DUA/64IxANXdHVFlpR258Yp7WxLDv2gtJD5vNSKYmUJZOWk1TynmlqTYrp0Vuqg2xIUjIlPBWAJ\r\n PPNx4JvOLjJuWYynU2qIWz0="
},
{
"key": "arc-message-signature",
"line": "ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed;\r\n d=forwardemail.net; h=MIME-Version: Date: Message-ID: From: Content-Type;\r\n q=dns/txt; s=default; t=1653506802;\r\n bh=cEYDoyTy+Ub29XZt/zXR+sprfUE6BW0y5cHfah01PT4=;\r\n b=F/t56AAXr2Kv3G6VsbdT5OKDVJf2ulhwLiTM18Ra4tDPUKPSGSLKrWvxiXEg5NMWwdWnsOYrL\r\n r3YSm4uMxVMhHZbHm/sUu4QZq5/18hQsAkCv6fI9ifTjDwBrN5zpLOhPoZFFo+TyvHxiII3Xv3L\r\n UEzmUIIaJRX6tboQ160tino="
},
{
"key": "arc-authentication-results",
"line": "ARC-Authentication-Results: i=1; mx1.forwardemail.net;\r\n dkim=none (message not signed);\r\n spf=none (mx1.forwardemail.net: example.net does not designate permitted sender hosts) smtp.mailfrom=test@example.net smtp.helo=user.oem.local;\r\n dmarc=none header.from=o3o.ca;\r\n bimi=skipped (DMARC not enabled)"
},
{
"key": "received-spf",
"line": "Received-SPF: none (mx1.forwardemail.net: example.net does not designate permitted sender hosts) client-ip=127.0.0.1;"
},
{
"key": "authentication-results",
"line": "Authentication-Results: mx1.forwardemail.net;\r\n dkim=none (message not signed);\r\n spf=none (mx1.forwardemail.net: example.net does not designate permitted sender hosts) smtp.mailfrom=test@example.net smtp.helo=user.oem.local;\r\n dmarc=none header.from=o3o.ca;\r\n bimi=skipped (DMARC not enabled)"
},
{
"key": "x-forwardemail-sender",
"line": "X-ForwardEmail-Sender: rfc822; test@example.net"
},
{
"key": "x-forwardemail-session-id",
"line": "X-ForwardEmail-Session-ID: w2czxgznghn5ryyw"
},
{
"key": "x-forwardemail-version",
"line": "X-ForwardEmail-Version: 9.0.0"
},
{
"key": "content-type",
"line": "Content-Type: multipart/mixed; boundary=\"--_NmP-179a735428ca7575-Part_1\""
},
{
"key": "from",
"line": "From: some <random@o3o.ca>"
},
{
"key": "message-id",
"line": "Message-ID: <69ad5fc2-91cb-728f-ae5c-eeedc5f267b6@example.net>"
},
{
"key": "date",
"line": "Date: Wed, 25 May 2022 19:26:41 +0000"
},
{
"key": "mime-version",
"line": "MIME-Version: 1.0"
}
],
"html": "<strong>some random text</strong>",
"text": "some random text",
"textAsHtml": "<p>some random text</p>",
"date": "2022-05-25T19:26:41.000Z",
"from": {
"value": [
{
"address": "random@o3o.ca",
"name": "some"
}
],
"html": "<span class=\"mp_address_group\"><span class=\"mp_address_name\">some</span> <<a href=\"mailto:random@o3o.ca\" class=\"mp_address_email\">random@o3o.ca</a>></span>",
"text": "some <random@o3o.ca>"
},
"messageId": "<69ad5fc2-91cb-728f-ae5c-eeedc5f267b6@example.net>",
"raw": "ARC-Seal: i=1; a=rsa-sha256; t=1653506802; cv=none; d=forwardemail.net;\r\n s=default;\r\n b=R6QJ0tGwwjg2VPxiAlVIKxsg3jEPtRGKPTIOdZNWuhWrbssttFdOYzRRqvacDyN5SLoyDhVye\r\n DUA/64IxANXdHVFlpR258Yp7WxLDv2gtJD5vNSKYmUJZOWk1TynmlqTYrp0Vuqg2xIUjIlPBWAJ\r\n PPNx4JvOLjJuWYynU2qIWz0=\r\nARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed;\r\n d=forwardemail.net; h=MIME-Version: Date: Message-ID: From: Content-Type;\r\n q=dns/txt; s=default; t=1653506802;\r\n bh=cEYDoyTy+Ub29XZt/zXR+sprfUE6BW0y5cHfah01PT4=;\r\n b=F/t56AAXr2Kv3G6VsbdT5OKDVJf2ulhwLiTM18Ra4tDPUKPSGSLKrWvxiXEg5NMWwdWnsOYrL\r\n r3YSm4uMxVMhHZbHm/sUu4QZq5/18hQsAkCv6fI9ifTjDwBrN5zpLOhPoZFFo+TyvHxiII3Xv3L\r\n UEzmUIIaJRX6tboQ160tino=\r\nARC-Authentication-Results: i=1; mx1.forwardemail.net;\r\n dkim=none (message not signed);\r\n spf=none (mx1.forwardemail.net: example.net does not designate permitted sender hosts) smtp.mailfrom=test@example.net smtp.helo=user.oem.local;\r\n dmarc=none header.from=o3o.ca;\r\n bimi=skipped (DMARC not enabled)\r\nReceived-SPF: none (mx1.forwardemail.net: example.net does not designate permitted sender hosts) client-ip=127.0.0.1;\r\nAuthentication-Results: mx1.forwardemail.net;\r\n dkim=none (message not signed);\r\n spf=none (mx1.forwardemail.net: example.net does not designate permitted sender hosts) smtp.mailfrom=test@example.net smtp.helo=user.oem.local;\r\n dmarc=none header.from=o3o.ca;\r\n bimi=skipped (DMARC not enabled)\r\nX-ForwardEmail-Sender: rfc822; test@example.net\r\nX-ForwardEmail-Session-ID: w2czxgznghn5ryyw\r\nX-ForwardEmail-Version: 9.0.0\r\nContent-Type: multipart/mixed; boundary=\"--_NmP-179a735428ca7575-Part_1\"\r\nFrom: some <random@o3o.ca>\r\nMessage-ID: <69ad5fc2-91cb-728f-ae5c-eeedc5f267b6@example.net>\r\nDate: Wed, 25 May 2022 19:26:41 +0000\r\nMIME-Version: 1.0\r\n\r\n----_NmP-179a735428ca7575-Part_1\r\nContent-Type: multipart/alternative;\r\n boundary=\"--_NmP-179a735428ca7575-Part_2\"\r\n\r\n----_NmP-179a735428ca7575-Part_2\r\nContent-Type: text/plain; charset=utf-8\r\nContent-Transfer-Encoding: 7bit\r\n\r\nsome random text\r\n----_NmP-179a735428ca7575-Part_2\r\nContent-Type: text/html; charset=utf-8\r\nContent-Transfer-Encoding: 7bit\r\n\r\n<strong>some random text</strong>\r\n----_NmP-179a735428ca7575-Part_2--\r\n\r\n----_NmP-179a735428ca7575-Part_1\r\nContent-Type: text/plain; name=text1.txt\r\nContent-Transfer-Encoding: base64\r\nContent-Disposition: attachment; filename=text1.txt\r\n\r\naGVsbG8gd29ybGQh\r\n----_NmP-179a735428ca7575-Part_1--\r\n",
"dkim": {
"headerFrom": [
"random@o3o.ca"
],
"envelopeFrom": "test@example.net",
"results": [
{
"status": {
"result": "none",
"comment": "message not signed"
},
"info": "dkim=none (message not signed)"
}
]
},
"spf": {
"domain": "example.net",
"client-ip": "127.0.0.1",
"helo": "user.oem.local",
"envelope-from": "test@example.net",
"status": {
"result": "none",
"comment": "mx1.forwardemail.net: example.net does not designate permitted sender hosts",
"smtp": {
"mailfrom": "test@example.net",
"helo": "user.oem.local"
}
},
"header": "Received-SPF: none (mx1.forwardemail.net: example.net does not designate permitted sender hosts) client-ip=127.0.0.1;",
"info": "spf=none (mx1.forwardemail.net: example.net does not designate permitted sender hosts) smtp.mailfrom=test@example.net smtp.helo=user.oem.local",
"lookups": {
"limit": 50,
"count": 1
}
},
"arc": {
"status": {
"result": "none"
},
"i": 0,
"authResults": "mx1.forwardemail.net;\r\n dkim=none (message not signed);\r\n spf=none (mx1.forwardemail.net: example.net does not designate permitted sender hosts) smtp.mailfrom=test@example.net smtp.helo=user.oem.local;\r\n dmarc=none header.from=o3o.ca;\r\n bimi=skipped (DMARC not enabled)"
},
"dmarc": {
"status": {
"result": "none",
"header": {
"from": "o3o.ca"
}
},
"domain": "o3o.ca",
"info": "dmarc=none header.from=o3o.ca"
},
"bimi": {
"status": {
"header": {},
"result": "skipped",
"comment": "DMARC not enabled"
},
"info": "bimi=skipped (DMARC not enabled)"
},
"recipients": [
"webhook1@webhooks.net"
],
"session": {
"recipient": "webhook1@webhooks.net",
"remoteAddress": "127.0.0.1",
"remotePort": 65138,
"clientHostname": "[127.0.0.1]",
"hostNameAppearsAs": "user.oem.local",
"sender": "test@example.net",
"mta": "mx1.forwardemail.net",
"arrivalDate": "2022-05-25T19:26:41.423Z",
"arrivalTime": 1653506801423
}
}
你支持正则表达式还是正则表达式?
是的,自 2021 年 9 月 27 日起,我们已添加此功能。您可以简单地编写正则表达式(“regex”)来匹配别名和执行替换。
正则表达式支持的别名是以 a 开头的别名 /
并以 /
他们的收件人是电子邮件地址或 webhook。收件人还可以包括正则表达式替换支持(例如 $1
, $2
).
我们支持两个正则表达式标志,包括 i
和 g
.不区分大小写的标志 i
是永久默认值,并且始终强制执行。全球旗帜 g
可以通过添加结尾来添加 /
和 /g
.
请注意,我们也支持我们的 禁用别名功能 对于我们的正则表达式支持的收件人部分。
不支持正则表达式 全局虚域 (因为这可能是一个安全漏洞)。
如果您使用的是免费计划,那么只需添加一个新的 DNS TXT 使用以下提供的一个或多个示例进行记录:
名称/主机/别名 | TTL | 类型 | 答案/值 |
---|---|---|---|
“@”、“.”或空白 | 3600 | TXT | forward-email=/^(linus|torvalds)$/:user@gmail.com |
名称/主机/别名 | TTL | 类型 | 答案/值 |
---|---|---|---|
“@”、“.”或空白 | 3600 | TXT | forward-email=/^([A-Za-z]+)+\.([A-Za-z]+)+$/:$1.$2@company.com |
名称/主机/别名 | TTL | 类型 | 答案/值 |
---|---|---|---|
“@”、“.”或空白 | 3600 | TXT | forward-email=/^(support|info)$/:user+$1@gmail.com |
名称/主机/别名 | TTL | 类型 | 答案/值 |
---|---|---|---|
“@”、“.”或空白 | 3600 | TXT | forward-email=/^(.*?)$/:https://o3o.ca/webhook?username=$1 |
名称/主机/别名 | TTL | 类型 | 答案/值 |
---|---|---|---|
“@”、“.”或空白 | 3600 | TXT | forward-email=/^(linus|torvalds)$/:! |
我可以将此电子邮件转发服务用作“后备”或“后备”MX 服务器吗?
不,不建议这样做,因为您一次只能使用一个邮件交换服务器。由于优先级错误配置和邮件服务器不遵守 MX 交换优先级检查,通常不会重试回退。
我可以禁用特定的别名吗?
是的!自 2020 年 2 月 6 日起,我们已添加此功能。只需编辑您的 DNS TXT 记录并在别名前加上感叹号。请注意,您必须保留“:”映射,因为如果您决定关闭它(并且它也用于在我们的付费计划中导入),这是必需的。
如果在别名前加上“!” (感叹号)然后它仍然会向尝试发送到此地址的发件人返回成功的响应代码,但电子邮件本身将无处可去;到一个黑洞。
发送到禁用地址的电子邮件将以 SMTP 响应状态代码 250(已接受)进行响应,但电子邮件实际上不会传递给收件人。
例如,如果我想要所有发往 alias@o3o.ca
停止流过 user@gmail.com
:
名称/主机/别名 | TTL | 类型 | 答案/值 |
---|---|---|---|
“@”、“.”或空白 | 3600 | TXT | forward-email=!alias:user@gmail.com |
名称/主机/别名 | TTL | 类型 | 答案/值 |
---|---|---|---|
“@”、“.”或空白 | 3600 | TXT | forward-email=!alias:nobody@forwardemail.net |
名称/主机/别名 | TTL | 类型 | 答案/值 |
---|---|---|---|
“@”、“.”或空白 | 3600 | TXT | forward-email=!alias |
我可以将电子邮件转发给多个收件人吗?
是的,一点没错。只需在您的 TXT 记录。
例如,如果我想要一封电子邮件 hello@o3o.ca
转发给 user+a@gmail.com
和 user+b@gmail.com
,那么我的 TXT 记录看起来像这样:
名称/主机/别名 | TTL | 类型 | 答案/值 |
---|---|---|---|
“@”、“.”或空白 | 3600 | TXT | forward-email=hello:user+a@gmail.com,hello:user+b@gmail.com |
或者,您可以在两个单独的行中指定它们,例如:
名称/主机/别名 | TTL | 类型 | 答案/值 |
---|---|---|---|
“@”、“.”或空白 | 3600 | TXT | forward-email=hello:user+a@gmail.com |
“@”、“.”或空白 | 3600 | TXT | forward-email=hello:user+b@gmail.com |
由你决定!
我可以有多个全局包罗万象的收件人吗?
是的你可以。只需在您的 TXT 记录。
例如,如果我想要每封电子邮件 *@o3o.ca
(星号表示它是通配符,又名包罗万象)被转发到 user+a@gmail.com
和 user+b@gmail.com
,那么我的 TXT 记录看起来像这样:
名称/主机/别名 | TTL | 类型 | 答案/值 |
---|---|---|---|
“@”、“.”或空白 | 3600 | TXT | forward-email=user+a@gmail.com,user+b@gmail.com |
或者,您可以在两个单独的行中指定它们,例如:
名称/主机/别名 | TTL | 类型 | 答案/值 |
---|---|---|---|
“@”、“.”或空白 | 3600 | TXT | forward-email=user+a@gmail.com |
@、“.”或空白 | 3600 | TXT | forward-email=user+b@gmail.com |
由你决定!
每个别名可以转发的电子邮件地址数量是否有最大限制?
是的,默认限制为 10。这并不意味着您的域名只能有 10 个别名。您可以拥有任意数量的别名(数量不限)。这意味着您只能将一个别名转发给 10 个唯一的电子邮件地址。你可以有 hello:user+1@gmail.com
, hello:user+2@gmail.com
, hello:user+3@gmail.com
, … (从 1-10) – 以及任何发往 hello@o3o.ca
会被转发到 user+1@gmail.com
, user+2@gmail.com
, user+3@gmail.com
, ...(从 1-10)。
我可以递归转发电子邮件吗?
是的,您可以,但是您仍然必须遵守最高限额。如果你有 hello:linus@o3o.ca
和 linus:user@gmail.com
,然后发送电子邮件至 hello@o3o.ca
会被转发到 linus@o3o.ca
和 user@gmail.com
.请注意,如果您尝试递归转发电子邮件,则会引发错误。
人们可以在未经我许可的情况下取消注册或注册我的电子邮件转发吗?
我们使用 MX 和 TXT 记录验证,因此如果您添加此服务的相应 MX 和 TXT 记录,然后你就注册了。如果您删除它们,那么您将被取消注册。您拥有您的域和 DNS 管理的所有权,所以如果有人可以访问它,那就是个问题。
怎么免费的?
由于升级到付费计划的用户,该服务继续运行。我们希望为使用闭源转发服务(并随后冒着隐私和安全风险)的人们提供免费的替代方案。
最大电子邮件大小限制是多少?
我们默认为 50MB 大小限制,其中包括内容、标题和附件。请注意,Gmail 和 Outlook 等服务仅允许 25MB 的大小限制,如果您在向这些提供商的地址发送邮件时超出限制,您将收到一条错误消息。
如果超出文件大小限制,则会返回带有正确响应代码的错误。
您是否存储电子邮件及其内容?
不,我们不写入磁盘或存储日志——使用 错误例外 和 出站 SMTP (见我们的 隐私政策).
一切都在内存中完成 我们的源代码在 GitHub 上.
您是否存储电子邮件日志?
不,我们不写入磁盘或存储日志——使用 错误例外 和 出站 SMTP (见我们的 隐私政策).
一切都在内存中完成 我们的源代码在 GitHub 上.
你存储错误日志吗?
是的。您可以在下面访问错误日志 我的账户 → 日志 或者 我的账户 → 域.
截至 2023 年 2 月,我们存储错误日志 4xx
和 5xx
为期 7 天的 SMTP 响应代码 – 其中包含 SMTP 错误、信封和电子邮件标头(我们 不要 存储电子邮件正文或附件)。
错误日志允许您检查丢失的重要电子邮件并减少垃圾邮件误报 你的域名.它们也是调试问题的重要资源 电子邮件网络挂钩 (因为错误日志包含 webhook 端点响应)。
的错误日志 速率限制 和 灰名单 无法访问,因为连接提前结束(例如之前 RCPT TO
和 MAIL FROM
命令可以被传输)。
查看我们的 隐私政策 以获得更多洞察力。
你看我的邮件了吗?
不,绝对不是。查看我们的 隐私政策.
许多其他电子邮件转发服务存储并可能阅读您的电子邮件。转发的电子邮件没有理由需要存储到磁盘存储中——因此我们构建了第一个在内存中完成所有操作的开源解决方案。
我们认为您应该拥有隐私权,我们严格尊重它。部署到服务器的代码是 GitHub 上的开源软件 透明度和建立信任。
是否支持 Gmail 别名的加号 + 符号?
是的,一点没错。
是否支持子域?
是的,一点没错。而不是使用“@”、“.”或空白作为名称/主机/别名,您只需使用子域名作为值。
如果你想 foo.o3o.ca
转发电子邮件,然后输入 foo
作为 DNS 设置中的名称/主机/别名值(对于 MX 和 TXT 记录)。
这会转发我的电子邮件标题吗?
是的,一点没错。
这是经过充分测试的吗?
是的,它有编写的测试 阿瓦 并且还具有代码覆盖率。
您是否传递 SMTP 响应消息和代码?
是的,一点没错。例如,如果您要发送电子邮件至 hello@o3o.ca
它已注册转发到 user@gmail.com
,然后将返回来自“gmail.com”SMTP 服务器的 SMTP 响应消息和代码,而不是“mx1.forwardemail.net”或“mx2.forwardemail.net”的代理服务器。
您如何防止垃圾邮件发送者并确保良好的电子邮件转发声誉?
请参阅我们的部分 您的电子邮件转发系统如何工作, 您如何处理电子邮件发送问题, 和 您如何处理您的 IP 地址被封锁 以上。
如果我收到垃圾邮件怎么办?
您应该取消订阅电子邮件列表(如果可能)并阻止发件人。
请不要将邮件报告为垃圾邮件,而是将其转发到我们手动策划和以隐私为中心的滥用预防系统。
将垃圾邮件转发到的电子邮件地址是: abuse@forwardemail.net
我可以用这个在 Gmail 中“发送邮件”吗?
是的!自 2018 年 10 月 2 日起,我们已添加此功能。看 如何使用 Gmail 发送邮件 以上!
您还应该在 DNS 配置中为 Gmail 设置 SPF 记录 TXT 记录。
include:_spf.google.com
到你的 SPF TXT 记录,例如:
v=spf1 a mx include:spf.forwardemail.net include:_spf.google.com -all
我可以用这个在 Outlook 中“发送邮件”吗?
是的!自 2018 年 10 月 2 日起,我们已添加此功能。只需查看下面来自 Microsoft 的这两个链接:
- https://support.office.com/zh-cn/article/add-or-remove-an-email-alias-in-outlook-com-459b1989-356d-40fa-a689-8f285b13f1f2
- https://support.office.com/zh-cn/article/send-email-from-a-different-address-in-outlook-com-ccba89cb-141c-4a36-8c56-6d16a8556d2e
您还应该在 DNS 配置中为 Outlook 设置 SPF 记录 TXT 记录。
include:spf.protection.outlook.com
到你的 SPF TXT 记录,例如:
v=spf1 a mx include:spf.forwardemail.net include:spf.protection.outlook.com -all
我可以用这个在 Apple Mail 和 iCloud Mail 中“发送邮件”吗?
不幸的是,无论您使用哪种服务,Apple 都不允许这样做。但是,您可以将邮件应用程序与您域的电子邮件帐户一起使用。
我可以用这个转发无限的电子邮件吗?
是的,但是“相对未知”的发件人的速率限制为每个主机名或 IP 每小时 100 个连接。请参阅以下部分 速率限制 和 灰名单 以上。
“相对未知”是指未出现在 白名单.
如果超出此限制,我们将发送“421”响应代码,告知发件人邮件服务器稍后重试。
如何将个人资料图片添加到我的电子邮件地址?
如果您使用的是 Gmail,请按照以下步骤操作:
- 去 https://google.com 并退出所有电子邮件帐户
- 单击“登录”,然后在下拉菜单中单击“其他帐户”
- 选择“使用另一个帐户”
- 选择“创建帐户”
- 选择“改用我当前的电子邮件地址”
- 输入您的自定义域名电子邮件地址
- 检索发送到您的电子邮件地址的验证电子邮件
- 输入此电子邮件中的验证码
- 为您的新 Google 帐户填写完整的个人资料信息
- 同意所有隐私和使用条款政策
- 去 https://google.com 在右上角,单击您的个人资料图标,然后单击“更改”按钮
- 为您的帐户上传新照片或头像
- 更改大约需要 1-2 小时才能传播,但有时可能会很快。
- 发送测试电子邮件,个人资料照片应该会出现。
免费和增强保护有什么区别?
免费计划要求您使用公共 DNS 记录来存储您的转发配置。如果您使用的是免费计划,任何拥有计算机的人都可以在终端中查找您的转发配置。与免费计划不同,增强保护计划使用加密生成的随机字符串来私下存储您的转发配置。
免费计划 | 加强保障计划 |
---|---|
forward-email=user@gmail.com | forward-email-site-verification=m8d7o8K4Il |
你支持MTA-STS吗?
您是否支持电子邮件最佳实践?
是的。我们在所有计划中都内置了对 SPF、DKIM、DMARC、ARC 和 SRS 的支持。我们还与这些规范的原作者和其他电子邮件专家进行了广泛的合作,以确保完美和高可交付性。
您是否以一种价格提供无限域名?
是的。无论您采用哪种计划,您只需支付一个月费率——涵盖您的所有域。
您接受哪些付款方式?
你会涨价吗?
不会。价格永远不会上涨。与其他公司不同,我们也永远不会关闭我们的服务。
您如何对域名执行 DNS 查找?
我们创建了一个名为 🍊 的开源软件项目 柑橘 并将其用于 DNS 查找。使用的默认 DNS 服务器是 1.1.1.1
和 1.0.0.1
, 并且 DNS 查询是通过 通过 HTTPS 的 DNS (“DoH”)在应用层。