Como o System.Net.Mail.SMTPClient faz sua ligação de IP local
Temos um aplicativo Web ASP.NET com carga balanceada (NLB) que envia email.
Os servidores têm hospedagem dupla com um IP externo e interno (atrás do firewall). O servidor de email está atrás do firewall.
Estamos vendo um problema em que a classe SMTPClient lança uma exceção afirmando que não pode se conectar ao servidor SMTP.
O pessoal da rede está nos dizendo que está vendo tentativas de conexão com o servidor SMTP a partir do endereço IP externo (que o firewall está bloqueando)
Pelo meu conhecimento (reconhecidamente irregular) de aplicativos habilitados para rede, pensei que a ligação de IP local seria decidida com base no destino, ou seja, se as tabelas de roteamento disserem que o endereço IP pode ser acessado através de uma NIC em particular, que é o IP da solicitação de saída é gerado a partir de. Estou errado?
olhando para SmtpClient.ServicePoint Estou começando a pensar que podemos ser e que podemos (devemos) forçar uma ligação explícita a um IP específico?
especificamente, eu estive olhando
Propriedade ServicePoint.BindIPEndPointDelegate a partir dessa página ...
Comentários: Algumas técnicas de balanceamento de carga exigem que um cliente use um endereço IP local específico e um número de porta, em vez de IPAddress.Any (ou IPAddress.IPv6Any para Internet Protocol Versão 6) e uma porta efêmera. Seu BindIPEndPointDelegate pode atender a esse requisito.
parece um pouco estranho para mim que eu precisaria fazer isso, mas talvez isso seja comum nesse tipo de ambiente?