反向代理多个SMTP / IMAP服务器

我们希望使用smtp.example.com ,而不是将客户服务器名称(如beta.example.com作为IMAP / SMTP服务器。

我们有一个所有域/电子邮件服务器和相应的邮件服务器的数据库。 有没有办法使用nginx(或其他服务器/服务)作为反向代理? 然后nginx应该将请求转发到正确的服务器。

非常感谢你

没有必要把nginx或任何其他forms的负载均衡器放在你的边界SMTP服务器前面。 如果你没有正确的configuration,这很可能会影响你成功发送邮件的能力。 把你的服务器放在你的DMZ中。

传入的stream量将会通过一个对话的一部分,然后才能适当地路由它。 IMAP用户将尝试login。 SMTP服务器将位于RCPT TO命令中,并可能试图将相同的消息发送到您列为MX的不同域。

在服务器场中使用像smtp01.example.com这样的名称是很常见的。 对于每个这些服务器。 您用于邮件服务器的域很less与服务器名称匹配。 对于像SMTP,Web,IMAP,POP和其他通用服务,通常会发布和使用服务名称(或代替主机名称)。 通过以相同的优先级发布它们来负载平衡MX服务器。

  1. 在DNS中为您的邮件服务器的IP地址发布Alogging。 还要为邮件服务器的IPv6 IP添加AAAAlogging。 如果你想支持IPv6。 (如果您正在configurationIPv4和IPv6支持,您将需要两个PTRlogging。)
  2. 你有IP提供商configurationPTRlogging返回服务器的服务(SMTP)名称。 这将使反向DNS(rDNS)validation工作。
  3. 发送电子邮件时,将邮件服务器configuration为绑定到上述地址。
  4. configuration邮件服务器以使用服务名称作为其身份。 这将允许rDNSvalidation在HELOEHLO命令上工作。

考虑将SPFlogging(如v=spf1 a -all到每个SMTP服务器的DNS条目。 这将允许收件人validation此服务器是否打算发送邮件。 (SPF可以用来validation服务器以及发件人。)

MX服务器通常也是出站邮件服务器,这是没有必要的。 在SPFlogging中列出电子邮件地址中使用的域(通常是example.com而不是george.example.com )中的出站SMTP服务器。

您的SMTP服务器应该属于一个域。 域的MX服务器不必位于同一个域中。 如果您正在configuration多个域,请select一个用于邮件服务器,并将其用于所有域。

在较大的安装中,边界(面向外部的)SMTP服务器通常会转发到内部邮件服务器,以最终传递收到的邮件。 所有的外发邮件都应该发送到边界服务器进行传送。 如果您将传入的MX(邮件交换)服务器与传出MTA(邮件传输代理)服务器分开,则传出的邮件应通过传出MTA而不是MX服务器发送。 无论如何,将MX包含在SPFlogging中是一个好主意。 这将允许您的MX服务器发送延迟传送通知,而不会将该邮件视为垃圾邮件。

对于漫游用户,您可能需要经过身份validation的SMTP访问才能允许用户发送电子邮件。 这最好在提交端口(587)而不是SMTP端口(25)上完成。 连接后,应使用startTLS命令使用TLS(SSL)进行startTLS 。 身份validation只能在encryption的连接上进行。 这可以在上面configuration的服务器上提供,也可以在提供IMAP访问的服务器上提供。

根据您的需要,您可以使用支持代理连接的IMAP服务器,或者只允许用户连接到服务器的域。 为此目的使用服务域通常是imap.example.commail.example.com 。 这些可以在DNS中configuration为Alogging或CNAMES 。 许多邮件客户端将自动configuration到该域的通用服务帐户。 如果在configuration期间以用户身份input[email protected] ,则软件可能会find像mail.example.comimap.example.compop.example.comsmtp.example.com.这样的服务域smtp.example.com. 为IMAP和STMPstream量使用不同的服务名称是比较常见的。