Взаимодействие между почтовыми серверами

Тема в разделе "WASM.NETWORKS", создана пользователем iterater, 12 ноя 2006.

  1. iterater

    iterater New Member

    Публикаций:
    0
    Регистрация:
    12 ноя 2006
    Сообщения:
    8
    Вот какой вопрос меня очень интересует: как осуществляется передача сообщений между серверами? Поясню, что я имею ввиду. Пусть у меня есть адрес qwe@yandex.ru. Кроме того есть сильное желание написать письмо на asd@mail.ru. Как происходит этот процесс. Насчет того, как писмо попадает на яндекс, вопросов не возникает. Все описано прекрасно в rfc и обсуждено тысячу раз. А что же происходит с сообщением дальше, вот в чем загвоздка. Как сервер яндекса его доставляет? Можно было бы предположить, что он стучится к smtp-серверу мэйла. Но это предположение не кажется правдоподобным по нескольким причинам. 1) mail.ru достать из строки адреса несложно, но вот беда: адрес smtp-сервера smtp.mail.ru. А ведь может быть и другим. Как его определить, неясно. 2) Даже если бы этот сервер был найден, возникли бы проблемы с авторизацией. Не может же быть логинов на каждый известный мэйл-сервер. Да и отправить почту все равно не получится - требуется совпадение логина с мылом отправителя.
    Возможно вопрос глупый. В таком случае, прошу дать на него глупый ответ. Например "rfc####", где #### какой-нибудь номер. ;)
     
  2. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    iterater
    1) Почитай ещё раз rfc и обрати внимание на MX.
    2) Доставка письма от сервера к серверу и мне не ясна, но я не изучал этот вопрос.
     
  3. kyprizel

    kyprizel New Member

    Публикаций:
    0
    Регистрация:
    1 авг 2003
    Сообщения:
    232
    Адрес:
    TSK
    не поверите, но доставка писем с сервера на сервер чаще всего идет через SMTP :)
    т.е. объясняю, есть сервер, который обслуживает домен xxx.com и есть который обслуживает yyy.com
    вы - клиент xxx.com, посылаете через него письмо на yyy.com, каким способом, не так важно,
    далее уже сам smtp сервер xxx.com ломится на MX yyy.com, говорит, я такой-то такой-то,
    у меня есть письмо для zzz@yyy.com, и yyy.com его принимает. также рекомендую почитать RFC2487.
     
  4. iterater

    iterater New Member

    Публикаций:
    0
    Регистрация:
    12 ноя 2006
    Сообщения:
    8
    Перечитываю... :)

    А вот зачем все это хочется использовать. Ведь, если я правильно понимаю, в итоге получается, что smtp-сервер яндекса может доставить почту без авторизации до мэйла напрямую (для того примера, который я описал). И, по идее, так может поступить любой smtp-сервер. Так вот, если работать от лица такого сервера, можно отправлять письма без авторизации. Правда надо подключаться к целевому серверу. Но все таки это было бы интересно. :)
     
  5. iterater

    iterater New Member

    Публикаций:
    0
    Регистрация:
    12 ноя 2006
    Сообщения:
    8
    Итак, разобрался я со своим вопросом. Спасибо, что ткнули в нужное направление (MX). :)
    В итоге получается вот что. Из DNS MX получаем адрес MX-сервера (что я, собственно, и пропустил в rfc). Например такие:
    mxs.mail.ru
    mx2.yandex.ru
    Коннектимся к ним и отправляем почту. Как я и предполагал, без авторизации :)
    Код (Text):
    1. C:\>telnet mxs.mail.ru 25
    2. 220 Mail.Ru ESMTP
    3. EHLO test.ru
    4. 250-mx25.mail.ru ready to serve
    5. 250-SIZE 10485760
    6. 250 8BITMIME
    7. MAIL FROM:<x@yandex.ru>
    8. 250 OK
    9. RCPT TO:<target@mail.ru>
    10. 250 OK
    11. DATA
    12. 354 Go ahead
    13. Test data for mail body.
    14. .
    15. 250 OK id=1GjH0v-000FxV-00
    16. QUIT
    17. 221 mx25.mail.ru closing connection
    или так
    Код (Text):
    1. C:\>telnet mx2.yandex.ru 25
    2. 220 mxfront7.yandex.ru ZMailer Server 2.99.57.pre3 #1 ESMTP ready at Sun, 12 Nov 2006 17:59:56 +0300
    3. EHLO test.ru
    4. 250-mxfront7.yandex.ru Hello test.ru
    5. 250-SIZE 0
    6. 250-8BITMIME
    7. 250-PIPELINING
    8. 250-CHUNKING
    9. 250-ENHANCEDSTATUSCODES
    10. 250-DSN
    11. 250-X-RCPTLIMIT 10000
    12. 250-ETRN
    13. 250 HELP
    14. MAIL FROM:<x@mail.ru>
    15. 250 2.1.0 Sender syntax Ok;
    16. RCPT TO:<target@yandex.ru>
    17. 250 2.1.5 Recipient address syntax Ok; rcpt=<target@yandex.ru>
    18. DATA
    19. 354 Start mail input; end with <CRLF>.<CRLF>
    20. Test data for mail body.
    21. .
    22. 250 2.0.0 accepted; S1360420AbWKLPFn
    23. QUIT
    24. 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. ;)
    В итоге получаем то чего хотели: пересылка почты без авторизации. Всем спасибо. :)
     
  6. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    Да нет, он так и говорит: перед даными должен идти корректный адресат. Просто он проверяет его после принятия данных.

    Зависит от реализации сервера. Лучше указывать сервер, имеющий МХ-запись.
     
  7. iterater

    iterater New Member

    Публикаций:
    0
    Регистрация:
    12 ноя 2006
    Сообщения:
    8
    Это то понятно. Вот только, во-первых, он на предыдущие две команды ответил 250 OK (и на MAIL и на RCPT), а во-вторых, ругаться то надо на MAIL, а не на RCPT. :)
    Любой, в смысле любой мэйл-сервер. По идее они все должны быть с MX-записями, хотя не факт. Так что ты сказал правильнее. :)
     
  8. kyprizel

    kyprizel New Member

    Публикаций:
    0
    Регистрация:
    1 авг 2003
    Сообщения:
    232
    Адрес:
    TSK
    вы открыли для себя что-то новое? спамеры об этом знали и активно использовали лет 10 назад.
    а теперь дополнительные условия:
    1. SMTP разрешен только до своего релэя, который использует авторизацию
    2. есть проверка обратной зоны
    3. есть проверка клиентского сертификата
    4. есть DUL
     
  9. iterater

    iterater New Member

    Публикаций:
    0
    Регистрация:
    12 ноя 2006
    Сообщения:
    8
    kyprizel
    Да, я открыл для себя кое-что новое. Новое, поскольку спамом не занимался. Ни сейчас, ни 10 лет назад.
    А за дополнения спасибо.
     
  10. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    Ну, по поводу 1 - просто коннектиться на smtp адресата.
    2 - как было сказано, отправляем с реальным mx-сервером. Адресата-то точно не проверят, VRFY не поддерживает никто.

    3 и 4 - насколько оно распространено?
     
  11. kyprizel

    kyprizel New Member

    Публикаций:
    0
    Регистрация:
    1 авг 2003
    Сообщения:
    232
    Адрес:
    TSK
    IceStudent, 3 не часто
    4, на всех крупных почтовых сервисах