切换后缀打开和closures

这可能是一个答案,但我不知道如何正确地search它。

情况:

我们有两个节点的故障转移情况,使用keepalived ,在它们之间传递浮动IP。 节点的主要目的是运行haproxy 。 每个节点还运行本地postfix ,仅用于将电子邮件从keepalived或从haproxy到实际的运营商帐户,通过SendGrid中继到外部邮件域。 任何其他机器都不接受邮件。

所有这一切运作良好。 太好; 我的邮箱被淹没了。 我想阻止来自非活动节点的邮件,当故障转移发生时,让postfix突然开始发送邮件。

所以这是这个想法。

  • 正常模式:postfix接受端口25上的邮件,并通过Sendgrid中继。
  • 静默模式:postfix仍然接受端口25上的邮件,但是它放在地板上,不会传递到任何地方,不会将失败返回给客户端,也不会发送反弹。 (是的,这对于一个MTA来说是非常糟糕的行为,MTA不应该接受邮件,但这是一个有限的情况。)
  • 如何判断我应该处于正常模式还是静默模式:一个简单的脚本,可能类似于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 }