Определение адресов почтовых шлюзов.

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by slesh, 8 Jun 2007.

  1. slesh

    slesh Elder - Старейшина

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    Народ, вот сталкнулся с одной проблемкой:
    Вот смотрите. У меня есть к примеру 2 ящика почтовых.
    К примеру:
    1) hhhh@mail.ru
    2) hhhh@rambler.ru

    И вот я к примеру подрубился на SMTP у рамблева. авторизовался и послал письмо на ящик что на маил.ру.
    Дык рамблер принял мое письмо. потом он подключится к маил.ру и передаст ему это письмо.
    Вот вопрос: куда он подключится для передачи. по какому адресу.
    я знаю что он подрубится скорее всего на адрес: mx12.mail.ru (судя по заголовкам передаваемых в письме)
    Но у каждого сервера этот адрес разный. Каким образом он знает куда подрубатсья?
    Перебрал все RFC так и не нашел. Ведь какимто образом между серверами письма проходят без авторизации...
    Как вы поняли всё это нужно для создания спам-бота.
     
  2. Jes

    Jes Elder - Старейшина

    Joined:
    16 Apr 2007
    Messages:
    370
    Likes Received:
    391
    Reputations:
    34
    ответ: DNS...


    $ telnet someMail.xD 25

    Trying...

    Connected to someMail.xD.

    Escape character is '^]'.

    220 mail.someMail.xD ESMTP Sendmail 8.8.0/8.8.0; Wed, 5 May 1999 21:30:42

    helo I.am.user

    250 mail.someMail.xD Hello crack.spammer.com [1.1.1.1], pleased to meet you

    mail from: user@any-name.any-domain.com

    250 user@any-name.any-domain.com... Sender ok

    quit

    221 mail.someMail.xD closing connection

    Connection closed.
    //заимствованно с prohack.com

    Приведенный ниже SMTP-диалог провоцирует dns.someMail.xD на поиск информации о имени any-
    name.any-domain.com:...

    обычно(чаще всего) сами почтовые сервера называются типа smtp.mail.ru,
    pop3.mail.ru...
     
    #2 Jes, 8 Jun 2007
    Last edited: 8 Jun 2007
  3. slesh

    slesh Elder - Старейшина

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    Вот именно мне интерестно как это делать.
    просто когда подрубается на любой сервак типа smtp.mail.ru
    и пишешь ему EHLO то он в первой строке ответа отвечает типа 250-mx21.mail.ru
    НО по этим адресам невозможно подрубиться.
    Просто очень нужно знать как эта система пашет.
    Ведь письма идут бес проблем и без всяких напрягов.
     
  4. slesh

    slesh Elder - Старейшина

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    т.е. такая фишка с яндексом не катит.
    катит тока если подрубатсья на mxfront4.yandex.ru
     
  5. NetMan

    NetMan Elder - Старейшина

    Joined:
    9 Feb 2004
    Messages:
    121
    Likes Received:
    37
    Reputations:
    34
    Внимательно изучи Rfc 821...
     
  6. slesh

    slesh Elder - Старейшина

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    Мля я и так прочел и 821 и 822 и 2821 там об этом почти нет ничего
     
  7. Jes

    Jes Elder - Старейшина

    Joined:
    16 Apr 2007
    Messages:
    370
    Likes Received:
    391
    Reputations:
    34
    (способ для ленивых, он же универсальный)...если юзаешь Borland C ,Delphi...
    можно готовые (стандартные) компоненты изпользовать ( IdSTMPClient , IdDNSReslover и т п... )...там уже весь протокол практически реализован ....
     
    #7 Jes, 8 Jun 2007
    Last edited: 8 Jun 2007
  8. slesh

    slesh Elder - Старейшина

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    Мля. не вынуждайте матом крыть.
    Компоненты вообще не подходят никакие. Мне пофегу как это сделать программно, если надо, то я напишу.
    Мне нужен сам принцип работы!
     
  9. slesh

    slesh Elder - Старейшина

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    Просто как я уже понял из RFC мне нужно так называемое MX name
    Вот как его получить?
    просто у яндекса оно приметро такого вида: mxfront (1..8) причем после каждого коннекта оно меняется.
    У маил ру - mx (1..хз) и тоже меняется
    на рамблере просто mx
     
  10. А®ТеS

    А®ТеS Active Member

    Joined:
    25 Nov 2006
    Messages:
    198
    Likes Received:
    193
    Reputations:
    41
    Почитай статью в Хакере за 2005 год декабрь, называется "разводим червей", там вроде по русски и даже с сорцами (на Object Pascal'e).
     
    1 person likes this.
  11. NetMan

    NetMan Elder - Старейшина

    Joined:
    9 Feb 2004
    Messages:
    121
    Likes Received:
    37
    Reputations:
    34
    Вот вроде понятно всё написано в rfc2821:
    И вот ещё в wikipedia:
     
  12. slesh

    slesh Elder - Старейшина

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    Всем огромное спасибо за помошь.
    Итог таков. Нужно просто напросто выполнить Dns запрос к мыловскому серваку.
    Как я понял. Обычные запросы идут с параметром Ns, а мне нужно с параметром Mx.
    Или я не прав?
    Вот тока блин ниде не могу найти нормальный исходник как зделать такой запрос.
    Просто есть исходник в журнале "Нахер" за декабрь. Но он блин на диске ихнем :(
     
  13. NetMan

    NetMan Elder - Старейшина

    Joined:
    9 Feb 2004
    Messages:
    121
    Likes Received:
    37
    Reputations:
    34
    Code:
    #include    <iostream>
    #include    <winsock2.h>
    #include    <windows.h>
    #include    <windns.h> 
    #pragma  comment (lib, "dnsapi.lib")
    #pragma  comment (lib, "ws2_32.lib")
    int main()
    {
    		PDNS_RECORD ppQueryResultSet;
    		if (DnsQuery( "mail.ru", DNS_TYPE_MX, DNS_QUERY_STANDARD, NULL, &ppQueryResultSet, NULL)==ERROR_SUCCESS)
    			MessageBox(0,ppQueryResultSet->Data.MX.pNameExchange,NULL,MB_OK);
    		return 0;
    }
     
    1 person likes this.
  14. slesh

    slesh Elder - Старейшина

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    2 NetMan Спасибо +
     
  15. Azazel

    Azazel Заведующий всем

    Joined:
    17 Apr 2005
    Messages:
    918
    Likes Received:
    213
    Reputations:
    154
    По идее просто

    >nslookup
    set type=mx

    mail.ru

    mail.ru MX preference = 10, mail exchanger = mxs.mail.ru
    mxs.mail.ru internet address = 194.67.23.20

    А так, в принципе, посланное письмо с рамблера, обрабатывается почтовым сервером рамблера, который смотрит, что оно посылается на mail.ru и ищет mx-record для mail.ru на dns серверах. И находит mxs.mail.ru. Так ты получаешь письмо.

    Подробней можешь узнать прочитав про dns и внимательно просмотрев свойства письма в Outlook.
     
  16. slesh

    slesh Elder - Старейшина

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    Меня как раз и ввели в замещательства свойства письма.
    т.к. в служебных заголовках вообще левые адреса были.

    Ну а так я просто взял качнул модуль WinDNS.pas и через него сделал запросы. Работает на ура
     
  17. Azazel

    Azazel Заведующий всем

    Joined:
    17 Apr 2005
    Messages:
    918
    Likes Received:
    213
    Reputations:
    154
    Наверное да, но у таких крупных сервисов как mail.ru не один почтовый сервер, а больше, и все они имеют разный приоритет. Например 10 - высший, 20 - второй и тд. Если первый сильно занят - письмо обрабатывается вторым.
    Что-то не могу додуматься как определить остальные.
     
  18. slesh

    slesh Elder - Старейшина

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    Azazel Кстати, я вот попутно находил исходники. Там вообще DNS сервер может возвращать несколько адресов. Вот тока их нужно какимто другим методом считывать все.
     
  19. Shram-spb

    Shram-spb Member

    Joined:
    6 Jun 2007
    Messages:
    64
    Likes Received:
    42
    Reputations:
    35
    Хм.. Dns адрес получить не проблема.. а вот к какому порту коннектиться и по какому протаколу передавать?? как вообще сэмулировать, что коннектиться не пользователь, а другой почтовый сервер, например яндекс коннектиться к майл.ру.. для них существует какая-то авторизация или нет?
     
  20. slesh

    slesh Elder - Старейшина

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    2 Shram-spb коннект на почтовый шлюз идет на обычный smtp порт
    и все идет по RFC SMTP тобе без авторизации
     
    1 person likes this.