Как создать почтовый сервер?

Я хотел бы иметь сервер, который может получать электронные письма. Затем я хочу использовать PHP для программирования того, как электронные письма отображаются пользователям. Могу ли я сделать это исключительно с помощью PHP? Я имею в виду, что отправлять электронные письма с PHP не проблема, но я не знаю, могу ли я получать электронные письма с помощью PHP? (В некотором смысле PHP получает POST-запросы).


ДОБАВЛЕНО

В ответ на первый ответ хочу уточнить, что похоже мне нужен SMTP-сервер. Я хочу иметь возможность программно связываться с SMTP-сервером. Например, я хочу иметь возможность «сказать» SMTP-серверу создать новый адрес электронной почты. Мне также нужно знать, где хранятся входящие электронные письма и в каком формате. Например, как я могу извлечь «отправитель», «копия», «скрытая копия» из файла, соответствующего полученной почте.


person Roman    schedule 23.02.2011    source источник
comment
Вообще говоря, PHP не будет отвечать за прямую обработку запроса POST. Веб-сервер (например, Apache) получит запрос POST, затем выполнит программу PHP и передаст ей данные из запроса через стандартный ввод и среду.   -  person Quentin    schedule 23.02.2011


Ответы (2)


хотел бы иметь сервер, способный получать электронную почту.

Если вы пишете его с нуля, вам понадобится спецификация для SMTP. Я бы очень сильно советовал против этого. Серверы SMTP сложно написать, и существует несколько действительно хороших решений с открытым исходным кодом.

Я понимаю PHP так, что он очень плохо справляется с многопоточностью, поэтому, вероятно, это не очень хорошее решение для этой проблемы.

Чем я хочу использовать PHP для программирования того, как письма отображаются пользователям.

Серверы, которые получают почту, обычно не показывают ее пользователям. Обычно они хранят их стандартным способом (например, Maildir или mbox), к которому обращается другое программное обеспечение (например, локальный почтовый клиент или сервер IMAP).

Работа по показу электронной почты пользователю принадлежит почтовым клиентам. Программное обеспечение веб-почты на основе PHP включает SquirrelMail и RoundCube. Насколько я знаю, они оба действуют как клиенты IMAP. См. спецификацию IMAP.

В ответ на первый ответ я хотел бы уточнить, что, похоже, мне нужны SMTP-серверы. Я хочу иметь возможность программно связываться с SMTP-сервером. Например, я хочу иметь возможность «сказать» SMTP-серверу создать новый адрес электронной почты.

Выберите SMTP-сервер, который работает на вашей ОС. Прочтите инструкции, чтобы узнать, как настроить доставку и принимаемые адреса. Обычно это сводится к манипулированию текстовыми файлами.

Мне также нужно знать, где хранятся входящие письма и в каком формате. Например, как я могу извлечь «отправитель», «копия», «скрытая копия» из файла, соответствующего полученной почте.

Очередной раз. См. руководство для почтового сервера. Большинство предоставит вам варианты о том, где хранить данные и в каком формате.

Затем вам просто нужно решить, собираетесь ли вы заставить PHP копаться в них напрямую или использовать промежуточный сервер IMAP.

person Quentin    schedule 23.02.2011

Нет, это не просто возможно. PHP создан для http-протокола (без сохранения состояния), а почта отправляется в диалоге, который состоит из различных запросов и ответов.

Можно анализировать и обрабатывать почту с помощью PHP, но я бы рекомендовал установить почтовый ящик, который вы можете читать с PHP по протоколу POP3. Затем ваше PHP-приложение может отображать и обрабатывать почту из этого почтового ящика.

person GolezTrol    schedule 23.02.2011