Подключение к SMTP-серверу с помощью fsockopen от работы прокси с PHP - PullRequest
1 голос
/ 01 февраля 2011

Я пытаюсь подключиться к внешнему SMTP-серверу из-за прокси.Я понял, как позволить fsockopen получить веб-сайт из-за прокси-сервера, а не как подключиться к SMTP-серверу.SMTP-сервер требует подключения TLS и аутентификации по имени пользователя и паролю.

Для получения веб-страницы из-за прокси-сервера необходим следующий код:

<?
$proxy_fp = fsockopen('111.111.111.111', '80');

if (!$proxy_fp) {
    return false;
}

fputs($proxy_fp, "GET http://wwww.google.com HTTP/1.0\r\nHost: 111.111.111.111\r\n\r\n");
while (!feof($proxy_fp)) {
    $proxy_cont .= fread($proxy_fp, 4096);
}
fclose($proxy_fp);
$proxy_cont = substr($proxy_cont, strpos($proxy_cont, "\r\n\r\n") + 4);
return $proxy_cont;
?>

Теперь как разрешитьпрокси подключиться к SMTP серверу?


--- РЕДАКТИРОВАТЬ ---

<?
$s = "\r\n";

$proxy = '24.47.131.253';
$port = 8123;

$fp = fsockopen($proxy, $port);
socket_set_timeout($fp, 10, 0);

fputs($fp, "CONNECT smtp.domain.com:25 HTTP/1.0".$s.$s);

while(!feof($fp)){
    $line = fgets($fp, 4000);
    echo $line."\n";
}
fclose($fp);
?>

Теперь у меня есть это на основе ответов.Проблема в том, что я не получаю ответ от SMTP-сервера, он просто печатает пустые строки.Может ли кто-нибудь указать мне правильное направление?

1 Ответ

2 голосов
/ 01 февраля 2011

SMTP и HTTP не являются взаимно совместимыми протоколами; на самом деле они полностью отличаются друг от друга.

Можно попробовать использовать лазейку в методе HTTP CONNECT : вместо GET или POST отправьте CONNECT yourserver:yourport HTTP/1.0 - вы должны получить TCP-соединение с запрошенным хостом и портом ( см. для более полной справки). Обратите внимание, что некоторые прокси ограничивают разрешенный порт назначения 443 (HTTPS) или иным образом проверяют трафик CONNECT, чтобы предотвратить туннелирование людей на какую-либо службу (например, SMTP).

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

...