如何在 2 个或多个服务器之间分配电子邮件传递

如何在 2 个或多个服务器之间分配电子邮件传递

我们通过在线应用程序提供电子邮件营销服务。我们有大约 30 位客户。每位客户都有自己的邮件列表(每人 5k 到 20k 封电子邮件)。

我们真正想要的是将电子邮件的传递分发到 2 个或更多服务器。我想知道 MailChimp、Constant Contact 使用什么样的方法/解决方案来提供优质服务?使用多台服务器?多个 IP?

我们的垃圾邮件政策将暂停任何被退回 10% 邮件的用户/客户。

答案1

我们在 The Planet 有 1 台服务器

Dual Xeon Quad Core, com 12 GB of RAM

Processor #1 Vendor: GenuineIntel
Processor #1 Name: Intel(R) Xeon(R) CPU           E5405  @ 2.00GHz
Processor #1 speed: 1995.080 MHz
Processor #1 cache size: 6144 KB

Processor #2 Vendor: GenuineIntel
Processor #2 Name: Intel(R) Xeon(R) CPU           E5405  @ 2.00GHz
Processor #2 speed: 1995.080 MHz
Processor #2 cache size: 6144 KB

Processor #3 Vendor: GenuineIntel
Processor #3 Name: Intel(R) Xeon(R) CPU           E5405  @ 2.00GHz
Processor #3 speed: 1995.080 MHz
Processor #3 cache size: 6144 KB

Processor #4 Vendor: GenuineIntel
Processor #4 Name: Intel(R) Xeon(R) CPU           E5405  @ 2.00GHz
Processor #4 speed: 1995.080 MHz
Processor #4 cache size: 6144 KB

Processor #5 Vendor: GenuineIntel
Processor #5 Name: Intel(R) Xeon(R) CPU           E5405  @ 2.00GHz
Processor #5 speed: 1995.080 MHz
Processor #5 cache size: 6144 KB

Processor #6 Vendor: GenuineIntel
Processor #6 Name: Intel(R) Xeon(R) CPU           E5405  @ 2.00GHz
Processor #6 speed: 1995.080 MHz
Processor #6 cache size: 6144 KB

Processor #7 Vendor: GenuineIntel
Processor #7 Name: Intel(R) Xeon(R) CPU           E5405  @ 2.00GHz
Processor #7 speed: 1995.080 MHz
Processor #7 cache size: 6144 KB

Processor #8 Vendor: GenuineIntel
Processor #8 Name: Intel(R) Xeon(R) CPU           E5405  @ 2.00GHz
Processor #8 speed: 1995.080 MHz
Processor #8 cache size: 6144 KB

当我们所有的客户同时投放活动时(这发生在纪念日之前),由于投放流量较大,我们会收到太多被拒绝的电子邮件。我们使用 45 个 IP 轮换我们的邮件外发 IP。并控制/限制从每个 IP 到主机(例如:@hotmail、@gmail)的流量。

我们的方法是

  1. 我们的应用程序在下午 2 点向 @hotmail.com 发送了 300 封电子邮件
  2. 应用程序阻止向@hotmail.com 发送邮件,并开始向其他主机发送邮件,直到提高主机的限制
  3. 应用程序每 10 分钟轮换一次邮件服务器的传出 IP(使用 45 个不同的 IP)

我担心,随着业务的增长和客户的增多,交付流量变得越来越大,而这种方法会因被目标主机拒绝而失败。

答案2

通常,消息队列用于类似这样的任务。将电子邮件发送给特定收件人或收件人组的命令在生产者上排队,然后任意数量的消费者都可以提取队列中的下一个命令并进行处理。

如何实施有很多选择,但这取决于您的具体环境。

也就是说,对于单个服务器来说,您发送的邮件量并不是很高。

答案3

这里到底有什么问题?

您的邮件量还不足以进行拆分 - 我的意思是,即使您的 30 位客户同时发送 20,000 封电子邮件,这也不够 - 一台强大的服务器足以处理(我不是说超级强大 - 只需获取一些光盘并为邮件线轴组建一个突袭队)。

您可以使用多个发送服务器进行排队。所有邮件服务器的 IP 地址块。要么使用 MS Exchange 之类的东西进行发送(Exchange 在自动维护服务器场方面非常出色),要么使用某种机制在服务器之间对电子邮件进行群集(以便那些发往同一域的电子邮件最终位于同一服务器上 - 只是因为服务器可以在一个 TCP 连接中发送多封电子邮件)。

多个 ISP 听起来不是问题。别忘了 - 我们谈论的是廉价家庭 ADSL 线路的流量太大了。一旦您获得商业级,您的服务器就会移至合适的数据中心。对于合适的数据中心来说,正常运行时间非常高(小心,有些数据中心真的很便宜)。即使 2-3 年内有一天会宕机,您也必须非常大或集群化才有意义。即使这样,情况也可能变得非常糟糕(例如:维基百科最近也宕机了一段时间)。

主要问题是您需要根据规格构建专用服务器来处理邮件流。网络流量并不大。但邮件缓冲池会严重影响您的磁盘。如果您的电子邮件数量真的达到 600,000 封,那么由 4-8 个高速磁盘组成的 RAID 10(或:由 SSD 组成的 RAID 5)似乎是最佳选择。与所有数据库事务系统一样,您的限制将是 IO。我会使用具有非标准节点大小(64k)的自定义格式文件系统,这样几乎可以保证每个电子邮件在节点上读取/写入。请注意,这是基于 SPIKE 使用情况的 - 如果电子邮件不是一次性全部发送,那么您可以少用很多。

下一步将会是服务器集群。

相关内容