Рубрика:
Администрирование /
Электронная почта
|
Facebook
Мой мир
Вконтакте
Одноклассники
Google+
|
АНДРЕЙ МАРКЕЛОВ
«Кто стучится в дверь ко мне…» Обзор системы поддержки списков рассылок GNU Mailman
Нет, это, конечно, не милиция (надеюсь, вы не используете знания, полученные со страниц журнала, в целях, противоречащих вашему местному законодательству). Речь пойдет об открытом программном продукте, предназначенном для создания собственных списков рассылки – Mailman (в переводе с англ. – почтальон)
Сей продукт расположился в глобальной паутине по адресу http://www.list.org. Mailman распространяется в соответствии с General Public License. Используется в своих рассылках такими маститыми IT-компаниями, как Red Hat, Apple Computer, Dell Computers и большим числом GNU-проектов, включая The XFree86 Project, Samba, Exim, XEmacs. Со списком сайтов, где используется рассматриваемый продукт, можно ознакомиться по ссылке http://www.list.org/inthenews.html.
Программа обладает обширным списком возможностей. Вот некоторые из них:
- Управление списками, подпиской и пользовательской конфигурацией через веб-интерфейс.
- Модерирование рассылок, поддержка открытых и закрытых списков рассылки, фильтров.
- Поддержка архивов списков рассылки.
- Автоответчик.
Прежде чем приступить к установке, ознакомимся с требованиями к системе, на которую ставится Mailman:
- Естественно, должен присутствовать почтовый сервис. Mailman работает с Sendmail, Postfix, Exim и qmail. На моей тестовой системе стоял Sendmail, поэтому на него и буду ориентироваться в описании.
- Веб-сервер с поддержкой CGI/1.1 API.
- GCC 2.8.1 или выше.
- Интерпретатор Python, на котором, собственно, и написана система (с небольшими кусочками кода на C). Поддерживаются версии 2.1 и выше.
Я проверял установку системы на дистрибутиве White Box Enterprise Linux 3 (http://www.whiteboxlinux.org), который является версией Red Hat Enterprise Linux 3, заново собранной из свободно доступных исходников.
В моем случае интеграция «почтальона» производилась с веб-сервером Apache. Далее в статье будет дан необходимый минимум сведений, достаточный для установки Mailman и создания своего собственного списка рассылки.
Установка
Скачиваем с сайта проекта либо с одного из зеркал архив mailman.tar.gz. Последняя версия «почтальона» на момент написания статьи была 2.1.5. Конечно, можно было бы найти и поставить Mailman из rpm-файла. Так было бы проще, но, учитывая, что не все читатели используют системы на основе менеджера пакетов rpm, рассмотрим установку из исходных текстов. Разархивируем скачанный файл в каталог /tmp.
gunzip mailman.tar.gz
tar –xvf mailman.tar
Для дальнейших действий требуются полномочия супервизора. Создаем пользователя mailman, являющегося членом группы mailman.
В дистрибутивах, основывающихся на Red Hat Linux это делается одной командой:
useradd mailman
Теперь создаем директорию, в которую будет установлен Mailman и даем на нее права:
mkdir /usr/local/mailman
chgrp mailman /usr/local/mailman
chmod a+rx,g+ws /usr/local/mailman
Далее заходим в систему как пользователь mailman или другой пользователь, которого вы предварительно включили в группу mailman. Важно, чтобы эти шаги выполнялись не от лица суперпользователя:
cd /tmp/mailman-2.1.5/
./configure --with-cgi-gid=apache --with-mail-gid=mail
make install
Теперь проверим корректность разрешений на файлы при помощи специального скрипта, входящего в пакет:
cd /usr/local/mailman
./bin/check_perms
Скрипт должен выдать сообщение о том, что проблем с правами не обнаружено.
Далее, даем команду exit, и уже под пользователем root правим httpd.conf, добавив туда строчки:
ScriptAlias /mailman/ /usr/local/mailman/cgi-bin/
Alias /pipermail/ /usr/local/mailman/archives/public
<Directory “/usr/local/mailman/archives/public/”>
AddDefaultCharset Off
</Directory>
Таким образом, мы предписываем Apache, что из указанного каталога разрешается выполнять CGI-скрипты, создаем алиас для /archives/public/ и выключаем для этого каталога кодировку «по умолчанию».
Потом копируем логотипы Mailman, Python, GNU Logo в доступное вашему веб-серверу место, и не забываем перезапустить сам веб-сервер:
cp /usr/local/mailman/icons/* /var/www/icons
service httpd restart
Создаем служебный «site-wide»-список под названием mailman:
./bin/newlist mailman
По запросу вводим mail ведущего список и пароль (на этот адрес будет выслано письмо с подтверждением и указанным паролем).
Теперь, согласно инструкциям, выданным после отработки команды, добавляем в /etc/aliases псевдонимы (в качестве примера был создан список под именем test):
test: "|/usr/local/mailman/mail/mailman post test"
test-admin: "|/usr/local/mailman/mail/mailman admin test"
test-bounces: "|/usr/local/mailman/mail/mailman bounces test"
test-confirm: "|/usr/local/mailman/mail/mailman confirm test"
test-join: "|/usr/local/mailman/mail/mailman join test"
test-leave: "|/usr/local/mailman/mail/mailman leave test"
test-owner: "|/usr/local/mailman/mail/mailman owner test"
test-request: "|/usr/local/mailman/mail/mailman request test"
test-subscribe: "|/usr/local/mailman/mail/mailman subscribe test"
test-unsubscribe: "|/usr/local/mailman/mail/mailman unsubscribe test"
Если ваш Sendmail идет с включенной по умолчанию опцией smrsh, ограничивающей исполнение скриптов через MTA (а в случае использования дистрибутивов, не базирующихся на Red Hat Linux, это именно так), то вам необходимо в каталоге /etc/smrsh/ создать симлинк на mailman:
cd /etc/smrsh/
ln –s /usr/local/mailman/mail/mailman mailman
Следующий шаг – создание списка периодически выполняемых задач при помощи crontab (например, оповещение администратора о запросах на включение пользователей в список рассылки):
cd /usr/local/mailman/cron
crontab –u mailman crontab.in
cd ..
Теперь запустим демона вручную, а на будущее добавим возможность автоматического старта после перезагрузки сервера. Команды для дистрибутивов, поддерживающих chkconfig, следующие:
./bin/mailmanctl start
cp scripts/mailman /etc/init.d/mailman
chkconfig –add mailman
Проверьте правильность выставленных значений переменных DEFAULT_EMAIL_HOST и DEFAULT_URL_HOST в файле ./Mailman/Defaults.py. Они должны содержать полное имя вашего почтового и веб-сервера.
Далее применяем шаблон сайта (его можно было предварительно отредактировать, но мы все оставим по умолчанию). Шаблон содержит практически все настройки системы, и хорошо задокументирован. При первой, тестовой установке я предлагаю его не изменять, так как с настройками можно «поиграться» и через веб-интерфейс. Так будет намного нагляднее.
./bin/config_list –I data/sitelist.cfg mailman
Теперь задаем пароль администратора сайта. Он понадобится для создания публичных списков рассылки.
./bin/mmsitepass
Если в процессе конфигурирования у вас что-то пойдет не очень гладко, рекомендую просмотреть FAQ по адресу: http://www.python.org/cgi-bin/faqw-mm.py?req=index. Также обратите внимание на логи «почтальона», ведущиеся в каталоге /usr/local/mailman/logs/, и возможные блокировки в /usr/local/mailman/loсks/.
Создаем список рассылки
Теперь у нас все готово для создания первого списка рассылки. Идем по ссылке: http://сервер.домен.ru/mailman/create, и заполняем поля: имя списка, пароль, почтовый ящик владельца, язык. В самом последнем поле вводим пароль администратора сайта, который мы задавали командой mmsitepass.
После успешного создания списка вам придет письмо с подтверждением, и будет доступна ссылка: http://сервер.домен.ru/mailman/admin/имя_списка, по которой можно вызвать интерфейс администратора. А по http://сервер.домен.ru/mailman/listinfo/имя_списка можно подписаться на список. Также по http://сервер.домен.ru /mailman/listinfo приведен общий перечень всех списков рассылки, существующих на сайте. Естественно, в нем пока присутствует только один элемент.
Протестировать новый список, предварительно подписавшись на него, можно, отправив письмо на адрес имя_списка@сервер.домен.ru.
Я не буду подробно описывать интерфейс администратора и настройки списков, поскольку все параметры снабжены вполне понятными описаниями на русском языке.
Facebook
Мой мир
Вконтакте
Одноклассники
Google+
|