сбой теста dns при правильном dns asp.net

#asp.net #vb.net #dns

#asp.net #vb.net #dns

Вопрос:

Привет, я провожу dns-тест перед отправкой почты, чтобы убедиться, что я не получаю ошибок. Но возникает проблема, когда я пытаюсь отправить электронное письмо на адрес xxxxx@eco-log.se я получаю сообщение об ошибке от функции dns. когда я пытаюсь удалить «-» в почтовом адресе, это работает.

сначала я подумал, что это из-за «-«, но я отправил электронное письмо на zzzzzz@eh-design.se и это работает как шарм, в чем тогда может быть проблема? На 100% уверен, что «xxxxx@eco-log.se «это существующее электронное письмо / dns. Я получаю сообщение об ошибке «Нет такого известного источника» (свободный перевод)

Вот код проверки dns:

 Public Function testDNS(ByVal dnsstring As String) As Boolean
    Dim email As String = dnsstring
    Dim host As String() = email.Split("@")
    Dim hostName As String = host(1)
    Dim socket As Net.Sockets.Socket
    Try
        Dim entry As IPHostEntry = Dns.GetHostEntry(hostName)
        Dim endPoint As New IPEndPoint(entry.AddressList(0), 25)
        socket = New Sockets.Socket(endPoint.AddressFamily, SocketType.Stream, ProtocolType.Tcp)
        Return True
        socket.Connect(endPoint)
    Catch se As SocketException
        Try
            Return False
        Catch ex As Exception
        End Try
    End Try
End Function
  

Комментарии:

1. Вы пытаетесь установить соединение с сокетом на почтовом сервере получателя? Могло ли быть причиной проблемы что-то на другом конце, а не ваш код? Лично я бы получил IP (ы) записей из GetHostEntry и посмотрел, получил ли я ответ на ping, вместо того, чтобы идти до конца и пытаться установить соединение. Если вы точно не знаете, что на другом конце?!

2. Коды отлично работают, но только для этого конкретного dns… я не знаю почему… ВСЕ другие dns: es, которые я пробовал, сработали! :/

3. Используете ли вы какой-либо вид олицетворения или что-то подобное? Это в Active Directory или все компьютеры разрозненны? Есть ли разница в типах записей DNS для тех, которые работают, а не нет? en.wikipedia.org/wiki/List_of_DNS_record_types

Ответ №1:

Я полагаю, что проблема, с которой вы сталкиваетесь здесь, заключается в двух предположениях. Это:

  1. Что существует DNS-запись дляdomain.se. Есть много доменов, в которых есть записи, подобные www.domain.se но не domain.se
  2. Если этот хост (запись) существует, то почтовый сервер прослушивает порт 25.

Поскольку почтовый сервер может работать с совершенно другим именем хоста, существуют записи DNS, называемые MX или Mail eXchange. Они указывают на то, где на самом деле находится почтовый сервер. К сожалению, если вы не используете сторонний элемент управления или некоторые более сложные вызовы .net, я не уверен, можете ли вы указать, какой ТИП записей dns возвращать (пожалуйста, прокомментируйте это, если я ошибаюсь :)).

Есть компоненты, которые вы можете получить, которые будут проверять все подобные вещи и многое другое, например. http://www.dart.com/ptmlvnet_overview.aspx. Я не использовал этот конкретный элемент управления, но он попытается подключиться к почтовому серверу и остановит отправку электронного письма, чтобы проверить, сообщает ли удаленный сервер, что адрес электронной почты недействителен или не существует. Я видел другие, которые будут, поэтому попробуйте либо погуглить, либо отключить «Компонент проверки адреса электронной почты .net».

Я надеюсь, это поможет объяснить, почему у вас возникли проблемы.

Джонатан

Ответ №2:

Похоже, вы пытаетесь разрешить только запись A (ddr) для домена ‘eco-log.se ‘

 Dim entry As IPHostEntry = Dns.GetHostEntry(hostName)
  

Но в этом домене не настроена запись A, присутствует только Google MX:

 $ host eco-log.se
eco-log.se mail is handled by 10 aspmx.l.google.com.
eco-log.se mail is handled by 20 alt1.aspmx.l.google.com.
eco-log.se mail is handled by 20 alt2.aspmx.l.google.com.
eco-log.se mail is handled by 30 aspmx2.googlemail.com.
eco-log.se mail is handled by 30 aspmx3.googlemail.com.
eco-log.se mail is handled by 30 aspmx4.googlemail.com.
eco-log.se mail is handled by 30 aspmx5.googlemail.com.
  

Причина, по которой ecolog.se и eh-design.se работа заключается в том, что в обоих доменах настроены записи:

 $ host ecolog.se  
ecolog.se has address 213.188.129.183
$ host eh-design.se
eh-design.se has address 212.97.133.22
eh-design.se mail is handled by 10 mail4.surftown.se.
  

По стандарту вы должны использовать серверы, перечисленные в записях MX, для отправки почты и возвращаться к записям A только в том случае, если записи MX не настроены, а не наоборот.