Aqui eu suponho que você tenha um mecanismo de monitoramento do status de uplink do seu servidor. Você precisa executar um script descrito abaixo quando o uplink for alterado.
Postfix apenas verifica o tamanho da mensagem antes de enfileirar a mensagem. A ação foi 200 accept ou 5XX reject . Não há nenhuma ação personalizada como "Ei postfix, por favor, segure esta grande mensagem até estarmos conectados ao uplink de alta velocidade".
Então, precisamos de companhia aqui. Você pode usar o postfwd para verificar o tamanho da mensagem para você. Quando sua mensagem exceder o limite de postfwd, você poderá definir uma ação personalizada, como a ação HOLD . De acordo com acesso man 5 , quando a ação HOLD é aplicada a uma mensagem, então
HOLD optional text...
Place the message on the hold queue, where it will sit until someone either deletes it or releases it for delivery. Log the optional text if specified, otherwise log a generic message.
Então, aqui está a ideia:
- Quando estiver conectado ao uplink lento , coloque o limite inferior no postfwd. Quando uma mensagem de envio do usuário exceder o limite inferior, o postfix irá HOLD. Ele permanece na fila e o postfix não se incomodará em entregá-lo.
-
Quando você estiver conectado ao uplink de alta velocidade , o script colocará o limite mais alto em postfwd. Em seguida, o script deve emitir o comando postsuper como
root
para liberar o email da fila HOLD.postsuper -H ALL
Note que, neste caso, o limite de postfwd deve ser maior que
message_size_limit
no postfix. Caso contrário, o postfix não rejeitará mensagens grandes, mas mantenha-as. -
Quando você está conectado ao uplink lento novamente , coloque o limite inferior em postfwd.
A regra de exemplo do postfwd é
# replace 192.168.1.0/24 with your local network and 12345 with limit size
id=RULE001
client_address=192.168.1.0/24
size=12345
action=HOLD exceed slow link limit
Por favor, consulte os documentos postfwd sobre a instalação e seu regras . Esta resposta não cobre isso.