Модераторы: Aliance, skyboy, MoLeX, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Exim и сокеты, Помогите нам с ексимом понять друг друга 
:(
    Опции темы
fankiss
  Дата 20.8.2008, 17:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 22.4.2007

Репутация: нет
Всего: нет



Нужно написать клас для отсылки писем, для Exim.
Помогите нам с Exim'ом понять друг друга посредством сокетов.
Раньше с hMailServer дела имел (года 2 как самописный клас юзал). А у Exim'а оказывается система авторизации другая.
Нашел http://www.exim.org/lurker/message/2004090...3123677.en.html , но не легче от этого мне. Всеравно не работает... Скорее всего я уже конечно туплю, ибо зациклился на проблеме, 9 час сижу без результата - smile 

Всеравно кто-то уже решал такую задачу, поделитесь кодом. Пажааалста smile

Это сообщение отредактировал(а) fankiss - 20.8.2008, 17:19
PM MAIL   Вверх
fankiss
Дата 21.8.2008, 15:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 22.4.2007

Репутация: нет
Всего: нет



Может быть у меня значимый пробел в знаниях smtp smile Мой класс:
Код

<?php
class smtp{

function smtp($_host, $_user = '', $_pass = ''){
if(empty($_host)){ echo '<b>F-CMS</b> -> Class SMTP - smtp - Ошибка: Один из параметров пуст или отсутствует. '; }
$this -> _host = $_host;
$this -> _user = $_user;
$this -> _pass = $_pass;
$this -> _headers = '';
}

function assign_vars($_from = '', $_from_name = '', $_to = '', $_sub = ''){
$this -> _from = $_from;
$this -> _from_name = $_from_name;
$this -> _to = $_to;
$this -> _sub = $_sub;


function assign_msg($_msg = ''){
$this -> _msg = $_msg;
}

function server_parse($socket, $response, $step) {
$server_response = '';
while (substr($server_response, 3, 1) != ' ') 
{
if (!($server_response = fgets($socket, 256))) 

die('<b>F-CMS</b> -> Class SMTP - Ошибка: Couldn' . "'" . 't get mail server response codes. Line - ' . $step);


if (!(substr($server_response, 0, 3) == $response)) 

die('<b>F-CMS</b> -> Class SMTP - Ошибка: Ran into problems sending Mail. Response: ' . $server_response . ' Step - ' . $step);
}
}

function send(){
if(!$socket = @fsockopen($this -> _host, 25, $errno, $errstr, 60))
{
die('<b>F-CMS</b> -> Class SMTP - Ошибка: Could not connect to smtp host : ' . $errno . ' : ' . $errstr);
}
$this -> server_parse($socket, "220", __LINE__);
if(!empty($this -> _user) && !empty($this -> _pass)){ 
fputs($socket, "EHLO " . $this -> _host . "\r\n");
$this -> server_parse($socket, "250", __LINE__);

fputs($socket, "AUTH LOGIN\r\n");
$this -> server_parse($socket, "334", __LINE__);

fputs($socket, base64_encode($this -> _user) . "\r\n");
$this -> server_parse($socket, "334", __LINE__);

fputs($socket, base64_encode($this -> _pass) . "\r\n");
$this -> server_parse($socket, "235", __LINE__);
}else{
fputs($socket, "HELO " . $this -> _host . "\r\n");
$this -> server_parse($socket, "250", __LINE__);
}
fputs($socket, "MAIL FROM: <" . $this -> _from . ">\r\n");
$this -> server_parse($socket, "250", __LINE__);

fputs($socket, "RCPT TO: <" . $this -> _to . ">\r\n");
$this -> server_parse($socket, "250", __LINE__);

fputs($socket, "DATA\r\n");
$this -> server_parse($socket, "354", __LINE__);

fputs($socket, "Subject: " . $this -> _sub . "\r\n");
fputs($socket, "From: " . $this -> _from_name . " <" . $this -> _from . ">\r\n");
fputs($socket, "To: " . $this -> _to . " <" . $this -> _to . ">\r\n\r\n");
fputs($socket, $this -> _msg . "\r\n");
fputs($socket, ".\r\n");
$this -> server_parse($socket, "250", __LINE__);
fputs($socket, "QUIT\r\n");
fclose($socket);
}

}
?>


hMailServer нормально отправляет письмо, а Ексим изрыгает ошибку на строке
fputs($socket, "AUTH LOGIN\r\n");
$this -> server_parse($socket, "334", __LINE__);
Вывод - F-CMS -> Class SMTP - Ошибка: Ran into problems sending Mail. Response: 500 5.5.1 Command unrecognized Step - 49
Я мог бы конечно грешить на настройки сервера (smtp), но ведь происходит это все на hoster.ru, и уже в течение 3 дней. Сам я с Ексимом дело не имел со стороны админа. В суппорте послали на http://www.exim.org/lurker/message/2004090...3123677.en.html , но мне это не о чем не говорит, может я и туп, наставьте на путь истинный.

Может обитает тут у кого ексим под фрей? Проверьте класс если не сложно. Только после проверки - версию ексима в студию

PM MAIL   Вверх
bilbobagginz
Дата 21.8.2008, 16:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Naughtius Maximus
****


Профиль
Группа: Экс. модератор
Сообщений: 8813
Регистрация: 2.3.2004
Где: Israel

Репутация: нет
Всего: 317



оставь php. подключись к серверу вручную:
telnet server 25
и после начинай слать то, что ты пытаешься послать программно.

Добавлено через 2 минуты и 25 секунд
я думаю проблема у тебя в том, что ты неправильно обрабатываешь результат команды ehlo hostname.
один из наших серверов выдаёт такой результат:
Код

250-mailer.domain.com
250-PIPELINING
250-SIZE 30480000
250-VRFY
250-ETRN
250-STARTTLS
250-AUTH PLAIN LOGIN
250-AUTH=PLAIN LOGIN
250 8BITMIME






--------------------
Я ещё не демон. Я только учусь.
PM WWW   Вверх
fankiss
Дата 21.8.2008, 17:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 22.4.2007

Репутация: нет
Всего: нет



2 bilbobagginz : Да нет, все верно, см функцию server_parse() - вычитывает все до строки с заданными 3 символами и пробелом после них. Три первых символа в этом случае "250":

fputs($socket, "EHLO " . $this -> _host . "\r\n");
$this -> server_parse($socket, "250", __LINE__);

Прителнетиться тоже сейчас проблема, я сижу за http proxy smile Можно конечно сгонять куда-нибудь, где PPPoE или VPN сервис есть... smile

Добавлено через 5 минут и 45 секунд
ф-я server_parse кстати по образу и подобию той что в phpBB2.0.22 написанна... А точнее стыренна и подредактированна. smile Так что врядли проблема в этом. Может у пследних версий Ексима между EHLO и AUTH всетаки что-то еще должно быть?
PM MAIL   Вверх
fankiss
Дата 22.8.2008, 15:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 22.4.2007

Репутация: нет
Всего: нет



"Наш администратор порекомендовал Вам коннектиться через host mail.hoster.ru." smile 
Я ж привык что у меня 1 хост на все случаи, увидел в dns mx на mailх.hoster.ru, туда и стал ломиться.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Сеть | Следующая тема »


 




[ Время генерации скрипта: 0.0696 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.