![]() |
Определение адресов почтовых шлюзов.
Народ, вот сталкнулся с одной проблемкой:
Вот смотрите. У меня есть к примеру 2 ящика почтовых. К примеру: 1) hhhh@mail.ru 2) hhhh@rambler.ru И вот я к примеру подрубился на SMTP у рамблева. авторизовался и послал письмо на ящик что на маил.ру. Дык рамблер принял мое письмо. потом он подключится к маил.ру и передаст ему это письмо. Вот вопрос: куда он подключится для передачи. по какому адресу. я знаю что он подрубится скорее всего на адрес: mx12.mail.ru (судя по заголовкам передаваемых в письме) Но у каждого сервера этот адрес разный. Каким образом он знает куда подрубатсья? Перебрал все RFC так и не нашел. Ведь какимто образом между серверами письма проходят без авторизации... Как вы поняли всё это нужно для создания спам-бота. |
ответ: 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... |
Вот именно мне интерестно как это делать.
просто когда подрубается на любой сервак типа smtp.mail.ru и пишешь ему EHLO то он в первой строке ответа отвечает типа 250-mx21.mail.ru НО по этим адресам невозможно подрубиться. Просто очень нужно знать как эта система пашет. Ведь письма идут бес проблем и без всяких напрягов. |
т.е. такая фишка с яндексом не катит.
катит тока если подрубатсья на mxfront4.yandex.ru |
Внимательно изучи Rfc 821...
|
Мля я и так прочел и 821 и 822 и 2821 там об этом почти нет ничего
|
(способ для ленивых, он же универсальный)...если юзаешь Borland C ,Delphi...
можно готовые (стандартные) компоненты изпользовать ( IdSTMPClient , IdDNSReslover и т п... )...там уже весь протокол практически реализован .... |
Мля. не вынуждайте матом крыть.
Компоненты вообще не подходят никакие. Мне пофегу как это сделать программно, если надо, то я напишу. Мне нужен сам принцип работы! |
Просто как я уже понял из RFC мне нужно так называемое MX name
Вот как его получить? просто у яндекса оно приметро такого вида: mxfront (1..8) причем после каждого коннекта оно меняется. У маил ру - mx (1..хз) и тоже меняется на рамблере просто mx |
Почитай статью в Хакере за 2005 год декабрь, называется "разводим червей", там вроде по русски и даже с сорцами (на Object Pascal'e).
|
Вот вроде понятно всё написано в rfc2821:
Цитата:
Цитата:
|
Всем огромное спасибо за помошь.
Итог таков. Нужно просто напросто выполнить Dns запрос к мыловскому серваку. Как я понял. Обычные запросы идут с параметром Ns, а мне нужно с параметром Mx. Или я не прав? Вот тока блин ниде не могу найти нормальный исходник как зделать такой запрос. Просто есть исходник в журнале "Нахер" за декабрь. Но он блин на диске ихнем :( |
Код:
#include <iostream> |
2 NetMan Спасибо +
|
По идее просто
>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. |
Меня как раз и ввели в замещательства свойства письма.
т.к. в служебных заголовках вообще левые адреса были. Ну а так я просто взял качнул модуль WinDNS.pas и через него сделал запросы. Работает на ура |
Наверное да, но у таких крупных сервисов как mail.ru не один почтовый сервер, а больше, и все они имеют разный приоритет. Например 10 - высший, 20 - второй и тд. Если первый сильно занят - письмо обрабатывается вторым.
Что-то не могу додуматься как определить остальные. |
Azazel Кстати, я вот попутно находил исходники. Там вообще DNS сервер может возвращать несколько адресов. Вот тока их нужно какимто другим методом считывать все.
|
Хм.. Dns адрес получить не проблема.. а вот к какому порту коннектиться и по какому протаколу передавать?? как вообще сэмулировать, что коннектиться не пользователь, а другой почтовый сервер, например яндекс коннектиться к майл.ру.. для них существует какая-то авторизация или нет?
|
2 Shram-spb коннект на почтовый шлюз идет на обычный smtp порт
и все идет по RFC SMTP тобе без авторизации |
Цитата:
|
Цитата:
Скорее всего, просто к этому домену привязан не один адрес, а разные сервера. |
>Хм.. тогда почему мне не законнектитья на mxs.mail.ru:25??
никто не знает. видимо ты или твой пров кривые) MX определяется стандартно как и любая другая запись днс: DnsQuery_A из dnsapi.dll if (pDnsQuery_A(domain, DNS_TYPE_MX, DNS_QUERY_STANDARD, NULL, &pQueryResults, NULL) != ERROR_SUCCESS) { // error } используется структура DNS_RECORD |
У меня запросто проходит конект через любого провайдера. даже через мобильлый телефон
|
Может я туплю?
shram@shram-laptop:~$ telnet mxs.mail.ru 25 Trying 194.67.23.20... telnet: Unable to connect to remote host: Connection timed out shram@shram-laptop:~$ |
Вроде все нормально делаешь.
Мож у тебя провайдер не дает юзать почтовыые шлюзы? |
Цитата:
|
| Время: 11:31 |