У нас есть веб-приложение ASP.NET с балансировкой нагрузки (NLB), которое отправляет электронную почту.
Серверы имеют двойное размещение с внешней и внутренней (за брандмауэром) IP-адресацией. Почтовый сервер находится за брандмауэром.
Мы обнаружили проблему, когда класс SMTPClient выдает исключение, сообщающее, что он не может подключиться к SMTP-серверу.
Сетевые парни говорят нам, что они видят попытки подключиться к SMTP-серверу с внешнего IP-адреса (который блокирует межсетевой экран)
Исходя из моих (предположительно неоднозначных) знаний о приложениях с поддержкой сети, я подумал, что локальная привязка IP будет определяться на основе пункта назначения, т.е. если в таблицах маршрутизации указано, что IP-адрес может быть доступен через конкретную сетевую карту, а не IP исходящий запрос генерируется из. Я не прав?
глядя на SmtpClient.ServicePoint Я начинаю думать, что мы можем быть и что мы можем (должны) принудительно установить явную привязку к определенному IP?
В частности, я смотрел на
Свойство ServicePoint.BindIPEndPointDelegate
с этой страницы ...
Замечания: некоторые методы балансировки нагрузки
потребовать от клиента использования определенного
локальный IP-адрес и номер порта,
а не IPAddress.Any (или
IPAddress.IPv6Any для интернета
Протокол версии 6) и эфемерный
порт. Ваш BindIPEndPointDelegate может
удовлетворить это требование.
мне просто немного странно, что мне нужно это сделать, но, возможно, это обычное явление в такой среде?