|
|
|
| Можно ли подключиться к SMTP порту почтового сервера, используя fsockopen и регистрационные данные - логин, пароль ??? | |
|
|
|
|
|
|
|
для: Андрей
(16.02.2005 в 21:02)
| | Может я не правильно выразился...
в общем, можно ли осуществить аутентификацию SMTP средствами php??? | |
|
|
|
|
|
|
|
|
для: cheops
(16.02.2005 в 22:00)
| | Не могу подсоединиться к серверу. Возникает ошибка.
13 (Permission denied) | |
|
|
|
|
|
|
|
для: Андрей
(16.02.2005 в 22:12)
| | "Недостаточно прав" - почтовые ретрансляторы сейчас закрывают, чтобы через них спам не отсылали - тут ничего не поделаешь - отправка писем через почтовый ретранслятор без ведома его владельцев достаточно скользкое занятие...
http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=201 | |
|
|
|
|
|
|
|
для: cheops
(16.02.2005 в 22:20)
| | Да уж... Я это уже понял. Вчера прикрыли.
Вот я и пытаюсь спросить вас - а можно ли подсоединиться к ретранслятору , указав логин и пароль - точно также как это делает, например, TheBat?
А то у меня провайдер вчера отключил возможность подключаться к 25 порту, а функция mail почему-то доставляет письма только в пределах моего доменного имени... А, например, до яндекса, письма идут несколько часов, а то и вовсе не доходят... | |
|
|
|
|
|
|
|
для: Андрей
(16.02.2005 в 21:02)
| | <p>Как пройти аутентификацию на SMTP-сервере посредством CRAM-MD5.</p>
<p>Для начала убеждаемся, что этот метод поддерживается:</p>
<p>З - Наш запрос, О - Ответ сервера:<br>
-<br>
220 mailc.rambler.ru ESMTP Sendmail 8.12.10/8.12.10; Sat, 1 Oct 2005 12:18:01
+0400 (MSD) <br>
250-mailc.rambler.ru Hello mx.learnware.ru [83.171.70.202], pleased to meet
you <br>
-</p>
<p>З:EHLO somebody.ru<br>
О:250-ENHANCEDSTATUSCODES <br>
О:250-PIPELINING <br>
O:250-8BITMIME <br>
O:250-SIZE 4194304 <br>
O:250-DSN <br>
O:250-AUTH PLAIN LOGIN DIGEST-MD5 CRAM-MD5 <br>
O:250-DELIVERBY <br>
O:250 HELP<br>
<br>
В данном случае нас интересует строка 250-AUTH, как мы видим, данный метод поддерживается
(CRAM-MD5 присутствует в списке)<br>
<br>
З:AUTH CRAM-MD5 (даем серверу знать, что мы планируем авторизироваться, используя
этот метод)<br>
O:334 PDkxNDE5OTk1NS40MDgxMjc2QG1haWxjLnJ hbWJsZXIucnU+</p>
<p>Присмотритесь к полученной строке. Обрезаем четыре символа слева (код ответа
и пробел) и выполняем<br>
base64_decode($string). Получаем:<914199955.4081276@mailc.rambler.ru><br>
Затем нас выручит следующая функция:</p>
<p>function hmac($key, $data, $hash = 'md5', $blocksize = 64) {<br>
if (strlen($key)>$blocksize) {<br>
$key = pack('H*', $hash($key));<br>
}<br>
$key = str_pad($key, $blocksize, chr(0));<br>
$ipad = str_repeat(chr(0x36), $blocksize);<br>
$opad = str_repeat(chr(0x5c), $blocksize);<br>
return $hash(($key^$opad) . pack('H*', $hash(($key^$ipad) . $data)));<br>
}</p>
<p>$keys= hmac($pass, $our_string,'md5', 64);</p>
<p>Где, $pass - это наш пароль на этом сервере, <br>
$our_ string - это тот самый <914199955.4081276@mailc.rambler.ru></p>
<p>Далее снова шифруем: base64_encode("$login $keys");<br>
Где $login - наш логин на сервере.<br>
ПОлучаем строку: dXJtYWNoIDdlYjcxMTYwMDMwY2Q0N2E2MTl jZDU3YmNhOTRmODI1 - это
и есть наш ответ Чемберлену.<br>
Отослав ее серверу, мы получим ответ: 235 2.0.0 OK Authenticated </p> | |
|
|
|
|
|
|
|
для: Андрей
(16.02.2005 в 21:02)
| | Как пройти аутентификацию на SMTP-сервере посредством CRAM-MD5.
Для начала убеждаемся, что этот метод поддерживается:
З - Наш запрос, О - Ответ сервера:
-----
220 mailc.rambler.ru ESMTP Sendmail 8.12.10/8.12.10; Sat, 1 Oct 2005 12:18:01
+0400 (MSD)
250-mailc.rambler.ru Hello mx.learnware.ru [83.171.70.202], pleased to meet
you
-----
З:EHLO somebody.ru
О:250-ENHANCEDSTATUSCODES
О:250-PIPELINING
O:250-8BITMIME
O:250-SIZE 4194304
O:250-DSN
O:250-AUTH PLAIN LOGIN DIGEST-MD5 CRAM-MD5
O:250-DELIVERBY
O:250 HELP
В данном случае нас интересует строка 250-AUTH, как мы видим, данный метод поддерживается
(CRAM-MD5 присутствует в списке)
З:AUTH CRAM-MD5 (даем серверу знать, что мы планируем авторизироваться, используя
этот метод)
O:334 PDkxNDE5OTk1NS40MDgxMjc2QG1haWxjLnJ hbWJsZXIucnU+
Присмотритесь к последней полученной строке. Обрезаем четыре символа слева (код ответа
и пробел) и выполняем
base64_decode($string). Получаем:<914199955.4081276@mailc.rambler.ru>
Затем нас выручит следующая функция:
function hmac($key, $data, $hash = 'md5', $blocksize = 64) {
if (strlen($key)>$blocksize) {
$key = pack('H*', $hash($key));
}
$key = str_pad($key, $blocksize, chr(0));
$ipad = str_repeat(chr(0x36), $blocksize);
$opad = str_repeat(chr(0x5c), $blocksize);
return $hash(($key^$opad) . pack('H*', $hash(($key^$ipad) . $data)));
}
Выполняем $keys= hmac($pass, $our_string,'md5', 64);
Где, $pass - это наш пароль на этом сервере,
$our_ string - это тот самый <914199955.4081276@mailc.rambler.ru>
Далее снова шифруем: base64_encode("$login $keys");
Где $login - наш логин на сервере.
ПОлучаем строку: dXJtYWNoIDdlYjcxMTYwMDMwY2Q0N2E2MTl jZDU3YmNhOTRmODI1 - это
и есть наш ответ Чемберлену.
Отослав ее серверу, мы получим ответ: 235 2.0.0 OK Authenticated | |
|
|
|