Вероятно, на это уже есть ответ, но я просто не могу понять, как его правильно искать.
Ситуация:
У нас есть аварийная ситуация для двух узлов, используя keepalived
, передавая между ними плавающий IP. Основное назначение узлов - запуск haproxy
. На каждом узле также работает локальный postfix
который используется исключительно для доставки электронной почты из keepalived
или из haproxy
, в фактическую учетную запись оператора, ретранслируя через SendGrid на внешний почтовый домен, как это происходит. Никакая почта не принимается ни с какой другой машины.
Все это хорошо работает. Слишком хорошо; мой почтовый ящик переполнен. Я хотел бы подавить почту с неактивного узла, и когда произойдет аварийное переключение, заставить postfix внезапно начать доставку почты.
Итак, вот идея.
ip addr | grep -q $FLOAT_IP
. Итак ... Я предполагаю, что основной вопрос в том, как происходит "тихий режим". Это совершенно отдельная конфигурация postfix, и мне нужно перезапустить postfix с правильной конфигурацией?
Было бы лучше создать Фильтр содержимого после очереди?
Есть еще какая-то идея?
Хорошо, после подсказки @sebix «использовать discard
транспорт ", у меня кое-что вроде работает:
Настройте транспортную карту:
# 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 может вызывать для включения или выключения постфикса:
#!/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
чтобы это произошло. (отрывок):
....
vrrp_instance VRRP1 {
state BACKUP
interface ens32
...
notify /usr/local/bin/keepalived_togglemail.sh
}