Wie führt System.Net.Mail.SMTPClient die lokale IP-Bindung durch?

Wir haben eine ASP.NET-Webanwendung mit Lastenausgleich (NLB), die E-Mails sendet.

Die Server sind mit einer nach außen gerichteten und einer nach innen gerichteten (hinter der Firewall) IP-Adresse ausgestattet. Der Mailserver befindet sich hinter der Firewall.

Es ist ein Problem aufgetreten, bei dem die SMTPClient-Klasse eine Ausnahme ausgibt, die besagt, dass keine Verbindung zum SMTP-Server hergestellt werden kann.

Die Leute vom Netzwerk erzählen uns, dass sie versuchen, von der externen IP-Adresse (die die Firewall blockiert) aus eine Verbindung zum SMTP-Server herzustellen.

Aufgrund meines (zugegebenermaßen lückenhaften) Wissens über netzwerkfähige Anwendungen dachte ich, dass die lokale IP-Bindung auf der Grundlage des Ziels festgelegt wird, dh wenn die Routing-Tabellen besagen, dass auf die IP-Adresse über eine bestimmte Netzwerkkarte zugegriffen werden kann, ist dies die IP-Adresse der ausgehenden Anforderung wird generiert aus. Liege ich falsch?

Ich beginne zu denken, dass wir möglicherweise eine explizite Bindung an eine bestimmte IP erzwingen können (sollten)?

speziell habe ich angeschaut
ServicePoint.BindIPEndPointDelegate-Eigenschaft von dieser Seite ...

Hinweise: Bei einigen Lastausgleichstechniken muss ein Client eine bestimmte lokale IP-Adresse und Portnummer anstelle von IPAddress.Any (oder IPAddress.IPv6Any für Internet Protocol Version 6) und eines kurzlebigen Ports verwenden. Ihr BindIPEndPointDelegate kann diese Anforderung erfüllen.

Es scheint mir nur ein wenig seltsam, dass ich das tun müsste, aber vielleicht ist das in dieser Art von Umgebung üblich?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage