Вот какой вопрос меня очень интересует: как осуществляется передача сообщений между серверами? Поясню, что я имею ввиду. Пусть у меня есть адрес qwe@yandex.ru. Кроме того есть сильное желание написать письмо на asd@mail.ru. Как происходит этот процесс. Насчет того, как писмо попадает на яндекс, вопросов не возникает. Все описано прекрасно в rfc и обсуждено тысячу раз. А что же происходит с сообщением дальше, вот в чем загвоздка. Как сервер яндекса его доставляет? Можно было бы предположить, что он стучится к smtp-серверу мэйла. Но это предположение не кажется правдоподобным по нескольким причинам. 1) mail.ru достать из строки адреса несложно, но вот беда: адрес smtp-сервера smtp.mail.ru. А ведь может быть и другим. Как его определить, неясно. 2) Даже если бы этот сервер был найден, возникли бы проблемы с авторизацией. Не может же быть логинов на каждый известный мэйл-сервер. Да и отправить почту все равно не получится - требуется совпадение логина с мылом отправителя. Возможно вопрос глупый. В таком случае, прошу дать на него глупый ответ. Например "rfc####", где #### какой-нибудь номер.
iterater 1) Почитай ещё раз rfc и обрати внимание на MX. 2) Доставка письма от сервера к серверу и мне не ясна, но я не изучал этот вопрос.
не поверите, но доставка писем с сервера на сервер чаще всего идет через SMTP т.е. объясняю, есть сервер, который обслуживает домен xxx.com и есть который обслуживает yyy.com вы - клиент xxx.com, посылаете через него письмо на yyy.com, каким способом, не так важно, далее уже сам smtp сервер xxx.com ломится на MX yyy.com, говорит, я такой-то такой-то, у меня есть письмо для zzz@yyy.com, и yyy.com его принимает. также рекомендую почитать RFC2487.
Перечитываю... А вот зачем все это хочется использовать. Ведь, если я правильно понимаю, в итоге получается, что smtp-сервер яндекса может доставить почту без авторизации до мэйла напрямую (для того примера, который я описал). И, по идее, так может поступить любой smtp-сервер. Так вот, если работать от лица такого сервера, можно отправлять письма без авторизации. Правда надо подключаться к целевому серверу. Но все таки это было бы интересно.
Итак, разобрался я со своим вопросом. Спасибо, что ткнули в нужное направление (MX). В итоге получается вот что. Из DNS MX получаем адрес MX-сервера (что я, собственно, и пропустил в rfc). Например такие: mxs.mail.ru mx2.yandex.ru Коннектимся к ним и отправляем почту. Как я и предполагал, без авторизации Код (Text): C:\>telnet mxs.mail.ru 25 220 Mail.Ru ESMTP EHLO test.ru 250-mx25.mail.ru ready to serve 250-SIZE 10485760 250 8BITMIME MAIL FROM:<x@yandex.ru> 250 OK RCPT TO:<target@mail.ru> 250 OK DATA 354 Go ahead Test data for mail body. . 250 OK id=1GjH0v-000FxV-00 QUIT 221 mx25.mail.ru closing connection или так Код (Text): C:\>telnet mx2.yandex.ru 25 220 mxfront7.yandex.ru ZMailer Server 2.99.57.pre3 #1 ESMTP ready at Sun, 12 Nov 2006 17:59:56 +0300 EHLO test.ru 250-mxfront7.yandex.ru Hello test.ru 250-SIZE 0 250-8BITMIME 250-PIPELINING 250-CHUNKING 250-ENHANCEDSTATUSCODES 250-DSN 250-X-RCPTLIMIT 10000 250-ETRN 250 HELP MAIL FROM:<x@mail.ru> 250 2.1.0 Sender syntax Ok; RCPT TO:<target@yandex.ru> 250 2.1.5 Recipient address syntax Ok; rcpt=<target@yandex.ru> DATA 354 Start mail input; end with <CRLF>.<CRLF> Test data for mail body. . 250 2.0.0 accepted; S1360420AbWKLPFn QUIT 221 2.0.0 mxfront7.yandex.ru Out И, кстати, в процессе проверки выясняется интересная вещь. Если в MAIL FROM написать, например, x@test.ru. Сервер в отправлении отказывает. Понятно почему. Обратный днс запрос не катит на это имя. Но вот что интересно ругаются мэйл и яндекс по-разному. Яндекс сразу после MAIL FROM говорит о некорректности днс запроса по этому имени. А мэйл только после DATA утверждает что "503 valid RCPT command must precede DATA", что по идее вообще бессмыслица. И еще одна вещь. Это лечится путем указания в качестве исходного мыла любого существующего сервера (это только предположение, которое может оказаться несостоятельным), что не может не удивлять, так как обратный днс-запрос по mail.ru или yandex.ru выдаст отнюдь не мой ip. В итоге получаем то чего хотели: пересылка почты без авторизации. Всем спасибо.
Да нет, он так и говорит: перед даными должен идти корректный адресат. Просто он проверяет его после принятия данных. Зависит от реализации сервера. Лучше указывать сервер, имеющий МХ-запись.
Это то понятно. Вот только, во-первых, он на предыдущие две команды ответил 250 OK (и на MAIL и на RCPT), а во-вторых, ругаться то надо на MAIL, а не на RCPT. Любой, в смысле любой мэйл-сервер. По идее они все должны быть с MX-записями, хотя не факт. Так что ты сказал правильнее.
вы открыли для себя что-то новое? спамеры об этом знали и активно использовали лет 10 назад. а теперь дополнительные условия: 1. SMTP разрешен только до своего релэя, который использует авторизацию 2. есть проверка обратной зоны 3. есть проверка клиентского сертификата 4. есть DUL
kyprizel Да, я открыл для себя кое-что новое. Новое, поскольку спамом не занимался. Ни сейчас, ни 10 лет назад. А за дополнения спасибо.
Ну, по поводу 1 - просто коннектиться на smtp адресата. 2 - как было сказано, отправляем с реальным mx-сервером. Адресата-то точно не проверят, VRFY не поддерживает никто. 3 и 4 - насколько оно распространено?