这可能是一个答案,但我不知道如何正确地search它。
情况:
我们有两个节点的故障转移情况,使用keepalived ,在它们之间传递浮动IP。 节点的主要目的是运行haproxy 。 每个节点还运行本地postfix ,仅用于将电子邮件从keepalived或从haproxy到实际的运营商帐户,通过SendGrid中继到外部邮件域。 任何其他机器都不接受邮件。
所有这一切运作良好。 太好; 我的邮箱被淹没了。 我想阻止来自非活动节点的邮件,当故障转移发生时,让postfix突然开始发送邮件。
所以这是这个想法。
ip addr | grep -q $FLOAT_IP ip addr | grep -q $FLOAT_IP 。 所以…我想基本的问题是如何“静音模式”发生。 它是一个完全独立的后缀configuration,我必须重新启动与正确的configuration后缀?
build立一个After-Queue内容filter会更好吗?
还有其他的想法吗?
好了,从@sebix提示“使用discard传输”之后,我有一些似乎正在工作的东西:
build立一个交通地图:
# echo >>/etc/postfix/main.cf 'transport_maps = hash:/etc/postfix/transport'
将默认的运输地图设置为空; 还设置了丢弃传输文件
# cat </dev/null >/etc/postfix/transport # cat </dev/null >/etc/postfix/transport.normal # echo >/etc/postfix/transport.discard '* discard:'
一个bash脚本/usr/local/bin/keepalived_togglemail.sh keepalived可以调用来打开或closurespostfix:
#!/bin/bash TYPE=$1 NAME=$2 STATE=$3 case $STATE in "MASTER") cp /etc/postfix/transport.normal /etc/postfix/transport postmap /etc/postfix/transport /etc/init.d/postfix reload exit 0 ;; "BACKUP") cp /etc/postfix/transport.discard /etc/postfix/transport postmap /etc/postfix/transport /etc/init.d/postfix reload exit 0 ;; "FAULT") echo FAULT exit 0 ;; *) echo "unknown state" exit 1 ;; esac
并在/etc/keepalived/keepalived.conf中的/etc/keepalived/keepalived.conf来实现它。 (摘抄):
.... vrrp_instance VRRP1 { state BACKUP interface ens32 ... notify /usr/local/bin/keepalived_togglemail.sh }