配置邮件故障转移,配置wsc2022为主邮件服务器,当它失效后,邮件转发给wsc2024(主备邮件).note

noteId: WEBf29d22ceb3d21ef6ea742717fdfd07f6 · 原始路径:/ALL/Linux - A模块/服务配置/Mail 邮件服务/配置邮件故障转移,配置wsc2022为主邮件服务器,当它失效后,邮件转发给wsc2024(主备邮件).note · 图片:9 · 附件待处理:1

 
 
·2022题目:
将 wsc2024.fr配置为 wsc2022.kr域的备份邮件服务器,当dmzsrv.wsc2022.kr发生故障时,所有wsc2022.kr的邮件都应该发送给 fr-srv.wsc2024.fr(暂存),并且它们将在 dmzsrv.wsc2022.kr恢复时立马发送给它
 
# 环境:
dmzsrv.wsc2022.kr - kr-edge.wsc2022.kr - INET - fr-edge.wsc2024.fr - fr-srv.wsc2024.fr
 
# 思路:
在公网进行测试的,公网客户端作为客户端
先配置好wsc2024.fr域对wsc2022.kr域的转发,利用邮件默认的机制(当无法发送邮件时,先暂存到本地,然后等待能够发送时再发送),这里不需要用到dovecot、lmtp,只需要用smtp本身的转发机制即可
 
 
 
要先配置两个域的邮件收发,确保两个域之间收发邮件正常
 
1、配置 FR-SRV,编写脚本检测SRV的状态,当它恢复时,立即转发邮件:
apt install -y nmap
vim mail.sh
 
postfix flush    //立即发送postfix队列中“暂时无法投递”的邮件
&    //后台执行脚本
 
vim /etc/crontab
 
 
2、配置 FR-SRV(当dmzsrv恢复时能够将邮件转发过去):
vim /etc/postfix/main.cf
 
这样就可以了
 
·测试:
将 dmzsrv 的smtp停止:
 
在 公网客户端发送邮件给dmzsrv(发送给inet,通过inet进行投递):
 
我们查看 inet的邮件队列(发送暂时失败的邮件都会出现在这里):
mailq
可以看到是空的,已经正常发送给了 fr-srv(通过wsc2024.fr域的网关dnat)
 
在 fr-srv上查看邮件队列(应该有一个去往wsc2022.kr的队列)
可以看到该队列存在,此时只要dmzsrv一启动,fr-srv挂载后台的脚本检测到他启动,就会立即执行 postfix flush命令,立即发送队列中的邮件
 
在 dmzsrv 上开启 smtp:
 
在 wsc2022.kr客户端上查看:
可以看到,成功接收了邮件
 
 
·从头详细讲解一遍 操作、原理:
1、首先配置好 internet.com、wsc2022.kr、wsc2024.fr这三个域之间的邮件收发,只需要在 main.cf中加一个 'local_recipient_maps= ',然后在dns中指定 MX记录就可以了,postfix会自动根据MX记录来决定如何发送邮件(MX记录越小越优先),以wsc2022.kr举例,我们这里定义了MX 10 dmzsrv.wsc2022.kr. ;MX 20 fr-srv.wsc2024.fr.  ,postfix发送邮件时,优先发送给wsc2022.kr,如果邮件(timeout、域名不属于这个域)发送失败,就会尝试下一条MX记录,就会发送给 fr-srv.wsc2024.fr。同理,internet.com发送邮件给wsc2022.kr,也是会根据MX记录来决定如何发送,因为MX 10 wsc2022.kr,但是dmzsrv停止后无法访问,那么就会将邮件发给MX 20 wsc2024.fr。如果邮件是发送给本地域的,就不会查询MX,而会直接进行发送
2、internet.com不需要定义wsc2022.kr和wsc2024.fr域的MX记录,只需要配置转发器,然后在这两个域上配置外网解析,在外网解析里面配置MX记录,10为本地域名(wsc2022.kr),20为对端域名(wsc2024.fr);internet.com公网邮件服务器也是一样,在自己dns中配置MX,然后其他两个域的dns配置根提示、转发器指过来即可
3、要保障连通性问题,在两端的网关中,都各自配置dnat,将SMTP端口(25、465)dnat给各自的mail server
 
所以这里理论上是可以配置两个域互为备份服务器,只要都在本地写脚本,检测对端状态执行 postfix flush,然后MX记录都将对端指定为MX 20,本端指定为MX 10即可