Шаг 1 - Небольшое введение

Сразу предупреждаю, я не претендую на непогрешимость, могу и ошибиться в чем-то, а это значит, что я поставляю эту информацию по принципу "as is", так что никакие претензии приниматься не будут.

Пару раз я на эту тему в конфах задавал вопросы по поводу формата, но ответа так и не удостоился. Видимо, вопрос слишком простой для тамошних "слонов", "ламерский" - как они выражаются, чтобы с ним возиться. Либо сами "слоны" не знают таких мелких подробностей. Я думаю, что второй вариант более вероятен.

Взяться за эту тему я решил по собственной инициативе, а дело было так: понадобилось мне написать почтового сервера (что и делаю в настоящее время), ну, с протоколами POP3 и SMTP по документам "RFC" я более или менее разобрался и уже первый этап прошагал - написал POP3 часть, да. Хорошо получилось, даже приятно самому. Далее принялся за вторую часть - SMTP, и все бы ничего, но по замыслу означенный сервер должен передавать сообщения по имеющемуся адресу. И тут начинается самое интересное. (Если кто протокол SMTP знает, то следующую часть он может смело пропустить)

Коротко о DNS. Как всем известно, когда почтовый клиент (Аутглюк к примеру или Юдора) отсылает почту, то на дальние расстояния отсылает он ее не сам, а вовсе даже почтовый сервер (или вашего провидера или сторонний, типа пресловутого 'Mail.ru'), а ваш любимый клиент только "спуливает" (от слова 'spool') означенную почту означенному серверу для последующей передачи вашему адресату. А уж этот сервер должен исхитриться и перебросить почту провайдеру вашего адресата, и как он это будет делать, никого не волнует. Да, оговорюсь, что я исследую случай при работе на Win-машине, потому, что с нормальными машинами дело может обстоять несколько иначе, но ненамного.

Так что перед сервером стоит задача любыми путями получить IP адрес того хоста, на котором в качестве пользователя фигурирует адресат, поскольку SMTP протокол предполагает передачу по системе PPP или 'point-to-point protocol' и сервер должен соединиться напрямую с необходимым хостом. Это самый простейший случай.

В этом случае если хост отсутствует в списках сервера, сервер использует для получения адреса хоста сервер службы имен, или DNS (Domain Name System) сервер. Вот мы и добрались до темы нашего разговора.

Серверы службы имен, как все вы знаете, содержат приличную базу данных по именам и IP адресам, и, для получения того или другого нужно, составить запрос и получить ответ (Query и Response соответственно), и сконнектиться с ближайшим известным DNS сервером (как правило это DNS сервер провидера) по 53 порту. А кое-что интересное по сервисам-портам любой желающий может узнать из файла 'Services' в своем Win-каталоге.

На этом общая вступительная часть и заканчивается.


Следующий Шаг | Оглавление
Автор Alex Zzlex.