Назад | Перейти на главную страницу

SMTP - маршрутизация в RFC 821 и RFC 2821

RFC 821 указывает, что MAIL глагол можно дать <forward-path> аргумент формы "@ONE,@TWO:JOE@THREE" для обозначения промежуточных хостов маршрутизации (@ONE,@TWO) и конечный получатель электронного письма (JOE@THREE). См. 3.6, Ретрансляция: http://tools.ietf.org/html/rfc821

RFC 2821 диктует, что если SMTP-сервер отправляется, прямой путь @ONE,@TWO:JOE@THREE что письмо может быть направлено напрямую JOE@THREE - обход промежуточных хостов - путем поиска DNS MX на THREE. См. 3.7, Ретрансляция: http://tools.ietf.org/html/rfc2821

Я считаю, что правильно понимаю RFC 2821: поиск DNS MX просто вернет IP-адрес SMTP-сервера для домена (например, @THREE Вот). Это правильно? Однако я совершенно не понимаю, как электронная почта будет маршрутизироваться в соответствии с RFC 821. Эта спецификация была написана до того, как существовал DNS, поэтому я предполагаю, что любые имена хостов были указаны в файле hosts.txt? Как маршрутизировались электронные письма с прямым путем?

Так это вопрос истории? :-)

До появления DNS имена хостов разрешались, как вы говорите, с помощью HOSTS.TXT или вообще с помощью других средств разрешения имен хостов, доступных локально (/etc/hosts, возможно NIS, что угодно). Но это только в том случае, если конфигурация локального агента передачи почты еще не содержала явных инструкций по маршрутизации. А учитывая, что большая часть почты в то время доставлялась через UUCP, большинство агентов пересылки почты в основном работали бы на основе таких явных инструкций (запрашиваемых через "mailertable" и другие поисковые запросы в базе данных с ключом). Если бы у вас был хост UUCP с хорошим подключением, у вас была бы большая база данных маршрутизации, которая сопоставляет каждое место назначения с рассчитанным пошаговым путем через сеть UUCP (путь взрыва). Если бы вы были небольшим конечным сайтом, у вас, вероятно, был бы просто маршрут по умолчанию к восходящему хосту UUCP.

Ничто из этого не имеет ничего общего с исходными маршрутами, о которых вы спрашивали. Если бы у вас был пункт назначения JOE@THREE тогда вы бы посмотрели вверх THREE описанным мной способом (т.е., скорее всего, через вашу базу данных "mailertable"). Если бы у вас вместо этого было @ONE,@TWO:JOE@THREE тогда вы бы посмотрели вверх ONE.

Сегодня, конечно, ни один MTA в Интернете не будет уважать исходный маршрут. Если современный MTA вообще принимает синтаксис (а может и нет), он проигнорирует исходный маршрут и сразу перейдет к поиску THREE. Считается небезопасным доверять исходным маршрутам, и MTA больше не являются открытыми ретрансляторами по умолчанию.