Передача большого обьема данных от отдного скрипта другому на разных севрерах.

Bermuda

Новичок
Передача большого обьема данных от отдного скрипта другому на разных севрерах.

Есть два сервера.
1. mail.example.com -- почтовый сервер. На нем также установлен PHP, но как web-сервер он не используется. PHP - базовый набор, PEAR-а нет, рулить сервером не могу.

2. www.example.com -- web-сервер. На сервере установлен PHP, PEAR прочие примочки. Могу немного рулить своим сайтом на сервере.

Я хочу на mail.example.com положить php-скрипт который принимает письмо на stdin и передает его содержимое php-скрипту который находится на www.example.com. Скрипт на www.example.com проверяет письмо на спам, парсит его и возвращает скрипту на mail.example.com уже парсенное письмо. Скрипт на сервере mail.example.com кладет письмо в inbox почты.

Вопрос: как передать большой файл от php-скрипта на mail.example.com скрипту на www.example.com?

Я вижу несколько вариантов передачи, но они меня не сильно устраивают.
1. Serialize + GET. В этом случае может быть ограничение на длинну URL-а и большие письма не пройдут.
2. CURL + POST. CURL-а скорее всего нет на почтовом сервере. Да и скорее всего есть лимит на размер файлов при аплоаде.
3. FTP -- доступа нет.
4. PUT?

Также есть идея создать два ящик для обучения фильтра. Например [email protected] и [email protected]. При получении письма на этот ящик оно также скарливается скрипту, который передает его аналогичным образом скрипту на другом сервере и обучает фильтр.

Как вариант, можно считать, что спам-письма обычно небольшого размера, т. е. письма большого размера спамом быть не могут, а значит и проверять их незачем, но это сильное ограничение.

Подскажите решение, как передать файл 10-30 Mbyte?
 

Steamroller

Новичок
Bermuda, serialize + POST вручную через сокет делается легко довольно.
FTP - в каком смысле доступа нет? system('ftp ......') - не даст вызвать?
PUT - вообще лучше про эту гадость не вспоминать. :)

-~{}~ 05.10.05 22:00:

А вообще держать спам-фильтр на удаленной от MTA машине и передавать для сканирования на нее письма - это, мягко говоря, извращение. Лучше как-то все же найти где поставить и MTA и Apache.
 

Bermuda

Новичок
Автор оригинала: Steamroller
FTP - в каком смысле доступа нет? system('ftp ......') - не даст вызвать?
в том смысле, что на www.example.com ftp сервера просто напросто нет.

Автор оригинала: Steamroller
Bermuda, serialize + POST вручную через сокет делается легко довольно.
Хм... Я думал serialize + GET или CURL + POST, но до варианта serialize + post я не додумывался. В чем фишка-то?
На всякий пожарный, повторю еще раз исходные данные задачи

1. mail.example.com -- почтовый сервер. На нем также установлен PHP, но как web-сервер он не используется. PHP - базовый набор, PEAR-а нет, рулить сервером не могу.

2. www.example.com -- web-сервер. На сервере установлен PHP, PEAR прочие примочки. Могу немного рулить своим сайтом на сервере.


PUT - вообще лучше про эту гадость не вспоминать. :)
Аргументируй?

А вообще держать спам-фильтр на удаленной от MTA машине и передавать для сканирования на нее письма - это, мягко говоря, извращение.
Почему?

Лучше как-то все же найти где поставить и MTA и Apache.
Увы, но условия задачи я поменять не смогу.

-~{}~ 06.10.05 01:50:

Автор оригинала: Steamroller
system('ftp ......') - не даст вызвать?
Да-а-а, system('ftp ......') очень мудро :)

-~{}~ 06.10.05 02:01:

А вообще держать спам-фильтр на удаленной от MTA машине и передавать для сканирования на нее письма - это, мягко говоря, извращение.
Аргументируй. У меня дома 2 мегабита. Т. е. 5-ти мегабайтное письмо должно скачиваться примерно минуту-полторы. У провайдеров скорость куда выше, так что передача 10-30 мегабайт будет занимать несколько секунд, что вполне приемлемо для такой не слишком оперативной задачи как элетронная почта, где секунды ничего не решают. В общем, я не могу понять чем пугает удаленная машина. Где помеха, объясните.
 

Voffka

Guest
serealize + post вот самое оптимальное решение

http://phpclub.ru/detail/article/http_request
 

Tor

Новичок
что на www.example.com ftp сервера просто напросто нет
а на второй машине?

так что передача 10-30 мегабайт будет занимать несколько секунд, что вполне приемлемо для такой не слишком оперативной задачи как элетронная почта, где секунды ничего не решают
а если писем десятки в секунду?
 

Bermuda

Новичок
Автор оригинала: Tor
а на второй машине?
Ни на второй, ни на какой машинет нет ftp, не практикуется. Есть fcp или как его там.

а если писем десятки в секунду?
Это личная почта, десятков не должно быть. А даже если и десятки, то я все равно не могу узреть проблему. Что будет?
 

Tor

Новичок
А даже если и десятки, то я все равно не могу узреть проблему. Что будет?
почтовик будет ждать ответа от твоей спамобороны, что решить, что делать с письмом
образуется очередь
и в итоге он перестанет принимать новый сообщения, пока старые не будут пропущены
 

Bermuda

Новичок
Автор оригинала: Tor
почтовик будет ждать ответа от твоей спамобороны
Разве? Хм, вообще идея в том, чтобы письмо падало на stdin скрипта который потом передает его на проверку удаленному серверу. После того как письмо упало на stdin почтовик уже свободен, даже если скрипт который принял письмо все еще работает. Поправьте если ошибаюсь.
 

Bermuda

Новичок
Почтовому севреру он ничего сообщать не будет, будет просто принимать письмо, проверять его на спам и
Автор оригинала: Bermuda
Скрипт на www.example.com проверяет письмо на спам, парсит его и возвращает скрипту на mail.example.com уже парсенное письмо. Скрипт на сервере mail.example.com кладет письмо в inbox почты.
Имелось в виду, что он добавляет какой-либо X-заголовок к письму где указывается уровень спамности письма. Что уже дальше делать с письмо (убивать в оутлуке, на сервере) дело вкуса.
 

Bermuda

Новичок
Автор оригинала: hobobob
кошмар...
представьте ситуацию - мой склад в москве
О да! Твой склад в Москве... Круто!
А если пот делу?
Мне пересылка сервера на сервер не предпологает никаких затрат. Проблема в том, что регулярно ковыряться на почтоввом сервере я не могу. Я могу лишь 1 раз туда положить скрипт который скармливает письма на сторону, получает результат, сохраняет. А скрипт на удаленном сервере я могу дорабатывать столько, сколько мне будет нужно.
 

Bermuda

Новичок
Автор оригинала: Bermuda
Есть два сервера.
1. mail.example.com -- почтовый сервер. ....... рулить сервером не могу.
Я ведь не просил объяснить зачем _мне_это_нужно_, а просил подкинуть идею _как_сделать_. Делаю антиспам защиту заточенную _под_меня_

-~{}~ 06.10.05 09:42:

hobobob
Внимательно прочитай тему топика. Если есть идеи, то буду рад услышать.

-~{}~ 06.10.05 09:47:

Кстати, serialize для передачи почтового сообщения не нужен, потому как это и так одна строка. Вот если GET-ом, то его нужно urlencode().
 

Steamroller

Новичок
Автор оригинала: Bermuda

Аргументируй. У меня дома 2 мегабита. Т. е. 5-ти мегабайтное письмо должно скачиваться примерно минуту-полторы. У провайдеров скорость куда выше, так что передача 10-30 мегабайт будет занимать несколько секунд, что вполне приемлемо для такой не слишком оперативной задачи как элетронная почта, где секунды ничего не решают. В общем, я не могу понять чем пугает удаленная машина. Где помеха, объясните.
Да нету проблемы. Вариант рабочий. Но - это извращение. :)
Ни на второй, ни на какой машинет нет ftp, не практикуется. Есть fcp или как его там.
Копируй через как его там (sftp или scp скорее всего), для этого тоже есть консольный интерфейс.
 
Сверху