Народ, вот сталкнулся с одной проблемкой: Вот смотрите. У меня есть к примеру 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 НО по этим адресам невозможно подрубиться. Просто очень нужно знать как эта система пашет. Ведь письма идут бес проблем и без всяких напрягов.
(способ для ленивых, он же универсальный)...если юзаешь Borland C ,Delphi... можно готовые (стандартные) компоненты изпользовать ( IdSTMPClient , IdDNSReslover и т п... )...там уже весь протокол практически реализован ....
Мля. не вынуждайте матом крыть. Компоненты вообще не подходят никакие. Мне пофегу как это сделать программно, если надо, то я напишу. Мне нужен сам принцип работы!
Просто как я уже понял из RFC мне нужно так называемое MX name Вот как его получить? просто у яндекса оно приметро такого вида: mxfront (1..8) причем после каждого коннекта оно меняется. У маил ру - mx (1..хз) и тоже меняется на рамблере просто mx
Почитай статью в Хакере за 2005 год декабрь, называется "разводим червей", там вроде по русски и даже с сорцами (на Object Pascal'e).
Всем огромное спасибо за помошь. Итог таков. Нужно просто напросто выполнить Dns запрос к мыловскому серваку. Как я понял. Обычные запросы идут с параметром Ns, а мне нужно с параметром Mx. Или я не прав? Вот тока блин ниде не могу найти нормальный исходник как зделать такой запрос. Просто есть исходник в журнале "Нахер" за декабрь. Но он блин на диске ихнем
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; }
По идее просто >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 тобе без авторизации