我的设置是一个高效的服务器(例如1.1.1.1 )托pipe一个域,可以说example.com 。 目前,postfix和courier(只有IMAP)正在做托pipe邮件的工作。 我打算将域名转移到新的服务器(例如1.1.1.2 ),也使用postfix,但dovecot作为新的IMAP服务器。 我已经在1.1.1.2上设置了postfix来接受example.com的所有邮件,这些邮件被发送到邮箱并且可以通过IMAP访问。 所有帐户(包括邮件)都是shell帐户。 我使用Debian的两个服务器。
在我的虚拟主机提供商的Web界面中,我可以设置example.com的服务器(A-record)和邮件服务器(MX-record)的IP。 目前,它们分别指向1.1.1.1和server.example.com (后者自动parsing为1.1.1.1 )。 我不能影响任何TTL设置。 而且,我不会更改我的提供者,只是更改托pipe域的虚拟机。
两个问题:
我希望我的旧服务器1.1.1.1将所有收到的邮件发送到新的服务器1.1.1.2用于testing目的(例如testing邮件filter,垃圾邮件识别等,因为不是所有的东西都将被设置为相同的)。 这是一个好主意(例如关于反弹等)? 在postfix中实现这个的正确方法是什么(类似Apache HTTP Server中的反向代理)?
什么是从旧服务器到新服务器进行域名转移的最佳方式,这样停机时间最less(至less在IMAP帐户转移时,我确信我需要停止所有邮件服务器),并且没有邮件丢失/被推迟? 我曾想过让旧服务器将邮件转发到新服务器一段时间,以便可以从DNScaching过时的系统收到邮件。
一般来说,我正在寻找一个方便和最佳实践的方式来执行此操作。 而且,我不知道,如果我对这两个问题的看法都指向了正确的方向。
我通过让旧服务器1.1.1.1将所有邮件转发到新服务器1.1.1.2来做到这一点。 在旧服务器1.1.1.1上使用postfix,可以执行以下操作,将每个传入邮件的副本发送到其他服务器:
[email protected] ,BCC收件人[email protected]被添加到每个邮件 example.migration被传送到1.1.1.2 。 example.migrationreplaceexample.com 。 为此,请创build以下文件:
/等/后缀/迁移/ recipient_bcc_map:
/^(.*)@example\.com$/ [email protected]
/等/后缀/迁移/ transport_map:
example.migration smtp:[1.1.1.2]
/等/后缀/迁移/ smtp_generic_maps:
/^(.*)@example\.migration$/ [email protected]
现在将所有这些包含到main.cf :
recipient_bcc_maps = pcre:/etc/postfix/migration/recipient_bcc_map transport_maps = hash:/etc/postfix/migration/transport_map smtp_generic_maps = pcre:/etc/postfix/migration/smtp_generic_maps
2.3版本的Postfix避免了在这个configuration中的反弹。 因此,如果在1.1.1.2发生错误,则不会返回它们(请参阅http://www.postfix.org/postconf.5.html#recipient_bcc_maps )。
现在所有邮件都作为副本交付给1.1.1.2 。 使用此设置,您可以testing所有迁移的东西,如新服务器上的filter。 确保/etc/aliases同步。
要执行迁移本身:
对于收到的邮件,宕机时间最短,因为它们只在步骤2和3之间延迟。
要回答2号码:
将当前MXlogging上的TTL设置为适当的设置(1小时可能会更好)。 然后更改MXlogging以指向新的服务器。 然后等待一小时(或任何您设置TTL的时间),以获取可能传送到旧服务器的任何电子邮件(基于某些系统具有caching的旧MXlogging),然后将电子邮件从旧服务器传输到新的服务器。
将MXlogging更改为指向新服务器后,任何尚未cachingMXlogging(旧MXlogging)的电子邮件服务器都将立即parsing新的MXlogging,并在此处发送电子邮件。 任何确实拥有MXlogging(旧MXlogging)的电子邮件服务器都将继续向旧服务器发送电子邮件,直到MXlogging的TTL到期为止,届时,他们将对MXlogging执行新的查找,find新的MXlogging并在那里发送邮件。
除了使用像Roundhouse这样的软件将镜像传送到第二台服务器之外,没有任何办法可以完全testing。 这个级别的testing可能不是必要的; 使用telnet进行手动入站testing应该没问题。
在确定交付(入站和出站)按照预期工作之后,您可以像这样切换:
邮件将在发件人排队,如果他们cachingjoeqwerty说, 根据我的经验,大多数软件会尝试其他mxlogging。 请注意,mxlogging应该指向实际的主机名称,而不是诸如mail.example.com的cname。 硬件是pipe理客户端访问; 及早与客户沟通将有所帮助。