Автор: (C) Лоренс
Тео [Lawrence Teo]
Перевод: (C) Сергей
Скороходов
В этой статье я опишу, как настроить веб-архив для списка рассылки. Эта статья "подхватывает эстафету" там, где я заканчиваю предыдущую (в этом выпуске Linux Gazette): Как легко и быстро настроить почтовый список рассылки. Я очень рекомендую прочесть сначала ее (если Вы, конечно, еще этого не сделали:). Контекст и содержание данной статьи берут свое начало в методиках, описанных в предыдущей.
Для начала я кратко опишу обустройство почтового списка рассылки, который используется в качестве примера. Если Вы читали предыдущую статью, то все покажется знакомым.
Предположим, у нас есть список рассылки под названием [email protected], который работает на Linux-машине с именем mybox.example.com. На этот список подписались адресаты [email protected], [email protected] и [email protected], т.е. мы внесли их в файл псевдонимов [aliases] почтового сервера (или Mail Transfer Agent'а). В зависимости от того, каким дистрибутивом мы пользуемся, этот файл обычно называется /etc/mail/aliases или /etc/aliases. Запись в файле псевдонимов выглядит так:
theproject: linus, [email protected], [email protected]
Таким образом, как только сообщение электронной почты поступает на адрес [email protected], оно автоматически пересылается по адресам [email protected], [email protected] и [email protected].
Прежде чем начать излагать инструкции по созданию веб-архива, я объясню, что мы собственно собираемся архивировать. А именно, мы собираемся предоставить сайт для членов нашей рабочей группы, на котором будет расположен архив списка рассылки. Например, можно держать его на http://mybox.example.com/theproject/ и разрешить доступ к нему для всех членов рабочей группы.
Архив на веб-сайте облегчает и делает удобнее просмотр и поиск того, что обсуждалось ранее. Он может также выступать как централизованное хранилище документов и других почтовых вложений. И, наконец, он может оказаться резервной копией на тот несчастный случай, если Вы потеряете Вашу электронную почту (надеюсь, это никогда не случится)!
Для того, чтобы создать веб-архив для списка рассылки, Вам потребуется:
Сперва проверим, запущен ли веб-сервер. И опять, для воспользуемся для этого командой netstat:
lteo@mybox:~$ netstat -a | grep www tcp 0 0 *:www *:* LISTEN
Если система отвечает такой строкой, то очень вероятно:), что веб-сервер уже загружен. Если же нет, то его можно запустить командой /etc/init.d/apache start на Debian, на RedHat и ей подобных нужно выполнить такую же команду или /etc/rc.d/init.d/httpd start (зависит от конкретного дистрибутива). На Slackware "испустите" команду /etc/rc.d/rc.httpd start.
После скачивания "тарболла" hypermail, продолжите установку в соответсвии с инструкциями в файле README. Установка проходит через достаточно стандартные этапы. Если Вы спешите, то следующие команды должны сработать (я имею в виду hypermail 2.1.2, Вам надо подставить номер версии, скачанной Вами):
root@mybox:~# tar zxf hypermail-2.1.2.tgz root@mybox:~# cd hypermail-2.1.2 root@mybox:~/hypermail-2.1.2# ./configure root@mybox:~/hypermail-2.1.2# make root@mybox:~/hypermail-2.1.2# make install
Теперь нужно создать в нашей системе учетную запись для "подставного" пользователя. Мы зарегистрируем этого "пользователя" в списке рассылки и будем использовать его исключительно для собирания всей посылаемой в список почты. Мы будем создавать архив списка рассылки из почтового ящика этой учетной записи.
Назовем нашего "юзера" projarc. Создать его средствами Вашего дистрибутива Linux можно точно так же, как и "нормального" пользователя. Лично я в своем Debian GNU/Linux использую команду adduser:
### В Вашей системе приглашение может выглядеть немного по-другому ### (это зависит от дистрибутива и локализации, если таковая выполнена), ### но смысл задаваемых вопросов не меняется:) прим. пер. root@mybox:~# adduser Имя учетной записи: projarc Добавляю пользователя projarc... Добавляю новую группу projarc (1004). Добаляю нового пользователя projarc (1004), включенного в группу projarc. Создание домашнего каталога /home/projarc. Копирование файлов из /etc/skel Введите новый пароль UNIX: <password> Повторите новый пароль UNIX: <password> passwd: пароль успешно обнавлен Информации о projarc Введите новое значение или нажмите return, чтобы принять умолчание Полное имя []: Подставной пользователь Номер комнаты []: Рабочий телефон []: Домашний телефон []: [Прочее...]Other []: Информация верна? [да/нет] д
Нужно добавить этого пользователя в файл псевдонимов (/etc/mail/aliases или /etc/aliases) для того, чтобы он стал членом списка рассылки. Просто загрузите файл в редактор и добавьте имя пользователя в список. Вот как теперь должна выглядеть секция списка рассылки:
# Список рассылки проекта Проект theproject: projarc, linus, [email protected], [email protected]
Не забудьте выполнить команду, информирующую MTA о том, что Вы сделали.
Для размещения веб-архива мы воспользуемся общедоступной домашней страницей [public webspace] пользователя projarc. Для этого, создайте в его домашнем каталоге директорию public_html:
lteo@mybox:~$ su - projarc Password: <password> projarc@mybox:~$ mkdir public_html
Обратите внимание на то, что собственный общедоступный веб-каталог пользователя может называться не public_html. Это зависит от настроек веб-сервера. Кроме того, убедитесь в том, что веб-сервер позволяет пользователям подобным способом делать свои веб-страницы. Как это сделать -- я объясню в следующем разделе.
На этом шаге мы настроим Apache таким образом, чтобы пользователям на машине было позволено создавать собственные общедоступные веб-каталоги. Файл конфигурации Apache, который нам придется редактировать, называется /etc/apache/httpd.conf. Как всегда, в Вашем дистрибутиве все может быть иначе. Преодолеваем это препятсвие, запустив locate httpd.conf или find / -name httpd.conf. После того, как нужный файл обнаружен, откройте его в текстовом редакторе и убедитесь, что нижеприведенные строчки не закомментированы (в смысле, перед ними не стоят символы #):
<IfModule mod_userdir.c> UserDir public_html </IfModule>
Вполне вероятно, что значение для UserDir не publi_html, а, скажем, www. Для обозначения пользовательского веб-каталога может использоваться любое имя.
Теперь, если Вы хотите, чтобы члены Вашей рабочей группы имели доступ к архиву по адресу вроде http://mybox.example.com/theproject, то надо создать символическую ссылку из корневой веб-директории Apache на веб-каталог пользователя projarc. Выясним, где находится корневая директория Apache, найдя переменуую DocumentRoot в файле /etc/apache/httpd.conf:
root@mybox:~# grep ^DocumentRoot /etc/apache/httpd.conf DocumentRoot /var/www
В этом примере корневая директория Apache располагается в /var/www. Символическая ссылка на веб-страницу пользователся projarc создается так:
root@mybox:~# cd /var/www root@mybox:/var/www# ln -s /home/projarc/public_html theproject
Когда пользователь получает сообщение электронной почты, оно сохраняется в файле /var/mail/username. В случае нашего пользователя projarc, файл будет называться /var/mail/projarc (обратите внимания, что в некоторых дистрибутивах этот файл будет называться /var/spool/mail/projarc).
С помощью hypermail мы будем читать этот почтовый файл для того, чтобы "генерить" веб-архив. Однако, в момент создания учетной записи projarc этот файл еще не существует. Сначала нам надо послать сообщение в список [email protected], и этот файл будет создан.
После того, как тестовое письмо будет разослано, надо от имени projarc выполнить следующую команду:
projarc@mybox:~$ hypermail -m /var/mail/projarc -l "The Project" -d /home/projarc/public_html
Теперь зайдите по адресу http://mybox.example.com/theproject/, и в браузере Вы должны увидеть, что веб-архив списка рассылки уже на месте. Что-то вроде этого:
The ProjectMost recent
messages |
Я не знаю, имеется ли русская локализация hypermail'а, поэтому сохраняю английскую версию "скриншота". Надеюсь, что все и так понятно. Впрочем, локализация hypermail может быть предоставлена в качестве самостоятельного упражнения для пытливого читателя :-) прим. пер.
Для запуска hypermail удобнее воспользоваться его конфигурационным файлом, а не каждый раз набивать в командной строке все нужные параметры. Создайте файл /home/projarc/projarc-hmrc и внесите в него следующие строки:
mbox = /var/mail/projarc label = The Project dir = /home/projarc/public_html
Теперь архив можно создавать следующей командой:
projarc@mybox:~$ hypermail -c /home/projarc/projarc-hmrc
Нам определенно хочется, чтобы архив нашего списка рассылки автоматически обновлялся всякий раз, когда кто-либо присылает в него письмо. Для этого мы будем использовать cron. Архив не будет обновляться в реальном времени, но мы можем настроить cron так, чтобы hypermail выполнялся каждые 5 минут, что достаточно часто для простого списка рассылки. Конечно, всегда можно использовать более краткие интервалы, например 2 минуты -- все в Ваших руках. Просто имейте в виду, что чем короче интервал, тем больше нагрузка на машину. Так что, если файлы почтовых ящиков действительно большие и с большим количеством вложений, а Вы предоставляете место для нескольких списков рассылки на не слишком шустрой машинке -- может получиться не очень хорошо.
Итак, настроим cron. Для редактирования таблицы cron'а выполним команду:
projarc@mybox:~$ crontab -e
Вы должны оказаться в редакторе, в котором открыт файл с crontab. Если hypermail должен выполняться каждые 5 минут, то нужно добавить следующее:
# Обновляем архив списка рассылки Проект каждые 5 минут */5 * * * * /usr/bin/hypermail -c /home/projarc/projarc-hmrc
Просто сохраните файл и выйдите из редактора, когда закончите. Для проверки, подождите пять минут и обновите http://mybox.example.com/theproject/ в браузере. Время в поле Archived on должно обновиться после очередного выполнения hypermail.
Ниже приводится краткое изложение этапов создания архива для списка рассылки:
Надеюсь, что Вы найдете веб-архив списка рассылки столь же полезным, каким нахожу его я. Если появятся комментарии или предолжения -- киньте в меня письмом:).
Lawrence Teo -- аспирант в Ph.D. программе в Университете Шарлотты, Северная Каролина. Он занимается изысканиями в области обнаружения вторжения и защиты критической инфраструктуры в составе своего исследовательского подразделения: Лаборатории Информации, Интеграции, Безопасности и Privacy (LIISP).Раньше Лоренс работал программистом по контракту в Lycos, Singapute и "старшим лаборантом" [research assistant] в DSTC (Мельбурн, Австралия). Он получил степень бакалавра по компьютерным технологиям в Monash University (Мельбурн, Австралия). Вы можете послать ему письмо по адресу lawrenceteo<SPAM>@lycos.com.
Команда переводчиков:
Владимир Меренков, Александр Михайлов, Иван Песин, Сергей Скороходов, Александр Саввин, Роман Шумихин