Ativar e desativar o postfix

3

Provavelmente já existe uma resposta para isso, mas não consigo descobrir como pesquisá-la corretamente.

Situação:

Temos uma situação de failover para dois nós, usando keepalived , passando um IP flutuante entre eles. O objetivo principal dos nós é executar haproxy . Cada nó também executa um postfix local que é usado exclusivamente para entregar emails de keepalived ou de haproxy para uma conta de operador real, transmitindo por meio de SendGrid para um domínio de email externo, conforme ocorre. Nenhum email é aceito de qualquer outra máquina.

Tudo isso está funcionando bem. Bem demais; minha caixa de correio está inundada. Eu gostaria de suprimir o email do nó não ativo e, quando o failover acontece, fazer o postfix de repente começar a entregar email.

Então aqui está a ideia.

  • modo normal: o postfix aceita e-mails na porta 25 e os retransmissões pelo Sendgrid.
  • modo silencioso: o postfix ainda aceita e-mail na porta 25, mas ele cai no chão, não retransmitindo em qualquer lugar, não retornando falha para o cliente, não enviando um salto. (Sim, esse é um comportamento terrível para um MTA normalmente. MTAs não devem mentir sobre aceitar correspondência. Mas essa é uma situação restrita.)
  • Como saber se devo estar no modo normal ou silencioso: um script simples, provavelmente algo como ip addr | grep -q $FLOAT_IP .

Então ... eu acho que a questão básica é como o "modo silencioso" acontece. É uma configuração de postfix totalmente separada, e eu tenho que reiniciar o postfix com a configuração correta?

Seria melhor configurar um Filtro de conteúdo pós-fila ?

Existe alguma outra ideia?

    
por Ross Presser 22.08.2017 / 21:55

1 resposta

2

OK, depois da dica de @sebix para "usar o discard transport", tenho algo que parece estar funcionando:

Configurar um mapa de transporte:

# echo >>/etc/postfix/main.cf 'transport_maps = hash:/etc/postfix/transport'

Configure o mapa de transporte padrão como vazio; também configura um arquivo para o transporte de descarte

# cat </dev/null >/etc/postfix/transport
# cat </dev/null >/etc/postfix/transport.normal
# echo >/etc/postfix/transport.discard '* discard:'

Um script bash /usr/local/bin/keepalived_togglemail.sh que keepalived pode invocar para ativar ou desativar o postfix:

#!/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

E uma linha em /etc/keepalived/keepalived.conf para que isso aconteça. (trecho):

....
vrrp_instance VRRP1 {
     state BACKUP
     interface ens32
     ...
     notify /usr/local/bin/keepalived_togglemail.sh
}
    
por 23.08.2017 / 03:56