Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: fsockopen и 25-й порт
 
 автор: Андрей   (16.02.2005 в 21:02)   письмо автору
 
 

Можно ли подключиться к SMTP порту почтового сервера, используя fsockopen и регистрационные данные - логин, пароль ???

   
 
 автор: Андрей   (16.02.2005 в 21:38)   письмо автору
 
   для: Андрей   (16.02.2005 в 21:02)
 

Может я не правильно выразился...
в общем, можно ли осуществить аутентификацию SMTP средствами php???

   
 
 автор: cheops   (16.02.2005 в 22:00)   письмо автору
 
   для: Андрей   (16.02.2005 в 21:38)
 

Да можно, подробнее об этом по ссылке

http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=84

   
 
 автор: Андрей   (16.02.2005 в 22:12)   письмо автору
 
   для: cheops   (16.02.2005 в 22:00)
 

Не могу подсоединиться к серверу. Возникает ошибка.
13 (Permission denied)

   
 
 автор: cheops   (16.02.2005 в 22:20)   письмо автору
 
   для: Андрей   (16.02.2005 в 22:12)
 

"Недостаточно прав" - почтовые ретрансляторы сейчас закрывают, чтобы через них спам не отсылали - тут ничего не поделаешь - отправка писем через почтовый ретранслятор без ведома его владельцев достаточно скользкое занятие...

http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=201

   
 
 автор: Андрей   (16.02.2005 в 22:29)   письмо автору
 
   для: cheops   (16.02.2005 в 22:20)
 

Да уж... Я это уже понял. Вчера прикрыли.

Вот я и пытаюсь спросить вас - а можно ли подсоединиться к ретранслятору , указав логин и пароль - точно также как это делает, например, TheBat?

А то у меня провайдер вчера отключил возможность подключаться к 25 порту, а функция mail почему-то доставляет письма только в пределах моего доменного имени... А, например, до яндекса, письма идут несколько часов, а то и вовсе не доходят...

   
 
 автор: urmach   (01.10.2005 в 12:49)   письмо автору
 
   для: Андрей   (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). Получаем:&lt;914199955.4081276@mailc.rambler.ru&gt;<br>
Затем нас выручит следующая функция:</p>
<p>function hmac($key, $data, $hash = 'md5', $blocksize = 64) {<br>
if (strlen($key)&gt;$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 - это тот самый &lt;914199955.4081276@mailc.rambler.ru&gt;</p>
<p>Далее снова шифруем: base64_encode(&quot;$login $keys&quot;);<br>
Где $login - наш логин на сервере.<br>
ПОлучаем строку: dXJtYWNoIDdlYjcxMTYwMDMwY2Q0N2E2MTl jZDU3YmNhOTRmODI1 - это
и есть наш ответ Чемберлену.<br>
Отослав ее серверу, мы получим ответ: 235 2.0.0 OK Authenticated </p>

   
 
 автор: urmach   (01.10.2005 в 13:11)   письмо автору
 
   для: Андрей   (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

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования