Наши партнеры

UnixForum






Книги по Linux (с отзывами читателей)

Библиотека сайта rus-linux.net

На главную -> MyLDP -> Тематический каталог -> Серверные службы Linux

Задействуем GNU Mailman дома

Оригинал: Running GNU Mailman at home
Автор: David A. Harding
Дата: 28 февраля 2008
Перевод: Александр Тарасов aka oioki
Дата перевода: 8 марта 2008

GNU Mailman - одна из самых популярных свободных программ по управлению списками рассылки; и, возможно, самая гибкая. Тем не менее, для его использования требуется подключенный к интернету компьютер с запущенными на нем веб- и почтовым серверами. Совсем немного терпения - и вы сможете использовать Mailman в своих целях прямо на своем домашнем компьютере.

Введение

Обычно Mailman работает так, как показано на рисунке 1. Почтовый сервер принимает почту, отсылает ее к Mailman на обработку, потом забирает ее назад от Mailman и отправляет ее конечным адресатам. Адаптированный для домашнего компьютера Mailman выглядит как на рисунке 2. Здесь добавлено три дополнительных шага: почта перенаправляется на другой почтовый ящик, хранится там и скачивается с ящика перед передачей к домашнему почтовому серверу. Эта схема легко реализуется, что и будет описано в этой статье.


Рисунок 1: Обычный режим работы Mailman


Рисунок 2: Адаптированный вариант Mailman

Как выбрать правильный почтовый ящик

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

Ваш выбор почтового ящика ограничен лишь вот чем: в нашей схеме получение писем будет происходить с помощью неинтерактивной программы Fetchmail. Она поддерживает два протокола: Post Office Protocol (POP) и Internet Message Access Protocol (IMAP). Так что у вашего почтового ящика должна быть возможность передачи почты по протоколу POP или IMAP. К счастью, подавляющее большинство провайдеров, а также Google Mail поддерживает как минимум один из этих протоколов.

Если у вас уже есть почтовый ящик, например, для личных нужд, не нужно его задействовать для своего списка рассылки; это лишь усложнит жизнь. Лучше создайте новый почтовый ящик, специально для нашего дела.

Получение адреса перенаправления

Теперь нужно выбрать имя для своего списка рассылки. Рекомендую короткое осмысленное название. Например, в этой статье Джейн Доу создала список рассылки doe для общения со своей семьей.

Для каждого списка рассылки Mailman требует три почтовых адреса. Все адреса должны находиться в одном и том же домене и именоваться по определенному формату: list@domain, list-request@domain и list-owner@domain. Замените list на название вашего списка рассылки, и domain на имя вашего домена. Джейн Доу в нашем примере - это пользователь, владеющий доменом example.com; она использует три почтовых адреса - doe@example.com, doe-request@example.com и doe-owner@example.com.

Все три адреса должны быть перенаправляемыми - т.е. все должны перенаправляться на почтовый ящик, указанный на предыдущем шаге. В нашем примере, владелец домена позволяет перенаправлять эти адреса. Если владелец вашего домена не позволяет перенаправлять адреса, можно воспользоваться бесплатными службами перенаправлениями (поищите в Google) либо платными аналогами, к примеру тем, что предоставляет Free Software Foundation.

Настройка почтового сервера

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

Такой почтовый сервер, как Sendmail, является свободным, но его чрезвычайно сложно сконфигурировать. Поэтому были созданы более простые почтовые серверы. Но пытаясь быть похожими на Sendmail по функциональности, они также становились сложными в конфигурировании. Итак, на данный момент сообщество свободного ПО предлагает на выбор несколько мощных и сложных почтовых серверов, и ни один из них не является стандартом.

В дистрибутивах GNU/Linux наиболее распространены сервера Sendmail, Postfix и Exim. Здесь я вкратце расскажу об основных настройках Mailman при использовании Postfix. Если это не ваш случай, тогда придется почитать документацию.

Почтовые сервера выполняют две функции: прием и отправка электронной почты. В давние времена отправка почты была проста: любой почтовый сервер мог взаимодействовать с другим почтовым сервером. Однако появление Microsoft Windows все усложнило. Из-за известных проблем со слабой безопасностью, теперь миллионы компьютеров управляются злоумышленниками и используются для рассылки спама. Поэтому многие почтовые сервера отклоняют почту с компьютеров частных пользователей, а принимают почту лишь с известных компьютеров. К примеру, ваш провайдер может принимать почту лишь от своих клиентов - покупателей части своего канала.

Наверняка у вашего провайдера есть почтовый сервер и вам разрешено его использовать. Настройте свой почтовый сервер на использование сервера провайдера, который будет передавать вашу почту дальше. Наверно, придется обратиться к веб-сайту провайдера и поискать там сведения об исходящей почте. Если увидите слово SMTP, значит где-то рядом должно быть имя хоста, что-то наподобие smtp.isp.net - это и будет доменное имя почтового сервера. Далее рассмотрим, как сконфигурировать ваш локальный сервер на взаимодействие с сервером провайдера.

В Postfix необходимо добавить в файл /etc/postfix/main.cf следующую строку:

relayhost = 207.126.122.88

Помните, что почтовые сервера часто нуждаются в перезагрузке. Если у вас Postfix, его можно перезапустить командой

killall -HUP postfix

или

postfix reload

После указания сервера провайдера, проверьте работу схемы с помощью команды:

echo "To: you@isp.net" | /usr/lib/sendmail -t
/usr/lib/sendmail - это наследство времени, оставшееся с тех пор, когда Sendmail был единственным почтовым сервером; в большинстве дистрибутивов GNU/Linux он работает со всеми установленными почтовыми серверами. В команде следует заменить you@isp.net на ваш почтовый адрес.

Если почта придет на ваш адрес, значит вы все правильно сделали. Если же нет, проблему нужно найти и устранить. Рекомендую начать с просмотра почтовых логов (обычно это /var/log/maillog).

Настроить почтовый сервер на прием почты с указанного адреса достаточно легко, так как многие почтовые сервера уже предварительно настроены на прием. Проверьте механизм приема путем добавления строчки в файл /etc/aliases:

testing123: you@isp.net

Если у вас Postfix, не забудьте отдать команду newaliases после редактирования /etc/aliases. Для проверки смените you@isp.net на ваш адрес и отдайте следующую команду:

echo "To: testing123" | /usr/lib/sendmail -t

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

Получение почты

Теперь, когда вы можете отправлять и принимать отдельные письма, необходимо научиться обрабатывать почту, которую потом будем отправлять в список рассылки. Программа Fetchmail создает соединение между вашим ящиком и вашим почтовым сервером. Она загружает почту с вашего ящика и отдает ее вашему серверу так, как будто бы она пришла напрямую на ваш сервер.

Но Fetchmail еще нужно настроить. Ему необходимо знать адрес POP- или IMAP-сервера, на котором хранится ваша почта, ему также потребуется ваш логин и пароль. Узнать адрес сервера провайдера можно узнать, естественно, у провайдера. Ищите сведения по загрузке почты, а более конкретно имя хоста, на котором работает POP- или IMAP-сервер.

Fetchmail должен запускаться периодически через какие-то интервалы времени. Если вы ставили Fetchmail на дистрибутивы Debian, Ubuntu или производные от них, то нужно настраивать файл /etc/default/fetchmail (см. ниже), после чего запустить Fetchmail, отдав команду /etc/init.d/fetchmail start. Пользователям других дистрибутивов придется разбираться в документации Fetchmail. Часто периодический запуск реализуется программой cron.

К примеру, у Джейн Доу стоит Debian. Тогда настройка Fetchmail производится добавлением следующих строк в файл /etc/fetchmailrc:

poll mail.isp.net with proto POP3
  user 'jane' there with password 'secret1' 
  to 
      'doe@example.com'='doe' 
      'doe-request@example.com'='doe-request' 
      'doe-owner@example.com'='doe-owner' 
      '*'='jane' 
  here options fetchall
Воспользуйтесь следующей таблицей для адаптации этого конфигурационного файла под себя:
Настройки Джейн Заменить на
mail.isp.netИмя почтового сервера
POP3Пишите IMAP, если у вас IMAP-сервер
janeИмя пользователя на этом сервере
secret1Соответственно, пароль
doe@example.comАдрес списка рассылки и первый адрес перенаправления
doeЛокальный вариант этого адреса
doe-request@example.comВторой адрес перенаправления
doe-requestЛокальный вариант второго адреса
doe-owner@example.comТретий адрес перенаправления
doe-ownerЕго локальный вариант
janeВаше имя пользователя на локальной машине

Fetchmail разделяет почту в вашем ящике на четыре части: входящая в список рассылки почта (к примеру, doe), исходящая к Mailman (doe-request), исходящая к администратору списка рассылки (doe-owner) и все остальное (jane).

Проверьте работу Fetchmail, добавив следующие три строки в файл /etc/aliases и скомандовав newaliases. Замените listname на имя вашего списка рассылки, а you@isp.net на ваш адрес ящика на сервере провайдера.

listname: you@isp.net
listname-request: you@isp.net
listname-owner: you@isp.net

Запустите обычный почтовый клиент типа Mozilla Thunderbird. Попробуйте отослать по одному письму по каждому из трех адресов перенаправления: на doe@example.com, doe-request@example.com и doe-owner@example.com. Если все три письма придут обратно, значит Fetchmail настроен правильно; иначе опять же смотрим логи /var/logs/mail.log. Но помните, что по умолчанию Fetchmail загружает письма раз в 5 минут, так что придется подождать.

Если проверка удалась, удалите три строки, добавленные в /etc/aliases и скомандуйте еще раз newaliases.

Установка веб-сервера

Основной интерфейс Mailman представляется в HTML-виде. Это требует наличия веб-сервера. Поэтому нужно установить на локальной машине Apache (версии 1.X или 2.X). Проверить работу сервера можно, открыв адрес http://localhost/ с помощью вашего любимого браузера.

Если перед вами откроется страница, содержащая информацию об Apache, или надпись "It's works!" - значит, установка прошла успешно и Mailman сможет воспользоваться услугами вашего локального веб-сервера.

Установка и настройка Mailman

Установите Mailman с помощью менеджера пакетов вашей ОС (как альтернативный вариант, можно скачать исходные тексты с list.org и проследовать инструкциям, содержащимся в файле admin/www/mailman-install.pdf в архиве с исходниками).

Установив Mailman, создайте новый список рассылки, отдав команду newlist от имени root и следуйте инструкциям. Обратите внимание, что возможно придется писать полный путь к скрипту newlist, в Debian и Ubuntu он таков: /usr/lib/mailman/bin/newlist.

Mailman добавляет определенные строки в файл /etc/aliases так, что вся почта, идущая на три адреса перенаправления, будет приходить к Mailman; после этого Mailman рассматривает каждое письмо на наличие инструкций и выполняет их. Обычно под этим подразумевается отправка писем; для этого Mailman использует ваш почтовый сервер. Конечно, можно добавить эти строки в /etc/aliases самостоятельно.

Можно настраивать Mailman с помощью веб-браузера, для этого зайдите по адресу http://localhost/cgi-bin/mailman/admin.

Теперь требуется изменить одну настройку Mailman: переменная host_name должна содержать имя хоста для ваших адресов перенаправления (все, что следует после знака @ в ваших адресах перенаправления; в случае Джейн Доу - это example.com).

Проверка списка рассылки

Проверять работу списка рассылки следует не через веб-форму, а путем отправки определенным образом сформированного письма. Для подписки на список рассылки нужно отправить что-то наподобие:

From: jane@janes-isp.net
To: doe-request@example.com
Subject: subscribe

The body of the message will be disregarded by Mailman.

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

From: jane@janes-isp.net
To: doe@example.com
Subject: Проверка

Проверяю список рассылки моей семьи.

-Джейн

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

Вещайте на всех

Джейн Доу создала свой список рассылки для общения со своей семьей. Она вручную добавила адреса своих членов семьи через административный веб-интерфейс Mailman. Но Джейн не уверена, хотят ли получать письма из списка рассылки ее дальние родственники, поэтому она написала им такое письмо:

Если хотите присоединиться к нашему списку рассылки, отправьте письмо по адресу doe-request@example.com и укажите тему subscribe. Если что - спрашивайте.

Чтобы люди присоединялись к вашему списку рассылки, помещайте этот текст, адаптированный для вашего случая, в письма или на своем веб-сайте. По умолчанию Mailman позволяет любому присоединиться к списку рассылки, но можно отключить это в административной панели Mailman, изменив настройку subscribe_policy на странице Privacy Options page.

После настройки одного списка рассылки в Mailman, добавление других будет происходить легко: создайте еще три адреса перенаправления, указывающих на тот же почтовый ящик, допишите три соответствующих правила в файле /etc/fetchmailrc и отдайте команду newlist. Таким образом, на вашей локальной машине могут храниться тысячи списков рассылки.

Удачи!