Виртуальная голубятня

Константин Клягин

Хакер, номер #072, стр. 072-120-1

http://thekonst.net/

Универсальный WEB-интерфейс для почты за 10 минут

Романтическая прогулка по городскому парку может принести массу интересных наблюдений. К примеру, как голубей, еще не съеденных бомжами, откармливают булками старушки с внуками. Не всегда эти птицы рассматривались только как враги памятников, что нещадно обгаживают лысины выдающихся поэтов, музыкантов и политиков. В былые времена весьма распространенным видом связи была голубиная почта. И если лет сто назад наш журнал рассказал бы тебе, как самому построить голубятню, сегодня мы рассмотрим написание веб-мейла.

Конечно, раньше было веселее. В условиях осажденной крепости, с янычарами, гроздями висящими на стенах, за подмогой посылали птичку. Но времена меняются. Железный конь пришел на смену крестьянской лошадке, на смену телеграфу пришел интернет, который теперь есть в любой осажденной крепости или секретном бункере, и голубиной почте все чаще предпочитают е-мейл.

Подготовка

Набор юного вебмейлостроителя включает в себя в две вещи - веб-сервер Apache (или IIS) и PHP. В последнем из встроенных расширений нам понадобятся IMAP-функции, которые, несмотря на название, умеют работать и с POP3. О месте для скриптов нам придется позаботиться отдельно. Прежде всего, оно сильно зависит от конфигурации. Если речь идет о Линуксе, то в нем, скорее всего, скрипты будут запускаться из public_html/ в домашнем каталоге или глобально - из /var/www/localhost/htdocs/. Заодно с каталогом надо проверить, подходит ли нам установленный PHP. Создадим файл 1.php, состоящий из строчки

<? imap_open(); ?>

В браузере наберем http://имя.сервера/~имя.юзера/1.php или http://имя.сервера/1.php, в зависимости от выбранного каталога для скриптов. Если ответом вместо «wrong parameter count» будет «call to undefined function», придется пересобрать PHP или подключить к нему соответствующий модуль. Если пересборка PHP не помогает, то, скорее всего, используется mod_php, который тоже нужно обновить.

Что пишем?

В некотором смысле наш веб-мейл будет уникален, потому что позволит работать с любым ящиком, доступным по POP3. Машинки, на которых хостятся ящики, могут находиться где угодно. Главное, чтобы до них можно было достучаться с нашего веб-сервера. Порт pop3 (110) в сети, где находится сервер, должен быть открыт для исходящих соединений.

Скрипт будет соединяться с заданным ящиком, где бы он ни был, и вычитывать его содержимое. Основное преимущество такого подхода в том, что нам не придется заморачиваться с работой с почтовыми ящиками пользователей, их блокированием, множественным доступом и прочими напряжными вещами. За нас это сделает POP3-сервер. А SMTP-сервер займется отправкой свеженаписанных в нашем веб-мейле перлов. При желании, немного модифицировав скрипты, можно все свести к проверке только локальных POP3-адресов или же ограничить список серверов, с которыми позволяется работать. Кроме этого, poomail (так в дань памяти почтовых птиц называется наша система) будет содержать еще одну вкусность – жутко удобный интерфейс для редактирования сообщения перед отправкой в HTML-режиме. Разобьем веб-приложение на отдельные странички:

Содержание  Вперед на стр. 072-120-2
ttfb: 4.7810077667236 ms