Назад | Перейти на главную страницу

Включение и выключение постфикса

Вероятно, на это уже есть ответ, но я просто не могу понять, как его правильно искать.

Ситуация:

У нас есть аварийная ситуация для двух узлов, используя keepalived, передавая между ними плавающий IP. Основное назначение узлов - запуск haproxy. На каждом узле также работает локальный postfix который используется исключительно для доставки электронной почты из keepalived или из haproxy, в фактическую учетную запись оператора, ретранслируя через SendGrid на внешний почтовый домен, как это происходит. Никакая почта не принимается ни с какой другой машины.

Все это хорошо работает. Слишком хорошо; мой почтовый ящик переполнен. Я хотел бы подавить почту с неактивного узла, и когда произойдет аварийное переключение, заставить postfix внезапно начать доставку почты.

Итак, вот идея.

Итак ... Я предполагаю, что основной вопрос в том, как происходит "тихий режим". Это совершенно отдельная конфигурация 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
}