O que acontece é que o postfix usará o smtp_bind_address
configurado primeiro. No seu caso, é um ip estático ligado ao tun0. Ele vai passar por tun0 quando estiver no ar. Se tun0 estiver inativo, o cliente bind
falhará, fazendo com que o postfix retorne ao comportamento padrão de não vincular o ponto de extremidade tcp do cliente e, portanto, usará a rota padrão que está conectada a eth0.
Parece que o postfix não fornece uma substituição adequada para a falha smtp_bind_address.
Portanto, a resposta é simplesmente bloquear o email de saída na porta 25 na interface eth0 usando uma regra de tabelas IP. Isso fará com que todos os e-mails fiquem em fila por um tempo antes de falhar ou até que o tun0 volte.
Algo como o seguinte deve funcionar:
iptables -A OUTPUT -i eth0 -p tcp --dport 25 -j DROP
Isso impedirá que todos os e-mails sejam enviados pela porta 25 via eth0 e originados diretamente de seu servidor (não encaminhados). Ele não bloqueará o tráfego de e-mail enviado pelo tun0.