Solução possível
Ao enviar um email, o parâmetro usado para controlar o endereço IP de saída era smtp_bind_address . Portanto, você deve definir explicitamente o parâmetro smtp_bind_address para um endereço IP.
Explicação
Sua configuração acima já modificou o parâmetro inet_interfaces . Apenas define em qual endereço IP o postfix irá receber e-mails.
No entanto, o parâmetro inet_interfaces também pode afetar smtp_bind_address se essas três condições forem suficientes:
-
smtp_bind_addressestá vazio (por padrão) -
inet_interfacestem apenas UM endereço IP IPv4 -
inet_interfaceslista não foi loopback.
Quando aconteceu, smtp_bind_address = $inet_interfaces .
Como você configurou dois endereços IP em inet_interfaces , o smtp_bind_address ainda estava vazio. Nesse caso, cliente smtp usa 0.0.0.0 como seu endereço IP e 0.0.0.0 (INADDR_ANY) significa que o kernel escolherá o endereço IP com base em onde o pacote vai . De este segmento SO por Remy Lebeau , ele diz
If the client does not bind to a specific IP, or it binds to INADDR_ANY, the socket will use the first IP it finds that has an available route to the server IP being connected to.
Então, no seu caso, é compreensível que o kernel escolha 46.38.238.137 para fazer conexão de saída.