Создание веб-архива для списка рассылки

Автор: (C) Лоренс Тео [Lawrence Teo]
Перевод: (C) Сергей Скороходов


1. Введение

В этой статье я опишу, как настроить веб-архив для списка рассылки. Эта статья "подхватывает эстафету" там, где я заканчиваю предыдущую (в этом выпуске Linux Gazette): Как легко и быстро настроить почтовый список рассылки. Я очень рекомендую прочесть сначала ее (если Вы, конечно, еще этого не сделали:). Контекст и содержание данной статьи берут свое начало в методиках, описанных в предыдущей.

1.1 Настройка списка рассылки

Для начала я кратко опишу обустройство почтового списка рассылки, который используется в качестве примера. Если Вы читали предыдущую статью, то все покажется знакомым.

Предположим, у нас есть список рассылки под названием [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].

2. Создание веб-архива

Прежде чем начать излагать инструкции по созданию веб-архива, я объясню, что мы собственно собираемся архивировать. А именно, мы собираемся предоставить сайт для членов нашей рабочей группы, на котором будет расположен архив списка рассылки. Например, можно держать его на 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.

2.1 Установка hypermail

После скачивания "тарболла" 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

2.2 Создание специальной учетной записи пользователя

Теперь нужно создать в нашей системе учетную запись для "подставного" пользователя. Мы зарегистрируем этого "пользователя" в списке рассылки и будем использовать его исключительно для собирания всей посылаемой в список почты. Мы будем создавать архив списка рассылки из почтового ящика этой учетной записи.

Назовем нашего "юзера" 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. Это зависит от настроек веб-сервера. Кроме того, убедитесь в том, что веб-сервер позволяет пользователям подобным способом делать свои веб-страницы. Как это сделать -- я объясню в следующем разделе.

2.3 Настройка Apache

На этом шаге мы настроим 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

2.4 Проверка работы hypermail

Когда пользователь получает сообщение электронной почты, оно сохраняется в файле /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 Project
By Thread

Most recent messages
1 messages sorted by: [ author ] [ date ] [ subject ] [ attachment ]

Starting: Sat Oct 20 2001 - 01:45:23 EDT
Ending: Sat Oct 20 2001 - 01:45:23 EDT

  • This is the first message Lawrence Teo (Sat Oct 20 2001 - 01:45:23 EDT)

Last message date: Sat Oct 20 2001 - 01:45:23 EDT
Archived on: Sun Oct 21 2001 - 01:50:56 EDT


1 messages sorted by: [ author ] [ date ] [ subject ] [ attachment ]

 

Я не знаю, имеется ли русская локализация 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

2.5 Настройка cron'а

Нам определенно хочется, чтобы архив нашего списка рассылки автоматически обновлялся всякий раз, когда кто-либо присылает в него письмо. Для этого мы будем использовать 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.

2.6 Резюме

Ниже приводится краткое изложение этапов создания архива для списка рассылки:

  1. Убедитесь в том, что веб-сервер Apache запущен. Для этого воспользуйтесь командой netstat -a | grep www.
  2. Установите hypermail.
  3. Создайте "подставную" учетную запись (например projarc) для пользователя, от лица которого будет создаваться архив рассылки.
  4. Добавьте этого подставного пользователя в файл псевдонимов (/etc/aliases или /etc/mail/aliases). Выполните команду newaliases (если у Вас установлен sendmail) или postalias /etc/aliases (для Postfix), чтобы MTA узнал о сделаных изменениях. Для exim никаких команд выполнять не надо.
  5. Создайте для пользователя projarc общедоступную веб-директорию, например так: mkdir public_html (обычно, вновь созданный каталог в домашней директории получает права доступа drwxr-x---. Apache же часто выполняется от пользователя типа nobody и не может читать соответствующую директорию. Результатом будет Error 403:( В этом случае нужно изменить права на drwxr-xr-x или установите группу, к которой принадлежит Apache. прим. пер.).
  6. В настройках Apache (в файле /etc/apache/httpd.conf) разрешите создание общедоступных веб-ресурсов пользователей.
  7. Создайте символическую ссылку, указывающую на веб-страницу пользователя projarc (например так: ln -s /home/projarc/public_html theproject).
  8. Проверьте работу hypermail, выполнив команду hypermail -m /var/mail/projarc -l "The Project" -d /home/projarc/public_html. Затем проверьте на месте ли веб-архив http://mybox.example.com/theproject/.
  9. Настройте cron таким образом, чтобы hypermail выполнялся каждые 5 пять минут (или через любой другой интервал по Вашему усмотрению).

Надеюсь, что Вы найдете веб-архив списка рассылки столь же полезным, каким нахожу его я. Если появятся комментарии или предолжения -- киньте в меня письмом:).


Lawrence Teo

Lawrence Teo -- аспирант в Ph.D. программе в Университете Шарлотты, Северная Каролина. Он занимается изысканиями в области обнаружения вторжения и защиты критической инфраструктуры в составе своего исследовательского подразделения: Лаборатории Информации, Интеграции, Безопасности и Privacy (LIISP).Раньше Лоренс работал программистом по контракту в Lycos, Singapute и "старшим лаборантом" [research assistant] в DSTC (Мельбурн, Австралия). Он получил степень бакалавра по компьютерным технологиям в Monash University (Мельбурн, Австралия). Вы можете послать ему письмо по адресу lawrenceteo<SPAM>@lycos.com.


Copyright (C) 2001, Lawrence Teo.
Copying license http://www.linuxgazette.com/copying.html
Published in Issue 72 of Linux Gazette, November 2001

Команда переводчиков:

Владимир Меренков, Александр Михайлов, Иван Песин, Сергей Скороходов, Александр Саввин, Роман Шумихин