Администрирование почтовых серверов sendmail

Списки рассылки

Разбить на страницы
Показывать лекцию целиком

В этой лекции

  • Возможности службы списков рассылки
  • Программа Majordomo
  • Применение Majordomo
  • В предыдущей лекции обсуждалась организация и функционирование почтовых псевдонимов. Одной из функций почтовых псевдонимов является организация простых списков рассылки — когда сообщение, принятое на один адрес электронной почты тиражируется и рассылается по еще нескольким адресам. Хотя это довольно полезная функция файла aliases, на самом деле списки рассылки, к которым привыкло большинство пользователей сети Internet, обладают намного более мощными возможностями. В этой лекции обсуждаются вопросы организации полнофункциональной системы списков рассылки на базе почтового сервера под управлением ОС Linux. В такой системе обеспечивается поддержка нескольких списков рассылки, а также дополнительные функции администрирования для локальных и удаленных пользователей электронной почты.

    Возможности службы списков рассылки

    Вероятно, вы уже подписывались на какие-либо списки рассылки и имеете общее представление о них. Если вам приходилось хотя бы один раз посылать сообщение в список рассылки со словом subscribe (англ.— подписаться) в теле сообщения, то вы, очевидно уже работаете с одной из служб списков рассылки. Возможность подписки и отказа от подписки на тот или иной список рассылки — одна из функций полноценного сервера списков рассылки. В этой лекции рассматриваются основные функции, которые поддерживаются практически всеми серверами списков рассылки.

    Открытые и закрытые списки рассылки

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

    Подписаться на открытый список рассылки может любой желающий. При этом подлинность адреса электронной почты не проверяется. Это простейший, с точки зрения администрирования, способ организации списков рассылки. Однако здесь имеется один серьезный недостаток. При таком способе построения списков рассылки предполагается, что адрес электронной почты, с которого поступил запрос на подписку, принадлежит одному человеку. Иногда такое заблуждение может дорого обойтись: вы можете столкнуться с ситуацией, когда подписавшиеся на ваш список рассылки люди даже не подозревают об этом.

    Для решения подобной проблемы в большинстве программ, реализующих функции сервера списков рассылки, при организации открытых списков рассылки требуется подтверждение при подписке на тот или иной список рассылки. При поступлении на сервер запроса на подписку он отправляет обратно сообщение с просьбой подтвердить этот запрос. Часто, чтобы избежать подделки сообщения, подтверждающего подписку, используется специальный идентификационный код. После получения подтверждения о подписке адрес электронной почты включается в список рассылки.

    Все запросы на подписку в закрытый список рассылки поступают на специальный почтовый адрес, так называемого владельца списка рассылки. Новые адреса не включаются в список рассылки до тех пор, пока его владелец не подтвердит право на подписку того или иного пользователя. Владелец списка рассылки полностью контролирует числящихся в этом списке пользователей.

    Модерируемые и немодерируемые списки рассылки

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

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

    Удаленное управление списками рассылки

    Большинство программных пакетов, реализующих функции сервера списков рассылки, предлагают довольно полезную функцию — удаленное управление списками рассылки. Это позволяет владельцу того или иного списка рассылки создавать специальный пароль доступа к функциям администрирования списка рассылки. Получив доступ к административным функциям, владелец списка рассылки с помощью специальных сообщений, посылаемых по электронной почте, может управлять работой сервера списков рассылки. Ввиду того что все управление сервером списков рассылки можно выполнять по электронной почте, владелец списка рассылки может находиться в любой точке земного шара. Единственное условие для администрирования — наличие доступа к электронной почте. Таким образом, осуществляется удаленное управление списками рассылки.

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

    Дайджесты списков рассылки

    Серверы списков рассылки, как правило, формируют также дайджесты принятых сообщений. Сервер списков рассылки можно настроить для ежедневных, еженедельных и ежемесячных дайджестов сообщений. Пользователь может запросить получение через список рассылки дайджестов сообщений, а не самих сообщений. Дайджест представляет собой выдержку из сообщений, распространяющихся по списку рассылки. Иногда удобней получать в конце рабочего дня большое сообщение, содержащее дайджест, чем в течение всего дня получать много коротких сообщений. Однако сообщения, чувствительные ко времени (например, требующие немедленного ответа) не могут включаться в дайджесты. Дело в том, что такие дайджесты будут содержать устаревшую информацию.

    Архивы списков рассылки

    Архивы представляют собой файлы, содержащие все переданные сообщения. Владелец списка рассылки может определить интервал времени, через который содержимое архивов будет обновляться, — ежедневно, еженедельно, ежемесячно или раз в год. Все сообщения, отправленные в список рассылки в установленный период времени, также добавляются в файл архива. Новые члены списка рассылки должны иметь возможность доступа к архивам сообщений. Для этого на сервере списков рассылки можно создавать списки архивных файлов, которые пользователи могут затем запросить по электронной почте.

    Программа Majordomo

    Одним из наиболее популярных пакетов является программный пакет Majordomo, написанный Брентом Чепменом (Brent Chapman). Программа Majordomo реализует функции сервера списков рассылки, в котором поддерживаются все возможности списков рассылки, описанные в предыдущем разделе. Этот программный пакет представляет собой набор программ на языке Perl (используемом также для управления сообщениями в файле aliases ), файлов конфигурации и каталогов, в которых находятся списки рассылки, дайджесты и архивы.

    Установка программы Majordomo на почтовом сервере под управлением ОС Linux требует минимальных усилий со стороны администратора. Понадобится лишь настроить соответствующим образом программу sendmail и убедиться в надежности защиты почтовой системы от атак извне. В этом разделе описаны шаги, которые нужно предпринять для установки и настройки сервера списков рассылки под управлением программы Majordomo.

    Получение Majordomo

    Некоторые дистрибутивы ОС Linux включают в себя бинарный пакет с Majordomo. В дистрибутиве Caldera OpenLinux имеется уже готовый к установке RPM-файл с программой Majordomo.

    Предупреждение

    Предупреждаем пользователей OpenLinux 2.2 об ошибке в программе Majordomo, поставляемой с этой версией. Если вы используете OpenLinux версии 2.2, не пытайтесь установить RPM-файл с Majordomo, поставляемый на CD. Исправленная версия этого файла может быть получена с Web-сайта компании Caldera по адресу: http://www.calderasystems.com.

    Если в имеющейся у вас версии ОС Linux отсутствует бинарный файл с программой Majordomo или вы хотите получить последнюю его версию, это можно сделать через сеть Internet. На большинстве серверов в Internet, посвященных поддержке различных UNIX и Linux платформ, можно найти дистрибутив программы Majordomo. На момент написания книги официальным распространением и поддержкой программы Majordomo занималась ассоциация Great Circle Associates. Ее Web-сайт находится по адресу: http://www.greatcircle.com/majordomo/.

    Соответственно, FTP-сервер, с которого можно получить различное программное обеспечение, — ftp.greatcircle.com. Интересующее нас программное обеспечение находится на нем в каталоге /pub/majordomo. Последняя версия программы Majordomo всегда содержится в файле majordomo.tar.gz (на данный момент — 1.94.4). При получении этого файла по FTP не забудьте включить режим BINARY.

    Установка Majordomo

    Загрузив программу через Internet, можно приступить к ее установке на сервере. Ввиду того что программа Majordomo распространяется в исходных кодах, для ее установки вам понадобится компилятор языка С. Установка Majordomo производится в несколько этапов.

    Создание учетной записи для Majordomo

    Для обеспечения безопасности почтовой системы в целом программу Majordomo следует устанавливать с использованием отдельной учетной записи. В противном случае программы на языке Perl будут запускаться от имени пользователя root, что повысит уязвимость вашей системы. Новая учетная запись должна входить в группу, имеющую доверительные отношения с программой sendmail, так как она должна взаимодействовать с ней. Определить, какие группы имеют доверительные отношения с sendmail, можно по файлу конфигурации /etc/sendmail.cf. В нем обратите внимание на строки 'T'. В листинге 18.1 приведены соответствующие строки для ОС Mandrake Linux 6.0.

    1 ######################
    2 # Trusted users #
    3 ######################
    4
    5 # this is equivalent to setting class "t"
    6 #Ft/etc/sencimail.ct
    7 Troot
    8 Tdaemon
    9 Tuucp

    В листинге 18.1 показаны доверенные пользователи на почтовом сервере под управлением ОС Linux для программы sendmail. Как видите, в строке 6 программе sendmail может быть указано считывать доверенных пользователей из файла /etc/sendmail.ct. Однако в данном случае на сервере доверительные отношения с программой sendmail имеют группы root, daemon и uucp.

    В этом примере при установке Majordomo использованы группа daemon и идентификатор пользователя majordomo. Файл с программой Majordomo копируется в рабочий каталог Majordomo. Чтобы извлечь программу из архива, наберите в командной строке:

    tar -zxvf majordomo.tar.gz

    В созданный с помощью этой команды подкаталог будет развернут исходный код Majordomo. Затем необходимо изменить Makefile в соответствии с требованиями к конкретной системе.

    Редактирование Makefile для Majordomo

    В Makefile отображаются, как правило, все параметры, с которыми будет работать Majordomo после компиляции. В листинге 18.2 представлен фрагмент Makefile.

    1 #$Modified: Wed Aug 27 17:52:25 1997 by cwilson $
    2 #
    3 # $Source: /sources/cvsrepos/majordomo/Makefile,v $
    4 # $Revision: 1.63 $
    5 # $Date: 1997/08/27 15:56:21 $
    6 # $Header: /sources/cvsrepos/majordomo/Makefile,v 1.63 1997/08/27 15:56:21
    7 cwilson Exp $
    8 #
    9
    10 # This is the Makefile for Majordomo.
    11 #
    12 #------------- Configure these items --------------#
    13 #
    14
    15 # Put the location of your Perl binary here:
    16 PERL = /usr/bin/perl
    17
    18 # What do you call your C compiler?
    19 CC = gcc
    20
    21 # Where do you want Majordomo to be installed? This CANNOT be the
    22 # current directory (where you unpacked the distribution)
    23 W_HOME = /usr/local/majordomo
    24
    25 # Where do you want man pages to be installed?
    26 MAN = $(W_HOME)/man
    27
    28 # You need to have or create a user and group which majordomo will run as.
    29 # Enter the numeric UID and GID (not their names!) here:
    30 W_USER = 507
    31 W_GROUP = 2
    32
    33 # These set the permissions for all installed files and executables (except
    34 # the wrapper), respectively. Some sites may wish to make these more
    35 # lenient, or more restrictive.
    36 FILE_MODE = 644
    37 EXEC_MODE = 755
    38 HOME_MODE = 751
    39 # If your system is POSIX (e.g. Sun Solaris, SGI Irix 5 and 6, Dec Ultrix
    40 # MIPS, BSDI or other 4.4-based BSD, Linux) use the following four lines.
    41 # Do not change these values!
    42 WRAPPER_OWNER = root
    43 WRAPPER_GROUP = $(W_GROUP)
    44 WRAPPER_MODE = 4755
    45 POSIX = -DPOSIX_UID=$(W_USER) -DPOSIX_GID=$(W_GROUP)
    46 # Otherwise, if your system is NOT POSIX (e.g. SunOS 4.x, SGI Irix 4,
    47 # HP DomainOS) then comment out the above four lines and uncomment
    48 # the following four lines.
    49 # WRAPPER_OWNER = $(W_USER)
    50 # WRAPPER_GROUP = $(W_GROUP)
    51 # WRAPPER_MODE = 6755
    52 # POSIX =
    53
    54 # Define this if the majordomo programs should *also* be run in the same
    55 # group as your MTA, usually sendmail. This is rarely needed, but some
    56 # MTAs require certain group memberships before allowing the message sende
    57 # to be set arbitrarily.
    58 # MAIL_GID = numeric_gid_of_MTA
    59
    60 # This is the environment that (along with LOGNAME and USER inherited from
    61 # the parent process, and without the leading "W_" in the variable names)
    62 # gets passed to processes run by "wrapper"
    63 W_SHELL = /bin/sh
    64 W_PATH = /bin:/usr/bin:/usr/ucb
    65 W_MAJORDOMO_CF = $(W_HOME)/majordomo.cf
    66
    67 # A directory for temp files..
    68 TMPDIR = /usr/tmp

    Для того чтобы привести работу Majordomo в соответствие с вашими требованиями, в листинге 18.2 следует изменить несколько строк. Так, в строке 16 задается местонахождение программы Perl, необходимой для работы Majordomo. Поскольку все сценарии Majordomo написаны именно на этом языке, то на сервере нужно установить Perl и указать программе Majordomo, откуда она сможет вызывать интерпретатор этого языка. Язык Perl является одним из наиболее популярных языков программирования для создания сценариев. Он написан Лэрри Уоллзом (Larry Walls) и включен в большинство дистрибутивов ОС Linux. В строке 19 описан компилятор GNU языка С — gcc, который также входит в большинство версий ОС Linux.

    Кроме компиляторов, нужно также указать, куда будет устанавливаться Majordomo. В строке 23 описан рабочий каталог home для программы Majordomo. Ни в коем случае не путайте его с рабочим каталогом пользователя majordomo. Это абсолютно разные каталоги. Они могли бы совместить свои функции в одном каталоге, но намного удобней, когда конфигурационные файлы и сценарии запуска находятся в разных каталогах. В качестве рабочего каталога в данном случае мы решили создать специальный каталог /usr/local/majordomo. Его нужно создавать, будучи пользователем root. Затем можно сменить владельца каталога на пользователя majordomo, воспользовавшись командой

    chown majordomo.daemon /usr/local/majordomo

    После этого вам придется заменить majordomo.daemon на пользователя и группу, от имени которых производилась установка программы Majordomo. Таким образом, в Makefile необходимо описать пользователя majordomo и группу daemon. В строках 30 и 31 описываются именно эти параметры программы Majordomo. Вы можете войти в систему под именем majordomo и с помощью команды id определить текущий идентификатор пользователя и группы. В приведенном примере идентификатор пользователя majordomo — 507, а идентификатор группы daemon — 2. Помните, что Makefile воспринимает только числовые значения и не может работать с текстовыми переменными.

    Создание и редактирование файла majordomo.cf

    Основной файл конфигурации majordomo.cf предназначен для управления работой программы Majordomo при ее установке. Для создания нового файла конфигурации нужно скопировать находящийся в каталоге majordomo-1.94.4 файл шаблона sample.cf в файл majordomo.cf в том же каталоге. В листинге 18.3 представлен пример готового файла majordomo.cf.

    1 #
    2 # A sample configuration file for majordomo. You must read through this
    3 # and edit it accordingly!
    4 #
    5
    6 # $whereami -- What machine am I running on?
    7 #
    8 $whereami = "smallorg.org";
    9
    10 # $whoami -- Who do users send requests to me as?
    11 #
    12 $whoami = "Majordomo\@$whereami";
    13
    14 # $whoami_owner -- Who is the owner of the above, in case of problems?
    15 #
    16 $whoami_owner = "Majordomo-Owner-\@$whereami";
    17
    18 # $homedir -- Where can I find my extra .pl files, like majordomo.pl?
    19 # the environment variable HOME is set by the wrapper
    20 #
    21 if ( defined $ENV{"HOME"}) {
    22 $homedir = $ENV{"HOME"};
    23 } else {
    24 $homedir = "/usr/local/majordomo";
    25 }
    26
    27 # $listdir -- Where are the mailing lists?
    28 #
    29 $listdir = "$homedir/lists";
    30
    31 # $digest_work_dir -- the parent directory for digest's queue area
    32 # Each list must have a subdirectory under this directory in order for
    33 # digest to work. E.G. The bblisa list wou.Ki use:
    34 # /usr/local/mail/digest/bblisa
    35 # as its directory.
    36 #
    37 $digest_work_dir = "/usr/local/mail/digest";
    38
    39 # $log - - Where do I write my log?
    40 #
    41 $log = "$homedir/Log";

    В файле majordomo.cf необходимо описать несколько переменных. Так, в строке 8 определяется переменная $whereami, в которой задается обратный адрес для возврата сообщения. Если программой sendmail на почтовом сервере используется преобразование адресов (маскарадинг), то в качестве обратного адреса выступает доменное имя, как показано в строке 8. В противном случае обратный адрес будет представлять собой полное имя хоста. В строках 12 и 16 на базе переменной $whereami описываются переменные $whoami и $whoami_owner. Их значения изменять не нужно.

    Переменная $homedir, описанная в строке 24, очень важна для работы программы Majordomo. Она должна указывать на рабочий каталог программы Majordomo, который указан в Makefile. Именно в этом каталоге Majordomo будет искать сценарии запуска на языке Perl при обработке сообщений из списка рассылки. В строке 29 описывается другая переменная — $listdir. В ней указывается, где программа Majordomo хранит информацию для списков рассылки. По умолчанию для этой цели используется подкаталог lists в рабочем каталоге Majordomo.

    В строке 37 описывается переменная $digest_work_dir. С ее помощью определяется местонахождение файлов дайджестов сообщений списков рассылки. Если планируется использовать дайджесты, то, возможно, потребуется изменить значение этой переменной и создать для хранения дайджестов отдельный подкаталог. Помните, что в самих файлах дайджестов содержатся все тексты сообщений, переданных за определенный период. Таким образом вам может понадобиться достаточно большое дисковое пространство, в зависимости от количества сообщений, проходящих по списку рассылки в определенный период времени. И последняя описанная в файле переменная — $log в строке 41. Программа Majordomo в файле отчета ведет учет всех операций, выполненных со списком рассылки,. Местоположение этого файла определяется переменной $log и может быть изменено в зависимости от требований вашего дистрибутива ОС Linux, например, на /var/log/majordomo.log.

    Применение утилиты GNU make при установке Majordomo

    После отладки файлов Makefile и majordomo.cf с помощью утилиты GNU вы можете приступить к созданию выполняемых файлов для Majordomo. Для этого выполните следующее.

  • Задайте команду make wrapper для проверки правильности работы программы распаковки wrapper.
  • С правами пользователя majordomo задайте make install для установки сценариев и выполняемых файлов в рабочий каталог Majordomo.
  • С правами пользователя root задайте make install-wrapper, чтобы установить программу wrapper с идентификатором root.
  • Теперь вы можете запустить программу wrapper и проверить правильность установки Majordomo. Для этого войдите в систему как обычный пользователь без каких-либо специальных полномочий и измените рабочий каталог программы Majordomo (в нашем случае /usr/local/majordomo ). Затем, находясь в этом каталоге, задайте команду:

    ./wrapper config-test

    С помощью этой команды запускается программа wrapper и производится тестирование конфигурации. В листинге 18.4 показан фрагмент сообщения, генерируемого программой wrapper.

    1 ---------------- end of tests -----------------------
    2
    3
    4 Nothing bad found! Majordomo _should_ work correctly.
    5
    6 If it doesn't, check your configuration file
    7 (/usr/local/majordomo/majordomo.cf)
    8 closely, and if it still looks okay, consider asking the majordomo-users
    9 mailing list at "majordomo-users@greatcircle.com" for assistance. Be sure
    10 and fully specify what your problems are, and what type of machine (and
    11 operating system) you are using.
    12
    13 Enjoy!

    В листинге 18.4 представлено несколько последних строк из сообщения, генерируемого при выполнении config-test. Как видите, приведенная нами конфигурации Majordomo успешно прошла тестирование.

    Создание псевдонимов для Majordomo

    Закончив установку программного пакета Majordomo, следует соответствующим образом сконфигурировать программу sendmail, чтобы она смогла распознавать списки рассылки. Программа Majordomo может обрабатывать списки рассылки с помощью файла aliases (см. подробнее о нем лекцию 17, "Почтовые псевдонимы и преобразование адресов"). Для типовой конфигурации Majordomo в файл /etc/aliases нужно добавить несколько строк, приведенных в листинге 18.5.

    1 # Majordomo aliases
    2 majordomo: "|/usr/local/majordomo/wrapper majordomo"
    3 owner-majordomo: rich,
    4 majordomo-owner: rich

    После внесения каких-либо изменений в файл aliases необходимо запускать программу newaliases, чтобы они были восприняты программой sendmail. В строке 2 листинга 18.5 представлен псевдоним majordomo, который указывает на программу wrapper с параметром majordomo. Таким образом программа sendmail инструктируется о запуске программы wrapper при приеме сообщения.

    Существует один секрет, используемый при запуске программы wrapper с помощью псевдонимов. Дело в том, что на некоторых системах в sendmail используется настройка smrsh, описанная в лекции 11. С ее помощью запуск программ из оболочки ограничивается одним специальным каталогом, владельцем которого является пользователь root. Если у вас эта настройка sendmail используется, то в ней также будет указан и каталог, куда следует помещать файлы программ, которые sendmail может запускать самостоятельно. В Mandrake Linux 6.0 это каталог /etc/smrsh. Если скопировать программу wrapper из ее рабочего каталога (в нашем случае это каталог /usr/local/majordomo/wrapper ) в каталог /etc/smrsh, то программа sendmail сможет запускать ее.

    В строках 3 и 4 описаны два псевдонима. Если, работая со списком рассылки, участник этого списка сталкивается с какими-либо проблемами, он может направить письмо его владельцу с просьбой о помощи, совете и т.п. Эти адреса указывают на реальный адрес электронной почты владельца списка рассылки.

    Тестирование правильности установки Majordomo

    Чтобы проверить, правильно ли установлена Majordomo, создайте тестовый список рассылки. Вначале создайте фиктивный файл списка рассылки в соответствующем каталоге Majordomo, согласно файлу конфигурации majordomo.cf. В нашем примере он должен находиться в каталоге /usr/local/majordomo/lists. Создать тестовый файл вы можете с помощью команды

    touch /usr/local/majordomo/lists/test

    Затем можно послать псевдониму majordomo команду 'lists'  — вам будет выдан список всех доступных в данный момент списков рассылки. В листинге 18.6 приведен пример такого тестирования.

    1 [rich@shadrach rich]$ echo 'lists' | mail -v majordomo
    2 majordomo... aliased to "|/usr/local/majordomo/wrapper majordomo"
    3 "|/usr/local/majordomo/wrapper majordomo"... Connecting to prog...
    4 "|/usr/local/majordomo/wrapper majordomo"... Sent
    5 [rich@shadrach rlch]$ mail
    6 Mail version 8.1 6/6/93. Type ? for help.
    7 "/var/spool/mail/pich": 1 message 1 new
    8 >N 1 Majordomo@smallorg.org Thu Nov 18 18:51 23/736 "Majordomo results"
    9 
    10 Message 1:
    11 From Majordomo-Owner@smallorg.org Thu Nov 18 18:51:35 1999
    12 Date: Thu, 18 Nov 1999 18:51:34 -0500
    13 X-Authentication-Warning: shadrach.smallorg.org: majordomo set sender to
    14 Majordomo-Owner@smallorg.org using -f
    15 To: rich@smallorg.org
    16 From: Majordomo@smallorg.org
    17 Subject: Majordomo results
    18 Reply-To: Majordomo@smallorg.org
    20 --
    21
    22 >>>> lists
    23 Majordomo@smallorg.org serves the following lists:
    24
    25 test
    26
    27 Use the 'info <list>' command to get more information
    28 about a specific list.
    29
    30 

    В строке 1 листинга 18.6 приведен пример использования команды 'lists' для Majordomo. Параметр командной строки -v позволяет запуск программы mail в режиме высокой детализации, при котором отображается каждое выполняемое действие. В строках 2–4 представлены события, происходящие с сообщением. В строке 2 показано, что программа sendmail обнаружила псевдоним. В строке 3 она попыталась соединиться с программой wrapper. И в строке 4 показано, что программа sendmail успешно передала сообщение программе wrapper. После того как сообщение в список рассылки отправлено, можно проверить почтовый ящик отправителя на предмет получения ответа от Majordomo. В строках 5–30 представлен ответ программы Majordomo на отправленное нами сообщение. Из него ясно, что на сервере списков рассылки в настоящее время доступен один список рассылки. Естественно, что это не совсем соответствует действительности, так как мы полностью не сконфигурировали списки рассылки.

    И последнее, в чем следует убедиться при проверке работы Majordomo, — занесены ли посланные команды в файл отчета. Для этого проверьте файл отчета Majordomo /usr/local/majordomo/log. В нем должна появиться такая строка:

    Nov 18 18:51:34 smallorg.org majordomo[28128] {Rich <rich@shadrach.smallorg.org>} lists

    В файле отчета фиксируется время, адрес электронной почты и введенная команда. Регулярно просматривая файл отчета, вы сможете выявить попытки несанкционированного использования сервера списков рассылки.

    Настройка Majordomo для работы со списками рассылки

    После установки программы Majordomo вы можете приступить к созданию различных списков рассылки. Для этого вначале необходимо создать пустой файл, в котором будут храниться адреса электронной почты участников списка рассылки. Имя этого файла должно совпадать с названием списка рассылки. Мы рассмотрим это на примере списка рассылки под названием officenews. После того как необходимый файл создан, следует убедиться в наличии правильного набора прав доступа к нему. Программа sendmail может не принимать для обработки список псевдонимов, группе которых разрешена запись в файл или в каталог, где они находятся. Ниже приведены команды для создания файла и изменения прав доступа:

    touch /usr/local/majordomo/lists/officenews
    chmod 755 /usr/local/majordomo/lists
    chmod 644 /usr/local/majordomo/lists/officenews

    Далее создайте для списка рассылки информационный файл. Программа Majordomo использует информационный файл списка рассылки для предоставления сведений о нем по требованию кого-либо из пользователей или при подписке на список рассылки. Информационный файл обычно создается в виде list.info, где list — имя списка рассылки. В нашем примере создается информационный файл списка рассылки /usr/local/majordomo/officenews.info, где содержится текстовое описание списка рассылки.

    Для каждого списка рассылки необходимо создавать несколько записей в файле aliases. Их количество зависит от функций, которые должен поддерживать тот или иной список рассылки. В табл. 18.1 приведены псевдонимы, которые могут использоваться для списка рассылки с именем list.

    Псевдонимы, используемые для списков рассылки Majordomo
    Псевдоним Описание
    list Псевдоним списка рассылки
    list-outgoing Реальный список для подписчиков
    owner-list Администратор списка рассылки
    list-request Адрес для специальных запросов Majordomo
    list-approval Персона, проверяющая содержание сообщений в модерируемых списках рассылки (модератор)
    list-digest Адрес для дайджестов списков рассылки
    list-digest-request Адрес для запросов на отправку дайджестов

    В листинге 18.7 приведен пример записей в файле aliases для списка рассылки officenews. Это список рассылки, стандартный без всяких излишеств. Он открытый и в нем не поддерживаются рассылка дайджестов и ведение архивов сообщений.

    1 #officenews mail list entries
    2 officenews: "|/usr/local/majordomo/wrapper resend -l officenews officenews-list"
    3 officenews-list: :include:/usr/local/majorodomo/lists/officenews
    4 owner-officenews: rich,
    5 officenews-owner: rich
    6 officenews-approval: officenews-owner
    7 officenews-request: "|/usr/local/majordomo/wrapper majordomo -l officenews"

    При добавлении новых псевдонимов не забывайте запускать программу newaliases с правами пользователя root. С этого момента список рассылки уже может функционировать, но его еще нужно настроить, чтобы он работал в соответствии с вашими требованиями. Вы можете создать файл конфигурации, отправив в список рассылки письмо с локального или удаленного почтового сервера. Программа Majordomo автоматически создаст файл конфигурации и отправит его в ответ на ваше письмо. В листинге 18.8 представлен пример такой операции и фрагмент возвращенного в ответ сообщения.

    1 [rich@shadrach rich]$ mail officenews-request
    2 Subject:
    3 config officenews officenews.admin
    4 .
    5 Cc:
    6 [rich@shadrach rich]$ mail
    7 Mail version 8.1 6/6/93. Type ? for help.
    8 "/var/spool/mail/rich" : 1 message 1 new
    9 >N 1 Majordomo@shadrach.s Thu Nov 18 16:25 400/16764 "Majordomo results"
    10 1
    11 From Majordomo-Owner@shadrach.smallorg.org Thu Nov 18 16:06:05 1999
    12 Return-Path: <Majordomo-Owner@shadrach.smallorg.org>
    13 Received: (from majordomo@localhost)
    14 by shadrach.smallorg.org (8.9.3/8.9.3) id QAA28433;
    15 Thu, 18 Nov 1999 19:06:05 -0500
    16 Date: Thu, 18 Nov 1999 19:06:05 -0500
    17 Message-Id: <199911182106.QAA28433@shadrach.smallorg.org>
    18 X-Authentication-Warning: shadrach.smallorg.org: majordomo set sender 
      to Majordomo-Owner@smallorg.org using -19 f
    20 To: rich@smallorg.org
    21 From: Majordomo@smallorg.org
    22 Subject: Majordomo results
    23 Reply-To: Majordomo@smallorg.org
    24 Status: R
    25
    26 --
    27
    28 >>>> config officenews officenews.admin
    29 admin_passwd = officenews.admin
    30 administrivia = yes
    31 advertise << END
    32 announcements = yes
    33 approve_passwd = officenews.pass
    34 archive_dir =
    35 comments << END
    36 date_info = yes
    37 date_intro = yes
    38 debug = no
    39 description =
    40 digest_archive =
    41 digest_issue = 1
    42 digest_maxdays =
    43 digest_maxlines =
    44 digest_name = officenews
    45 digest_rm_footer =
    46 digest_rm_fronter =
    47 digest_volume = 1
    48 digest_work_dir =
    49 get_access = list
    50 index_access = open
    51 info_access = open
    52 intro_access = list
    53 maxlength = 40000
    54 message_footer << END
    55 message_fronter << END
    56 message_headers << END
    57 moderate = no
    58 moderator =
    59 mungedomain = no
    60 noadvertise << END
    61 precedence = bulk
    62 purge_received = no
    63 reply_to =
    64 resend_host =
    65 restrict_post =
    66 sender = owner-officenews
    67 strip = yes
    68 subject_prefix =
    69 subscribe_policy = open+confirm
    70 taboo_body << END
    71 taboo_headers << END
    72 unsubscribe_policy = open
    73 welcome = yes
    74 which_access = open
    75 who_access = open

    В строке 1 листинга 18.8 вы видите, как владелец списка рассылки посылает почтовое сообщение на адрес officenews-request. Все команды списка рассылки будут пересылаться с приставкой к названию списка рассылки. Как правило, любое сообщение, посланное в список рассылки будет автоматически разослано всем его подписчикам. Однако в пакете Majordomo имеется специальная программа resend, с помощью которой вы можете просматривать содержимое сообщений и игнорировать те из них, которые содержат команды Majordomo и посланы в список рассылки по ошибке. Таким образом, подписчики списка рассылки не будут раздражаться, получая сообщения, содержащие команды типа subscribe и т.п.

    В строке 3 показан формат запроса файла конфигурации для списка рассылки. Третий параметр в этой строке представляет собой пароль администратора списка рассылки. По умолчанию пароль для любого из списков принят как list.admin, где list — имя списка рассылки. Получив такого рода сообщение, Majordomo посылает ответное, в текст которого включает созданный ею файл конфигурации. Файл конфигурации обычно хранится в каталоге lists в виде lists.config, где lists — имя списка рассылки.

    Далее в строках 29–75 показаны различные переменные файла конфигурации, которые можно изменять при необходимости. В листинге были опущены пояснительные комментарии к переменным файла конфигурации. Значения самих параметров вы можете узнать из реального файла конфигурации, где эти комментарии приводятся. Чтобы внести изменения в конфигурацию, нужно сохранить это сообщение, изменить нужный параметр и с помощью команды newconfig послать новый файл конфигурации в список рассылки. Первая строка в таким сообщении должна быть следующей:

    newconfig list adminpasswd,

    где list — имя списка рассылки, а adminpasswd — пароль администратора списка рассылки. За этой строкой далее следует обычный файл конфигурации с внесенными вами изменениями.

    В листинге 18.9 представлены переменные, которые чаще всего модифицируются в файле конфигурации.

    1 admin_passwd = newpassword
    2 approve_passwd = newpasswd
    3 description = A mail list used to distribute general office news
    4 subscribe_policy = open
    5 who_access = list

    Большинство других переменных в стандартных списках рассылки будут работать нормально со значениями, заданными по умолчанию. Не забывайте для нового списка рассылки менять пароль администратора. В строке 4 листинга 18.9 приведено также изменение типа подписки на список рассылки. По умолчанию задается тип подписки open+confirm (открытая с подтверждением). То есть участники списка рассылки при подписке на него должны подтвердить свой запрос на подписку, ответив на специальное сообщение от Majordomo. В нашем примере используется открытая подписка на список рассылки без подтверждения, что позволяет всем пользователям свободно на него подписываться. Если же по списку рассылки предполагается распространение важной для компании информации, составляющей коммерческую тайну и т.п., вы можете воспользоваться закрытым списком рассылки с утверждением каждого участника рассылки владельцем списка. В строке 5 вводится ограничение на выдачу команды 'who', с помощью которой отображается список участников рассылки. В данном случае этот круг ограничивается только активными членами списка рассылки. В листинге 18.10 представлены результаты попытки использования этой команды не членом списка рассылки.

    1 [melanie@shadrach melanie]$ echo 'who' | mail officenews-request
    2 [melanie@shadrach melanie]$ mail
    3 Mail version 8.1 6/6/93. Type ? for help.
    4 "/var/spool/mail/melanie"; 1 message 1 new
    5 >N 1 Majordomo@smallorg.o Thu Nov 20 16;40 20/744 "Majordomo results"
    6 
    7 Message 1:
    8 From Majordomo-Owner@smallorg.org Thu Nov 18 20:40:54 1999
    9 Date: Thu, 18 Nov 1999 20:40:53 -0500
    10 X-Authentication-Warning: shadrach.smallorg.org: majordomo set sender to
     Majordomo-Owner@smallorg.org using -f
    11 To: melanie@smallorg.org
    12 From: Majordomo@smallorg.org
    13 Subject: Majordomo results
    14 Reply-To: Majordomo@smallorg.org
    15
    16 --
    17
    18 >>>> who
    19 **** List 'officenews' is a private list.
    20 **** Only members of the list can do a 'who'.
    21 **** you [ Melanie <melanie@smallorg.org> ] aren't a member of list 'officenews'.
    22
    23 

    В строке 1 листинга 18.10 показано, как пользователь melanie посылает серверу списков рассылки команду 'who' с целью получения списка участников рассылки. В строках 18–21 вы видите ответ, полученный melanie от сервера. Как видите, эта команда может использоваться только членами списка рассылки, а melanie таковым не является. Поэтому сервер списка рассылки отказал ей в предоставлении списка пользователей закрытой рассылки.

    На этом мы заканчиваем рассмотрение установки и настройки программного пакета Majordomo, который реализует функции сервера списков рассылки. В следующем разделе мы рассмотрим использование сервера списков рассылки клиентами электронной почты.

    Применение Majordomo

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

    Для того чтобы стать членом списка рассылки, нужно послать запрос на подписку. Запросы на подписку посылаются с префиксом -request перед именем соответствующего списка рассылки. Поле Subject:(Тема:) программой Majordomo игнорируется, поэтому вы можете оставить его пустым. В теле сообщения можно указать лишь одну строку со словом subscribe. В зависимости от режима работы списка рассылки вы получите либо подтверждение о подписке, либо специальное сообщение, на которое вы должны будете ответить, чтобы подписка состоялась. В листинге 18.11 приведен пример сеанса подписки на список рассылки.

    1 [ rich@shadrach rich]$ mail officenews-request
    2 Subject:
    3 subscribe
    4 .
    5 Cc:
    6 [rich@shadrach rich]$ mail
    7 Mail version 8.1 6/6/93. Type ? for help.
    8 "/var/spool/mail/rich": 3 messages 3 new
    9 >N 1 Majordomo@smallorg.o Fri Nov 19 04:42 44/1625 "Welcome to officenews"
    10 N 2 Majordomo@smallorg.o Fri Nov 19 04:42 18/696 "SUBSCRIBE officenews "
    11 N 3 Majordomo@smallorg.o Fri Nov 19 04:42 18/613 "Majordomo results"
    12 
    13 Message 1 :
    14 From owner-officenews@smallorg.org Fri Nov 19 04:42:56 1999
    15 Date: Fri, 19 Nov 1999 04:42:56 -0500
    16 X-Authentication-Warning: shadrach.smallorg.org: majordomo set sender to 
      owner-officenews@smallorg.org using -f
    17 To: rich@smallorg.org
    18 From: Majordomo@smallorg.org
    19 Subject: Welcome to officenews
    20 Reply-To: Majordomo@smallorg.org
    21
    22 --
    23
    24 Welcome to the officenews mailing list!
    25
    26 Please save this message for future reference. Thank you.
    27
    28 If you ever want to remove yourself from this mailing list,
    29 you can send mail to <Majordomo@smallorg.org> with the following
    30 command in the body of your email message:
    31
    32 unsubscribe officenews
    33
    34 or from another account, besides rich@smallorg.org:
    35
    36 unsubscribe officenews rich@smallorg.org
    37
    38 If you ever need to get in contact with the owner of the list,
    39 (if you have trouble unsubscribing, or have questions about the
    40 list itself) send email to <owner-officenews@smallorg.org> .
    41 This is the general rule for most mailing lists when you need
    42 to contact a human.
    43
    44 Here's the general information for the list you've subscribed to,
    45 in case you don't already have it:
    46
    47 Welcome to the smallorg.org officenews mail list.
    48
    49 This mail list is used to help keep you informed about general informatic
    50 that is happening in the organization. Please post any announcements to
    51 this mail list. Unauthorized use of this mail list is prohibited.
    52
    53 

    В строках 1–5 листинга 18.11 вы видите, как пользователь rich посылает запрос на подписку на псевдоадрес officenews-request. Пользователи могут также направлять запросы и на псевдоним majordomo, но желательно, чтобы команда предварялась именем списка рассылки, тогда программа Majordomo сможет определить, к какому из списков рассылки она относится. Почтовые сообщения, посланные в ответ на команду, представлены в строках 6–11. В строке 11 представлено сообщение, отправленное программой Majordomo в ответ на запрос о подписке. В строке 10 вы видите сообщение, которое направляется владельцу списка рассылки (которым, кстати, может быть и сам rich ). В нем сообщается о том, что на данный список рассылки был подписан новый пользователь. В строке 9 представлено возвращаемое пользователю сообщение, в котором подтверждается его членство в списке рассылки. В строках 13–53 полностью приведен текст этого сообщения. Обратите внимание, что в строках 28–36 даются подробные инструкции о механизме отказа от подписки. В строках 47–51 представлен текст из файла officenews.info, который был создан для этого списка рассылки.

    Команды пользователя списка рассылки

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

    Команда subscribe

    Как видно из листинга 18.11, команда subscribe позволяет новым членам списка рассылки посылать запрос на подписку. Формат этой команды следующий:

    subscribe <list> [<address>],

    где list — имя списка рассылки, а address — адрес электронной почты, который вы хотите добавить в список рассылки. Если же сообщение с требованием о подписке посылается на псевдоним list-request, то параметр list в этой команде можно опустить. Можно также не указывать адрес электронной почты ( address ), включаемый в список рассылки, если вы хотите, чтобы подписка была оформлена на адрес, с которого отправлен запрос на подписку. Параметр адреса электронной почты включен в команду subscribe для обеспечения возможности подписки с любого адреса. Результаты подписки будут зависеть лишь от организации подписки в данном списке рассылки.

    Команда unsubscribe

    Команда выполняет действия, обратные команде subcribe. По этой команде адрес электронной почты исключается из списка рассылки. Формат команды:

    unsubscribe <list> [<address>],

    где, как и в предыдущей команде, параметры list и address являются необязательными.

    Команда get

    Команда get используется для получения файлов через список рассылки. Формат использования этой команды следующий:

    get <list> filename,

    где filename — файл, который находится в списке рассылки. Чаще всего эта команда используется при работе с архивами списков рассылки. Член списка рассылки может получить файл архива с помощью команды get, указав имя архива.

    Команда index

    Команда index используется для выдачи списка файлов, доступных через список рассылки. Формат этой команды следующий:

    index <list>

    Команда index используется обычно вместе с командой get при работе с архивами списков рассылки. По этой команде выдается список файлов архивов, которые можно запросить через список рассылки.

    Команда which

    С помощью команды which можно определить в какие списки рассылки на сервере Majordomo входит указанный адрес электронной почты. Формат этой команды следующий:

    which [<address>]

    Если возникает необходимость получить информацию об адресе электронной почты, с которого посылается запрос, то параметр address можно не указывать. По этой команде Majordomo выдает перечень всех списков рассылки, в которых содержится указанный адрес электронной почты.

    Команда who

    Команда who используется для получения информации об активных подписчиках указанного списка рассылки. Ее формат таков:

    who <list>

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

    Команда info

    Команда info позволяет получить общие сведения о списке рассылки. Формат команды:

    info <list>

    Сведения о списке рассылки берутся из файла list.info, который находится в каталоге lists.

    Команда intro

    Команда intro применяется для выдачи текстового сообщения, которое направляется новым членам списка рассылки. Формат этой команды:

    intro <list>

    Команда lists

    Команда lists применяется для выдачи перечня всех доступных на сервере Majordomo списков рассылки. Формат команды следующий:

    lists

    Команда help

    Команда help позволяет получить список всех доступных для пользователя команд Majordomo.

    Команда end

    Команда end используется для указания Majordomo прекратить обработку команд в сообщениях. Эта команда применяется главным образом при появлении дополнительного текста в конце почтового сообщения (например, при использовании почтовой программы, генерирующей блок подписи в нижней части сообщения). Команда end задается в отдельной строке в конце сообщения, содержащего команды.

    Команды владельца списка рассылки

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

    Команда approve

    Команда approve используется только в закрытых списках рассылки для подтверждения подписки от новых членов списка рассылки. Формат команды:

    approve password
    subscribe/unsubscribesubscribe/unsubscribe
    <list> <address>,

    где password — пароль администратора списка рассылки, subscribe/unsubscribesubscribe/unsubscribe — действие, требующее подтверждения, list — имя списка рассылки и address — адрес электронной почты, который должен быть подтвержден.

    Команда config

    Команда config используется для получения копии файла конфигурации списка рассылки list.config. Формат этой команды следующий:

    config <list> password

    Команда mkdigest

    С помощью команды mkdigest создаются дайджесты списков рассылки. Дайджесты можно создавать по мере необходимости, их количество не ограничено и зависит лишь от наличия свободного дискового пространства на сервере. Формат этой команды следующий:

    mkdigest <list> password

    Если список рассылки создает большой трафик в сети, то целесообразно более часто создавать дайджесты списка рассылки (например, несколько раз в день). Команда mkdigest заставляет Majordomo создавать новый дайджест.

    Команда newconfig

    Команда newconfig применяется для создания нового файла конфигурации списка рассылки с заданными параметрами. Формат команды следующий:

    newconfig <list> password

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

    Команда newinfo

    Команда newinfo используется для внесения изменений по электронной почте в файл list.info. Формат этой команды таков:

    newinfo <list> password

    За командой newinfo должен следовать новый информационный файл. Программа Majordomo при его получении заменит старый файл list.info на новый. Это еще одна полезная функция для удаленного администрирования.

    Команда passwd

    Команда passwd применяется для изменения пароля. Формат команды passwd следующий:

    passwd <list> old-passwd new-passwd

    Эта команда может ввести вас в заблуждение. Дело в том, что обычно пароль списка рассылки хранится в файле list.conf, который можно изменить с помощью команды newconfig. Если же вы не хотите посылать новый файл конфигурации, то в качестве альтернативы можете использовать команду passwd, с помощью которой изменяется только пароль. Однако эта команда не изменяет пароль, содержащийся в файле конфигурации. Создается лишь новый файл list.passwd, где и хранится новый пароль. Если же пароль в файле конфигурации не совпадает с новым паролем в этом файле, то они оба считаются равноправными и принимаются списком рассылки.

    Команда writeconfig

    Команда writeconfig используется для переформатирования существующего файла конфигурации в исходный формат. Формат этой команды следующий:

    writeconfig <list> password

    Эта команда применяется в тех случаях, когда файл конфигурации безнадежно испорчен и его не удалось восстановить другими средствами. Иногда это бывает при ошибочном применении команды newconfig. С помощью команды writeconfig предпринимается попытка восстановить исходный формат файла конфигурации списка рассылки.

    Резюме

    Одна из дополнительных функций почтовый серверов — ведение списков рассылки. Списки рассылки могут обслуживать большое количество пользователей, доставляя им одновременно одинаковые сообщения. Для платформы Linux существует программный пакет Majordomo, в котором реализованы функции сервера списков рассылки. Программа Majordomo может обслуживать на одном почтовом сервере несколько списков рассылки. Списки рассылки могут быть открытыми немодерируемыми или закрытыми (с ограничениями подписки). Для облегчения работы в списках рассылки предусмотрено формирование дайджестов (кратких подборок сообщений за определенный интервал времени) и архивов сообщений. Программа Majordomo также предоставляет возможности удаленного управления списками рассылки, поэтому владелец списка рассылки не нуждается в учетной записи непосредственно на сервере списков рассылки. Команды пользователей списков рассылки достаточно просты; с их помощью можно осуществить подписку, оформить отказ от подписки и послать сообщения в список рассылки без какой-либо специальной подготовки.

    Страницы:

    В этой лекции

  • Возможности службы списков рассылки
  • Программа Majordomo
  • Применение Majordomo
  • В предыдущей лекции обсуждалась организация и функционирование почтовых псевдонимов. Одной из функций почтовых псевдонимов является организация простых списков рассылки — когда сообщение, принятое на один адрес электронной почты тиражируется и рассылается по еще нескольким адресам. Хотя это довольно полезная функция файла aliases, на самом деле списки рассылки, к которым привыкло большинство пользователей сети Internet, обладают намного более мощными возможностями. В этой лекции обсуждаются вопросы организации полнофункциональной системы списков рассылки на базе почтового сервера под управлением ОС Linux. В такой системе обеспечивается поддержка нескольких списков рассылки, а также дополнительные функции администрирования для локальных и удаленных пользователей электронной почты.

    Возможности службы списков рассылки

    Вероятно, вы уже подписывались на какие-либо списки рассылки и имеете общее представление о них. Если вам приходилось хотя бы один раз посылать сообщение в список рассылки со словом subscribe (англ.— подписаться) в теле сообщения, то вы, очевидно уже работаете с одной из служб списков рассылки. Возможность подписки и отказа от подписки на тот или иной список рассылки — одна из функций полноценного сервера списков рассылки. В этой лекции рассматриваются основные функции, которые поддерживаются практически всеми серверами списков рассылки.

    Открытые и закрытые списки рассылки

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

    Подписаться на открытый список рассылки может любой желающий. При этом подлинность адреса электронной почты не проверяется. Это простейший, с точки зрения администрирования, способ организации списков рассылки. Однако здесь имеется один серьезный недостаток. При таком способе построения списков рассылки предполагается, что адрес электронной почты, с которого поступил запрос на подписку, принадлежит одному человеку. Иногда такое заблуждение может дорого обойтись: вы можете столкнуться с ситуацией, когда подписавшиеся на ваш список рассылки люди даже не подозревают об этом.

    Для решения подобной проблемы в большинстве программ, реализующих функции сервера списков рассылки, при организации открытых списков рассылки требуется подтверждение при подписке на тот или иной список рассылки. При поступлении на сервер запроса на подписку он отправляет обратно сообщение с просьбой подтвердить этот запрос. Часто, чтобы избежать подделки сообщения, подтверждающего подписку, используется специальный идентификационный код. После получения подтверждения о подписке адрес электронной почты включается в список рассылки.

    Все запросы на подписку в закрытый список рассылки поступают на специальный почтовый адрес, так называемого владельца списка рассылки. Новые адреса не включаются в список рассылки до тех пор, пока его владелец не подтвердит право на подписку того или иного пользователя. Владелец списка рассылки полностью контролирует числящихся в этом списке пользователей.

    Модерируемые и немодерируемые списки рассылки

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

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

    Удаленное управление списками рассылки

    Большинство программных пакетов, реализующих функции сервера списков рассылки, предлагают довольно полезную функцию — удаленное управление списками рассылки. Это позволяет владельцу того или иного списка рассылки создавать специальный пароль доступа к функциям администрирования списка рассылки. Получив доступ к административным функциям, владелец списка рассылки с помощью специальных сообщений, посылаемых по электронной почте, может управлять работой сервера списков рассылки. Ввиду того что все управление сервером списков рассылки можно выполнять по электронной почте, владелец списка рассылки может находиться в любой точке земного шара. Единственное условие для администрирования — наличие доступа к электронной почте. Таким образом, осуществляется удаленное управление списками рассылки.

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

    Дайджесты списков рассылки

    Серверы списков рассылки, как правило, формируют также дайджесты принятых сообщений. Сервер списков рассылки можно настроить для ежедневных, еженедельных и ежемесячных дайджестов сообщений. Пользователь может запросить получение через список рассылки дайджестов сообщений, а не самих сообщений. Дайджест представляет собой выдержку из сообщений, распространяющихся по списку рассылки. Иногда удобней получать в конце рабочего дня большое сообщение, содержащее дайджест, чем в течение всего дня получать много коротких сообщений. Однако сообщения, чувствительные ко времени (например, требующие немедленного ответа) не могут включаться в дайджесты. Дело в том, что такие дайджесты будут содержать устаревшую информацию.

    Архивы списков рассылки

    Архивы представляют собой файлы, содержащие все переданные сообщения. Владелец списка рассылки может определить интервал времени, через который содержимое архивов будет обновляться, — ежедневно, еженедельно, ежемесячно или раз в год. Все сообщения, отправленные в список рассылки в установленный период времени, также добавляются в файл архива. Новые члены списка рассылки должны иметь возможность доступа к архивам сообщений. Для этого на сервере списков рассылки можно создавать списки архивных файлов, которые пользователи могут затем запросить по электронной почте.

    Программа Majordomo

    Одним из наиболее популярных пакетов является программный пакет Majordomo, написанный Брентом Чепменом (Brent Chapman). Программа Majordomo реализует функции сервера списков рассылки, в котором поддерживаются все возможности списков рассылки, описанные в предыдущем разделе. Этот программный пакет представляет собой набор программ на языке Perl (используемом также для управления сообщениями в файле aliases ), файлов конфигурации и каталогов, в которых находятся списки рассылки, дайджесты и архивы.

    Установка программы Majordomo на почтовом сервере под управлением ОС Linux требует минимальных усилий со стороны администратора. Понадобится лишь настроить соответствующим образом программу sendmail и убедиться в надежности защиты почтовой системы от атак извне. В этом разделе описаны шаги, которые нужно предпринять для установки и настройки сервера списков рассылки под управлением программы Majordomo.

    Получение Majordomo

    Некоторые дистрибутивы ОС Linux включают в себя бинарный пакет с Majordomo. В дистрибутиве Caldera OpenLinux имеется уже готовый к установке RPM-файл с программой Majordomo.

    Предупреждение

    Предупреждаем пользователей OpenLinux 2.2 об ошибке в программе Majordomo, поставляемой с этой версией. Если вы используете OpenLinux версии 2.2, не пытайтесь установить RPM-файл с Majordomo, поставляемый на CD. Исправленная версия этого файла может быть получена с Web-сайта компании Caldera по адресу: http://www.calderasystems.com.

    Если в имеющейся у вас версии ОС Linux отсутствует бинарный файл с программой Majordomo или вы хотите получить последнюю его версию, это можно сделать через сеть Internet. На большинстве серверов в Internet, посвященных поддержке различных UNIX и Linux платформ, можно найти дистрибутив программы Majordomo. На момент написания книги официальным распространением и поддержкой программы Majordomo занималась ассоциация Great Circle Associates. Ее Web-сайт находится по адресу: http://www.greatcircle.com/majordomo/.

    Соответственно, FTP-сервер, с которого можно получить различное программное обеспечение, — ftp.greatcircle.com. Интересующее нас программное обеспечение находится на нем в каталоге /pub/majordomo. Последняя версия программы Majordomo всегда содержится в файле majordomo.tar.gz (на данный момент — 1.94.4). При получении этого файла по FTP не забудьте включить режим BINARY.

    Установка Majordomo

    Загрузив программу через Internet, можно приступить к ее установке на сервере. Ввиду того что программа Majordomo распространяется в исходных кодах, для ее установки вам понадобится компилятор языка С. Установка Majordomo производится в несколько этапов.

    Создание учетной записи для Majordomo

    Для обеспечения безопасности почтовой системы в целом программу Majordomo следует устанавливать с использованием отдельной учетной записи. В противном случае программы на языке Perl будут запускаться от имени пользователя root, что повысит уязвимость вашей системы. Новая учетная запись должна входить в группу, имеющую доверительные отношения с программой sendmail, так как она должна взаимодействовать с ней. Определить, какие группы имеют доверительные отношения с sendmail, можно по файлу конфигурации /etc/sendmail.cf. В нем обратите внимание на строки 'T'. В листинге 18.1 приведены соответствующие строки для ОС Mandrake Linux 6.0.

    1 ######################
    2 # Trusted users #
    3 ######################
    4
    5 # this is equivalent to setting class "t"
    6 #Ft/etc/sencimail.ct
    7 Troot
    8 Tdaemon
    9 Tuucp

    В листинге 18.1 показаны доверенные пользователи на почтовом сервере под управлением ОС Linux для программы sendmail. Как видите, в строке 6 программе sendmail может быть указано считывать доверенных пользователей из файла /etc/sendmail.ct. Однако в данном случае на сервере доверительные отношения с программой sendmail имеют группы root, daemon и uucp.

    В этом примере при установке Majordomo использованы группа daemon и идентификатор пользователя majordomo. Файл с программой Majordomo копируется в рабочий каталог Majordomo. Чтобы извлечь программу из архива, наберите в командной строке:

    tar -zxvf majordomo.tar.gz

    В созданный с помощью этой команды подкаталог будет развернут исходный код Majordomo. Затем необходимо изменить Makefile в соответствии с требованиями к конкретной системе.

    Редактирование Makefile для Majordomo

    В Makefile отображаются, как правило, все параметры, с которыми будет работать Majordomo после компиляции. В листинге 18.2 представлен фрагмент Makefile.

    1 #$Modified: Wed Aug 27 17:52:25 1997 by cwilson $
    2 #
    3 # $Source: /sources/cvsrepos/majordomo/Makefile,v $
    4 # $Revision: 1.63 $
    5 # $Date: 1997/08/27 15:56:21 $
    6 # $Header: /sources/cvsrepos/majordomo/Makefile,v 1.63 1997/08/27 15:56:21
    7 cwilson Exp $
    8 #
    9
    10 # This is the Makefile for Majordomo.
    11 #
    12 #------------- Configure these items --------------#
    13 #
    14
    15 # Put the location of your Perl binary here:
    16 PERL = /usr/bin/perl
    17
    18 # What do you call your C compiler?
    19 CC = gcc
    20
    21 # Where do you want Majordomo to be installed? This CANNOT be the
    22 # current directory (where you unpacked the distribution)
    23 W_HOME = /usr/local/majordomo
    24
    25 # Where do you want man pages to be installed?
    26 MAN = $(W_HOME)/man
    27
    28 # You need to have or create a user and group which majordomo will run as.
    29 # Enter the numeric UID and GID (not their names!) here:
    30 W_USER = 507
    31 W_GROUP = 2
    32
    33 # These set the permissions for all installed files and executables (except
    34 # the wrapper), respectively. Some sites may wish to make these more
    35 # lenient, or more restrictive.
    36 FILE_MODE = 644
    37 EXEC_MODE = 755
    38 HOME_MODE = 751
    39 # If your system is POSIX (e.g. Sun Solaris, SGI Irix 5 and 6, Dec Ultrix
    40 # MIPS, BSDI or other 4.4-based BSD, Linux) use the following four lines.
    41 # Do not change these values!
    42 WRAPPER_OWNER = root
    43 WRAPPER_GROUP = $(W_GROUP)
    44 WRAPPER_MODE = 4755
    45 POSIX = -DPOSIX_UID=$(W_USER) -DPOSIX_GID=$(W_GROUP)
    46 # Otherwise, if your system is NOT POSIX (e.g. SunOS 4.x, SGI Irix 4,
    47 # HP DomainOS) then comment out the above four lines and uncomment
    48 # the following four lines.
    49 # WRAPPER_OWNER = $(W_USER)
    50 # WRAPPER_GROUP = $(W_GROUP)
    51 # WRAPPER_MODE = 6755
    52 # POSIX =
    53
    54 # Define this if the majordomo programs should *also* be run in the same
    55 # group as your MTA, usually sendmail. This is rarely needed, but some
    56 # MTAs require certain group memberships before allowing the message sende
    57 # to be set arbitrarily.
    58 # MAIL_GID = numeric_gid_of_MTA
    59
    60 # This is the environment that (along with LOGNAME and USER inherited from
    61 # the parent process, and without the leading "W_" in the variable names)
    62 # gets passed to processes run by "wrapper"
    63 W_SHELL = /bin/sh
    64 W_PATH = /bin:/usr/bin:/usr/ucb
    65 W_MAJORDOMO_CF = $(W_HOME)/majordomo.cf
    66
    67 # A directory for temp files..
    68 TMPDIR = /usr/tmp

    Для того чтобы привести работу Majordomo в соответствие с вашими требованиями, в листинге 18.2 следует изменить несколько строк. Так, в строке 16 задается местонахождение программы Perl, необходимой для работы Majordomo. Поскольку все сценарии Majordomo написаны именно на этом языке, то на сервере нужно установить Perl и указать программе Majordomo, откуда она сможет вызывать интерпретатор этого языка. Язык Perl является одним из наиболее популярных языков программирования для создания сценариев. Он написан Лэрри Уоллзом (Larry Walls) и включен в большинство дистрибутивов ОС Linux. В строке 19 описан компилятор GNU языка С — gcc, который также входит в большинство версий ОС Linux.

    Кроме компиляторов, нужно также указать, куда будет устанавливаться Majordomo. В строке 23 описан рабочий каталог home для программы Majordomo. Ни в коем случае не путайте его с рабочим каталогом пользователя majordomo. Это абсолютно разные каталоги. Они могли бы совместить свои функции в одном каталоге, но намного удобней, когда конфигурационные файлы и сценарии запуска находятся в разных каталогах. В качестве рабочего каталога в данном случае мы решили создать специальный каталог /usr/local/majordomo. Его нужно создавать, будучи пользователем root. Затем можно сменить владельца каталога на пользователя majordomo, воспользовавшись командой

    chown majordomo.daemon /usr/local/majordomo

    После этого вам придется заменить majordomo.daemon на пользователя и группу, от имени которых производилась установка программы Majordomo. Таким образом, в Makefile необходимо описать пользователя majordomo и группу daemon. В строках 30 и 31 описываются именно эти параметры программы Majordomo. Вы можете войти в систему под именем majordomo и с помощью команды id определить текущий идентификатор пользователя и группы. В приведенном примере идентификатор пользователя majordomo — 507, а идентификатор группы daemon — 2. Помните, что Makefile воспринимает только числовые значения и не может работать с текстовыми переменными.

    Создание и редактирование файла majordomo.cf

    Основной файл конфигурации majordomo.cf предназначен для управления работой программы Majordomo при ее установке. Для создания нового файла конфигурации нужно скопировать находящийся в каталоге majordomo-1.94.4 файл шаблона sample.cf в файл majordomo.cf в том же каталоге. В листинге 18.3 представлен пример готового файла majordomo.cf.

    1 #
    2 # A sample configuration file for majordomo. You must read through this
    3 # and edit it accordingly!
    4 #
    5
    6 # $whereami -- What machine am I running on?
    7 #
    8 $whereami = "smallorg.org";
    9
    10 # $whoami -- Who do users send requests to me as?
    11 #
    12 $whoami = "Majordomo\@$whereami";
    13
    14 # $whoami_owner -- Who is the owner of the above, in case of problems?
    15 #
    16 $whoami_owner = "Majordomo-Owner-\@$whereami";
    17
    18 # $homedir -- Where can I find my extra .pl files, like majordomo.pl?
    19 # the environment variable HOME is set by the wrapper
    20 #
    21 if ( defined $ENV{"HOME"}) {
    22 $homedir = $ENV{"HOME"};
    23 } else {
    24 $homedir = "/usr/local/majordomo";
    25 }
    26
    27 # $listdir -- Where are the mailing lists?
    28 #
    29 $listdir = "$homedir/lists";
    30
    31 # $digest_work_dir -- the parent directory for digest's queue area
    32 # Each list must have a subdirectory under this directory in order for
    33 # digest to work. E.G. The bblisa list wou.Ki use:
    34 # /usr/local/mail/digest/bblisa
    35 # as its directory.
    36 #
    37 $digest_work_dir = "/usr/local/mail/digest";
    38
    39 # $log - - Where do I write my log?
    40 #
    41 $log = "$homedir/Log";

    В файле majordomo.cf необходимо описать несколько переменных. Так, в строке 8 определяется переменная $whereami, в которой задается обратный адрес для возврата сообщения. Если программой sendmail на почтовом сервере используется преобразование адресов (маскарадинг), то в качестве обратного адреса выступает доменное имя, как показано в строке 8. В противном случае обратный адрес будет представлять собой полное имя хоста. В строках 12 и 16 на базе переменной $whereami описываются переменные $whoami и $whoami_owner. Их значения изменять не нужно.

    Переменная $homedir, описанная в строке 24, очень важна для работы программы Majordomo. Она должна указывать на рабочий каталог программы Majordomo, который указан в Makefile. Именно в этом каталоге Majordomo будет искать сценарии запуска на языке Perl при обработке сообщений из списка рассылки. В строке 29 описывается другая переменная — $listdir. В ней указывается, где программа Majordomo хранит информацию для списков рассылки. По умолчанию для этой цели используется подкаталог lists в рабочем каталоге Majordomo.

    В строке 37 описывается переменная $digest_work_dir. С ее помощью определяется местонахождение файлов дайджестов сообщений списков рассылки. Если планируется использовать дайджесты, то, возможно, потребуется изменить значение этой переменной и создать для хранения дайджестов отдельный подкаталог. Помните, что в самих файлах дайджестов содержатся все тексты сообщений, переданных за определенный период. Таким образом вам может понадобиться достаточно большое дисковое пространство, в зависимости от количества сообщений, проходящих по списку рассылки в определенный период времени. И последняя описанная в файле переменная — $log в строке 41. Программа Majordomo в файле отчета ведет учет всех операций, выполненных со списком рассылки,. Местоположение этого файла определяется переменной $log и может быть изменено в зависимости от требований вашего дистрибутива ОС Linux, например, на /var/log/majordomo.log.

    Применение утилиты GNU make при установке Majordomo

    После отладки файлов Makefile и majordomo.cf с помощью утилиты GNU вы можете приступить к созданию выполняемых файлов для Majordomo. Для этого выполните следующее.

  • Задайте команду make wrapper для проверки правильности работы программы распаковки wrapper.
  • С правами пользователя majordomo задайте make install для установки сценариев и выполняемых файлов в рабочий каталог Majordomo.
  • С правами пользователя root задайте make install-wrapper, чтобы установить программу wrapper с идентификатором root.
  • Теперь вы можете запустить программу wrapper и проверить правильность установки Majordomo. Для этого войдите в систему как обычный пользователь без каких-либо специальных полномочий и измените рабочий каталог программы Majordomo (в нашем случае /usr/local/majordomo ). Затем, находясь в этом каталоге, задайте команду:

    ./wrapper config-test

    С помощью этой команды запускается программа wrapper и производится тестирование конфигурации. В листинге 18.4 показан фрагмент сообщения, генерируемого программой wrapper.

    1 ---------------- end of tests -----------------------
    2
    3
    4 Nothing bad found! Majordomo _should_ work correctly.
    5
    6 If it doesn't, check your configuration file
    7 (/usr/local/majordomo/majordomo.cf)
    8 closely, and if it still looks okay, consider asking the majordomo-users
    9 mailing list at "majordomo-users@greatcircle.com" for assistance. Be sure
    10 and fully specify what your problems are, and what type of machine (and
    11 operating system) you are using.
    12
    13 Enjoy!

    В листинге 18.4 представлено несколько последних строк из сообщения, генерируемого при выполнении config-test. Как видите, приведенная нами конфигурации Majordomo успешно прошла тестирование.

    Создание псевдонимов для Majordomo

    Закончив установку программного пакета Majordomo, следует соответствующим образом сконфигурировать программу sendmail, чтобы она смогла распознавать списки рассылки. Программа Majordomo может обрабатывать списки рассылки с помощью файла aliases (см. подробнее о нем лекцию 17, "Почтовые псевдонимы и преобразование адресов"). Для типовой конфигурации Majordomo в файл /etc/aliases нужно добавить несколько строк, приведенных в листинге 18.5.

    1 # Majordomo aliases
    2 majordomo: "|/usr/local/majordomo/wrapper majordomo"
    3 owner-majordomo: rich,
    4 majordomo-owner: rich

    После внесения каких-либо изменений в файл aliases необходимо запускать программу newaliases, чтобы они были восприняты программой sendmail. В строке 2 листинга 18.5 представлен псевдоним majordomo, который указывает на программу wrapper с параметром majordomo. Таким образом программа sendmail инструктируется о запуске программы wrapper при приеме сообщения.

    Существует один секрет, используемый при запуске программы wrapper с помощью псевдонимов. Дело в том, что на некоторых системах в sendmail используется настройка smrsh, описанная в лекции 11. С ее помощью запуск программ из оболочки ограничивается одним специальным каталогом, владельцем которого является пользователь root. Если у вас эта настройка sendmail используется, то в ней также будет указан и каталог, куда следует помещать файлы программ, которые sendmail может запускать самостоятельно. В Mandrake Linux 6.0 это каталог /etc/smrsh. Если скопировать программу wrapper из ее рабочего каталога (в нашем случае это каталог /usr/local/majordomo/wrapper ) в каталог /etc/smrsh, то программа sendmail сможет запускать ее.

    В строках 3 и 4 описаны два псевдонима. Если, работая со списком рассылки, участник этого списка сталкивается с какими-либо проблемами, он может направить письмо его владельцу с просьбой о помощи, совете и т.п. Эти адреса указывают на реальный адрес электронной почты владельца списка рассылки.

    Тестирование правильности установки Majordomo

    Чтобы проверить, правильно ли установлена Majordomo, создайте тестовый список рассылки. Вначале создайте фиктивный файл списка рассылки в соответствующем каталоге Majordomo, согласно файлу конфигурации majordomo.cf. В нашем примере он должен находиться в каталоге /usr/local/majordomo/lists. Создать тестовый файл вы можете с помощью команды

    touch /usr/local/majordomo/lists/test

    Затем можно послать псевдониму majordomo команду 'lists'  — вам будет выдан список всех доступных в данный момент списков рассылки. В листинге 18.6 приведен пример такого тестирования.

    1 [rich@shadrach rich]$ echo 'lists' | mail -v majordomo
    2 majordomo... aliased to "|/usr/local/majordomo/wrapper majordomo"
    3 "|/usr/local/majordomo/wrapper majordomo"... Connecting to prog...
    4 "|/usr/local/majordomo/wrapper majordomo"... Sent
    5 [rich@shadrach rlch]$ mail
    6 Mail version 8.1 6/6/93. Type ? for help.
    7 "/var/spool/mail/pich": 1 message 1 new
    8 >N 1 Majordomo@smallorg.org Thu Nov 18 18:51 23/736 "Majordomo results"
    9 
    10 Message 1:
    11 From Majordomo-Owner@smallorg.org Thu Nov 18 18:51:35 1999
    12 Date: Thu, 18 Nov 1999 18:51:34 -0500
    13 X-Authentication-Warning: shadrach.smallorg.org: majordomo set sender to
    14 Majordomo-Owner@smallorg.org using -f
    15 To: rich@smallorg.org
    16 From: Majordomo@smallorg.org
    17 Subject: Majordomo results
    18 Reply-To: Majordomo@smallorg.org
    20 --
    21
    22 >>>> lists
    23 Majordomo@smallorg.org serves the following lists:
    24
    25 test
    26
    27 Use the 'info <list>' command to get more information
    28 about a specific list.
    29
    30 

    В строке 1 листинга 18.6 приведен пример использования команды 'lists' для Majordomo. Параметр командной строки -v позволяет запуск программы mail в режиме высокой детализации, при котором отображается каждое выполняемое действие. В строках 2–4 представлены события, происходящие с сообщением. В строке 2 показано, что программа sendmail обнаружила псевдоним. В строке 3 она попыталась соединиться с программой wrapper. И в строке 4 показано, что программа sendmail успешно передала сообщение программе wrapper. После того как сообщение в список рассылки отправлено, можно проверить почтовый ящик отправителя на предмет получения ответа от Majordomo. В строках 5–30 представлен ответ программы Majordomo на отправленное нами сообщение. Из него ясно, что на сервере списков рассылки в настоящее время доступен один список рассылки. Естественно, что это не совсем соответствует действительности, так как мы полностью не сконфигурировали списки рассылки.

    И последнее, в чем следует убедиться при проверке работы Majordomo, — занесены ли посланные команды в файл отчета. Для этого проверьте файл отчета Majordomo /usr/local/majordomo/log. В нем должна появиться такая строка:

    Nov 18 18:51:34 smallorg.org majordomo[28128] {Rich <rich@shadrach.smallorg.org>} lists

    В файле отчета фиксируется время, адрес электронной почты и введенная команда. Регулярно просматривая файл отчета, вы сможете выявить попытки несанкционированного использования сервера списков рассылки.

    Настройка Majordomo для работы со списками рассылки

    После установки программы Majordomo вы можете приступить к созданию различных списков рассылки. Для этого вначале необходимо создать пустой файл, в котором будут храниться адреса электронной почты участников списка рассылки. Имя этого файла должно совпадать с названием списка рассылки. Мы рассмотрим это на примере списка рассылки под названием officenews. После того как необходимый файл создан, следует убедиться в наличии правильного набора прав доступа к нему. Программа sendmail может не принимать для обработки список псевдонимов, группе которых разрешена запись в файл или в каталог, где они находятся. Ниже приведены команды для создания файла и изменения прав доступа:

    touch /usr/local/majordomo/lists/officenews
    chmod 755 /usr/local/majordomo/lists
    chmod 644 /usr/local/majordomo/lists/officenews

    Далее создайте для списка рассылки информационный файл. Программа Majordomo использует информационный файл списка рассылки для предоставления сведений о нем по требованию кого-либо из пользователей или при подписке на список рассылки. Информационный файл обычно создается в виде list.info, где list — имя списка рассылки. В нашем примере создается информационный файл списка рассылки /usr/local/majordomo/officenews.info, где содержится текстовое описание списка рассылки.

    Для каждого списка рассылки необходимо создавать несколько записей в файле aliases. Их количество зависит от функций, которые должен поддерживать тот или иной список рассылки. В табл. 18.1 приведены псевдонимы, которые могут использоваться для списка рассылки с именем list.

    Псевдонимы, используемые для списков рассылки Majordomo
    Псевдоним Описание
    list Псевдоним списка рассылки
    list-outgoing Реальный список для подписчиков
    owner-list Администратор списка рассылки
    list-request Адрес для специальных запросов Majordomo
    list-approval Персона, проверяющая содержание сообщений в модерируемых списках рассылки (модератор)
    list-digest Адрес для дайджестов списков рассылки
    list-digest-request Адрес для запросов на отправку дайджестов

    В листинге 18.7 приведен пример записей в файле aliases для списка рассылки officenews. Это список рассылки, стандартный без всяких излишеств. Он открытый и в нем не поддерживаются рассылка дайджестов и ведение архивов сообщений.

    1 #officenews mail list entries
    2 officenews: "|/usr/local/majordomo/wrapper resend -l officenews officenews-list"
    3 officenews-list: :include:/usr/local/majorodomo/lists/officenews
    4 owner-officenews: rich,
    5 officenews-owner: rich
    6 officenews-approval: officenews-owner
    7 officenews-request: "|/usr/local/majordomo/wrapper majordomo -l officenews"

    При добавлении новых псевдонимов не забывайте запускать программу newaliases с правами пользователя root. С этого момента список рассылки уже может функционировать, но его еще нужно настроить, чтобы он работал в соответствии с вашими требованиями. Вы можете создать файл конфигурации, отправив в список рассылки письмо с локального или удаленного почтового сервера. Программа Majordomo автоматически создаст файл конфигурации и отправит его в ответ на ваше письмо. В листинге 18.8 представлен пример такой операции и фрагмент возвращенного в ответ сообщения.

    1 [rich@shadrach rich]$ mail officenews-request
    2 Subject:
    3 config officenews officenews.admin
    4 .
    5 Cc:
    6 [rich@shadrach rich]$ mail
    7 Mail version 8.1 6/6/93. Type ? for help.
    8 "/var/spool/mail/rich" : 1 message 1 new
    9 >N 1 Majordomo@shadrach.s Thu Nov 18 16:25 400/16764 "Majordomo results"
    10 1
    11 From Majordomo-Owner@shadrach.smallorg.org Thu Nov 18 16:06:05 1999
    12 Return-Path: <Majordomo-Owner@shadrach.smallorg.org>
    13 Received: (from majordomo@localhost)
    14 by shadrach.smallorg.org (8.9.3/8.9.3) id QAA28433;
    15 Thu, 18 Nov 1999 19:06:05 -0500
    16 Date: Thu, 18 Nov 1999 19:06:05 -0500
    17 Message-Id: <199911182106.QAA28433@shadrach.smallorg.org>
    18 X-Authentication-Warning: shadrach.smallorg.org: majordomo set sender 
      to Majordomo-Owner@smallorg.org using -19 f
    20 To: rich@smallorg.org
    21 From: Majordomo@smallorg.org
    22 Subject: Majordomo results
    23 Reply-To: Majordomo@smallorg.org
    24 Status: R
    25
    26 --
    27
    28 >>>> config officenews officenews.admin
    29 admin_passwd = officenews.admin
    30 administrivia = yes
    31 advertise << END
    32 announcements = yes
    33 approve_passwd = officenews.pass
    34 archive_dir =
    35 comments << END
    36 date_info = yes
    37 date_intro = yes
    38 debug = no
    39 description =
    40 digest_archive =
    41 digest_issue = 1
    42 digest_maxdays =
    43 digest_maxlines =
    44 digest_name = officenews
    45 digest_rm_footer =
    46 digest_rm_fronter =
    47 digest_volume = 1
    48 digest_work_dir =
    49 get_access = list
    50 index_access = open
    51 info_access = open
    52 intro_access = list
    53 maxlength = 40000
    54 message_footer << END
    55 message_fronter << END
    56 message_headers << END
    57 moderate = no
    58 moderator =
    59 mungedomain = no
    60 noadvertise << END
    61 precedence = bulk
    62 purge_received = no
    63 reply_to =
    64 resend_host =
    65 restrict_post =
    66 sender = owner-officenews
    67 strip = yes
    68 subject_prefix =
    69 subscribe_policy = open+confirm
    70 taboo_body << END
    71 taboo_headers << END
    72 unsubscribe_policy = open
    73 welcome = yes
    74 which_access = open
    75 who_access = open

    В строке 1 листинга 18.8 вы видите, как владелец списка рассылки посылает почтовое сообщение на адрес officenews-request. Все команды списка рассылки будут пересылаться с приставкой к названию списка рассылки. Как правило, любое сообщение, посланное в список рассылки будет автоматически разослано всем его подписчикам. Однако в пакете Majordomo имеется специальная программа resend, с помощью которой вы можете просматривать содержимое сообщений и игнорировать те из них, которые содержат команды Majordomo и посланы в список рассылки по ошибке. Таким образом, подписчики списка рассылки не будут раздражаться, получая сообщения, содержащие команды типа subscribe и т.п.

    В строке 3 показан формат запроса файла конфигурации для списка рассылки. Третий параметр в этой строке представляет собой пароль администратора списка рассылки. По умолчанию пароль для любого из списков принят как list.admin, где list — имя списка рассылки. Получив такого рода сообщение, Majordomo посылает ответное, в текст которого включает созданный ею файл конфигурации. Файл конфигурации обычно хранится в каталоге lists в виде lists.config, где lists — имя списка рассылки.

    Далее в строках 29–75 показаны различные переменные файла конфигурации, которые можно изменять при необходимости. В листинге были опущены пояснительные комментарии к переменным файла конфигурации. Значения самих параметров вы можете узнать из реального файла конфигурации, где эти комментарии приводятся. Чтобы внести изменения в конфигурацию, нужно сохранить это сообщение, изменить нужный параметр и с помощью команды newconfig послать новый файл конфигурации в список рассылки. Первая строка в таким сообщении должна быть следующей:

    newconfig list adminpasswd,

    где list — имя списка рассылки, а adminpasswd — пароль администратора списка рассылки. За этой строкой далее следует обычный файл конфигурации с внесенными вами изменениями.

    В листинге 18.9 представлены переменные, которые чаще всего модифицируются в файле конфигурации.

    1 admin_passwd = newpassword
    2 approve_passwd = newpasswd
    3 description = A mail list used to distribute general office news
    4 subscribe_policy = open
    5 who_access = list

    Большинство других переменных в стандартных списках рассылки будут работать нормально со значениями, заданными по умолчанию. Не забывайте для нового списка рассылки менять пароль администратора. В строке 4 листинга 18.9 приведено также изменение типа подписки на список рассылки. По умолчанию задается тип подписки open+confirm (открытая с подтверждением). То есть участники списка рассылки при подписке на него должны подтвердить свой запрос на подписку, ответив на специальное сообщение от Majordomo. В нашем примере используется открытая подписка на список рассылки без подтверждения, что позволяет всем пользователям свободно на него подписываться. Если же по списку рассылки предполагается распространение важной для компании информации, составляющей коммерческую тайну и т.п., вы можете воспользоваться закрытым списком рассылки с утверждением каждого участника рассылки владельцем списка. В строке 5 вводится ограничение на выдачу команды 'who', с помощью которой отображается список участников рассылки. В данном случае этот круг ограничивается только активными членами списка рассылки. В листинге 18.10 представлены результаты попытки использования этой команды не членом списка рассылки.

    1 [melanie@shadrach melanie]$ echo 'who' | mail officenews-request
    2 [melanie@shadrach melanie]$ mail
    3 Mail version 8.1 6/6/93. Type ? for help.
    4 "/var/spool/mail/melanie"; 1 message 1 new
    5 >N 1 Majordomo@smallorg.o Thu Nov 20 16;40 20/744 "Majordomo results"
    6 
    7 Message 1:
    8 From Majordomo-Owner@smallorg.org Thu Nov 18 20:40:54 1999
    9 Date: Thu, 18 Nov 1999 20:40:53 -0500
    10 X-Authentication-Warning: shadrach.smallorg.org: majordomo set sender to
     Majordomo-Owner@smallorg.org using -f
    11 To: melanie@smallorg.org
    12 From: Majordomo@smallorg.org
    13 Subject: Majordomo results
    14 Reply-To: Majordomo@smallorg.org
    15
    16 --
    17
    18 >>>> who
    19 **** List 'officenews' is a private list.
    20 **** Only members of the list can do a 'who'.
    21 **** you [ Melanie <melanie@smallorg.org> ] aren't a member of list 'officenews'.
    22
    23 

    В строке 1 листинга 18.10 показано, как пользователь melanie посылает серверу списков рассылки команду 'who' с целью получения списка участников рассылки. В строках 18–21 вы видите ответ, полученный melanie от сервера. Как видите, эта команда может использоваться только членами списка рассылки, а melanie таковым не является. Поэтому сервер списка рассылки отказал ей в предоставлении списка пользователей закрытой рассылки.

    На этом мы заканчиваем рассмотрение установки и настройки программного пакета Majordomo, который реализует функции сервера списков рассылки. В следующем разделе мы рассмотрим использование сервера списков рассылки клиентами электронной почты.

    Применение Majordomo

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

    Для того чтобы стать членом списка рассылки, нужно послать запрос на подписку. Запросы на подписку посылаются с префиксом -request перед именем соответствующего списка рассылки. Поле Subject:(Тема:) программой Majordomo игнорируется, поэтому вы можете оставить его пустым. В теле сообщения можно указать лишь одну строку со словом subscribe. В зависимости от режима работы списка рассылки вы получите либо подтверждение о подписке, либо специальное сообщение, на которое вы должны будете ответить, чтобы подписка состоялась. В листинге 18.11 приведен пример сеанса подписки на список рассылки.

    1 [ rich@shadrach rich]$ mail officenews-request
    2 Subject:
    3 subscribe
    4 .
    5 Cc:
    6 [rich@shadrach rich]$ mail
    7 Mail version 8.1 6/6/93. Type ? for help.
    8 "/var/spool/mail/rich": 3 messages 3 new
    9 >N 1 Majordomo@smallorg.o Fri Nov 19 04:42 44/1625 "Welcome to officenews"
    10 N 2 Majordomo@smallorg.o Fri Nov 19 04:42 18/696 "SUBSCRIBE officenews "
    11 N 3 Majordomo@smallorg.o Fri Nov 19 04:42 18/613 "Majordomo results"
    12 
    13 Message 1 :
    14 From owner-officenews@smallorg.org Fri Nov 19 04:42:56 1999
    15 Date: Fri, 19 Nov 1999 04:42:56 -0500
    16 X-Authentication-Warning: shadrach.smallorg.org: majordomo set sender to 
      owner-officenews@smallorg.org using -f
    17 To: rich@smallorg.org
    18 From: Majordomo@smallorg.org
    19 Subject: Welcome to officenews
    20 Reply-To: Majordomo@smallorg.org
    21
    22 --
    23
    24 Welcome to the officenews mailing list!
    25
    26 Please save this message for future reference. Thank you.
    27
    28 If you ever want to remove yourself from this mailing list,
    29 you can send mail to <Majordomo@smallorg.org> with the following
    30 command in the body of your email message:
    31
    32 unsubscribe officenews
    33
    34 or from another account, besides rich@smallorg.org:
    35
    36 unsubscribe officenews rich@smallorg.org
    37
    38 If you ever need to get in contact with the owner of the list,
    39 (if you have trouble unsubscribing, or have questions about the
    40 list itself) send email to <owner-officenews@smallorg.org> .
    41 This is the general rule for most mailing lists when you need
    42 to contact a human.
    43
    44 Here's the general information for the list you've subscribed to,
    45 in case you don't already have it:
    46
    47 Welcome to the smallorg.org officenews mail list.
    48
    49 This mail list is used to help keep you informed about general informatic
    50 that is happening in the organization. Please post any announcements to
    51 this mail list. Unauthorized use of this mail list is prohibited.
    52
    53 

    В строках 1–5 листинга 18.11 вы видите, как пользователь rich посылает запрос на подписку на псевдоадрес officenews-request. Пользователи могут также направлять запросы и на псевдоним majordomo, но желательно, чтобы команда предварялась именем списка рассылки, тогда программа Majordomo сможет определить, к какому из списков рассылки она относится. Почтовые сообщения, посланные в ответ на команду, представлены в строках 6–11. В строке 11 представлено сообщение, отправленное программой Majordomo в ответ на запрос о подписке. В строке 10 вы видите сообщение, которое направляется владельцу списка рассылки (которым, кстати, может быть и сам rich ). В нем сообщается о том, что на данный список рассылки был подписан новый пользователь. В строке 9 представлено возвращаемое пользователю сообщение, в котором подтверждается его членство в списке рассылки. В строках 13–53 полностью приведен текст этого сообщения. Обратите внимание, что в строках 28–36 даются подробные инструкции о механизме отказа от подписки. В строках 47–51 представлен текст из файла officenews.info, который был создан для этого списка рассылки.

    Команды пользователя списка рассылки

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

    Команда subscribe

    Как видно из листинга 18.11, команда subscribe позволяет новым членам списка рассылки посылать запрос на подписку. Формат этой команды следующий:

    subscribe <list> [<address>],

    где list — имя списка рассылки, а address — адрес электронной почты, который вы хотите добавить в список рассылки. Если же сообщение с требованием о подписке посылается на псевдоним list-request, то параметр list в этой команде можно опустить. Можно также не указывать адрес электронной почты ( address ), включаемый в список рассылки, если вы хотите, чтобы подписка была оформлена на адрес, с которого отправлен запрос на подписку. Параметр адреса электронной почты включен в команду subscribe для обеспечения возможности подписки с любого адреса. Результаты подписки будут зависеть лишь от организации подписки в данном списке рассылки.

    Команда unsubscribe

    Команда выполняет действия, обратные команде subcribe. По этой команде адрес электронной почты исключается из списка рассылки. Формат команды:

    unsubscribe <list> [<address>],

    где, как и в предыдущей команде, параметры list и address являются необязательными.

    Команда get

    Команда get используется для получения файлов через список рассылки. Формат использования этой команды следующий:

    get <list> filename,

    где filename — файл, который находится в списке рассылки. Чаще всего эта команда используется при работе с архивами списков рассылки. Член списка рассылки может получить файл архива с помощью команды get, указав имя архива.

    Команда index

    Команда index используется для выдачи списка файлов, доступных через список рассылки. Формат этой команды следующий:

    index <list>

    Команда index используется обычно вместе с командой get при работе с архивами списков рассылки. По этой команде выдается список файлов архивов, которые можно запросить через список рассылки.

    Команда which

    С помощью команды which можно определить в какие списки рассылки на сервере Majordomo входит указанный адрес электронной почты. Формат этой команды следующий:

    which [<address>]

    Если возникает необходимость получить информацию об адресе электронной почты, с которого посылается запрос, то параметр address можно не указывать. По этой команде Majordomo выдает перечень всех списков рассылки, в которых содержится указанный адрес электронной почты.

    Команда who

    Команда who используется для получения информации об активных подписчиках указанного списка рассылки. Ее формат таков:

    who <list>

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

    Команда info

    Команда info позволяет получить общие сведения о списке рассылки. Формат команды:

    info <list>

    Сведения о списке рассылки берутся из файла list.info, который находится в каталоге lists.

    Команда intro

    Команда intro применяется для выдачи текстового сообщения, которое направляется новым членам списка рассылки. Формат этой команды:

    intro <list>

    Команда lists

    Команда lists применяется для выдачи перечня всех доступных на сервере Majordomo списков рассылки. Формат команды следующий:

    lists

    Команда help

    Команда help позволяет получить список всех доступных для пользователя команд Majordomo.

    Команда end

    Команда end используется для указания Majordomo прекратить обработку команд в сообщениях. Эта команда применяется главным образом при появлении дополнительного текста в конце почтового сообщения (например, при использовании почтовой программы, генерирующей блок подписи в нижней части сообщения). Команда end задается в отдельной строке в конце сообщения, содержащего команды.

    Команды владельца списка рассылки

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

    Команда approve

    Команда approve используется только в закрытых списках рассылки для подтверждения подписки от новых членов списка рассылки. Формат команды:

    approve password
    subscribe/unsubscribesubscribe/unsubscribe
    <list> <address>,

    где password — пароль администратора списка рассылки, subscribe/unsubscribesubscribe/unsubscribe — действие, требующее подтверждения, list — имя списка рассылки и address — адрес электронной почты, который должен быть подтвержден.

    Команда config

    Команда config используется для получения копии файла конфигурации списка рассылки list.config. Формат этой команды следующий:

    config <list> password

    Команда mkdigest

    С помощью команды mkdigest создаются дайджесты списков рассылки. Дайджесты можно создавать по мере необходимости, их количество не ограничено и зависит лишь от наличия свободного дискового пространства на сервере. Формат этой команды следующий:

    mkdigest <list> password

    Если список рассылки создает большой трафик в сети, то целесообразно более часто создавать дайджесты списка рассылки (например, несколько раз в день). Команда mkdigest заставляет Majordomo создавать новый дайджест.

    Команда newconfig

    Команда newconfig применяется для создания нового файла конфигурации списка рассылки с заданными параметрами. Формат команды следующий:

    newconfig <list> password

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

    Команда newinfo

    Команда newinfo используется для внесения изменений по электронной почте в файл list.info. Формат этой команды таков:

    newinfo <list> password

    За командой newinfo должен следовать новый информационный файл. Программа Majordomo при его получении заменит старый файл list.info на новый. Это еще одна полезная функция для удаленного администрирования.

    Команда passwd

    Команда passwd применяется для изменения пароля. Формат команды passwd следующий:

    passwd <list> old-passwd new-passwd

    Эта команда может ввести вас в заблуждение. Дело в том, что обычно пароль списка рассылки хранится в файле list.conf, который можно изменить с помощью команды newconfig. Если же вы не хотите посылать новый файл конфигурации, то в качестве альтернативы можете использовать команду passwd, с помощью которой изменяется только пароль. Однако эта команда не изменяет пароль, содержащийся в файле конфигурации. Создается лишь новый файл list.passwd, где и хранится новый пароль. Если же пароль в файле конфигурации не совпадает с новым паролем в этом файле, то они оба считаются равноправными и принимаются списком рассылки.

    Команда writeconfig

    Команда writeconfig используется для переформатирования существующего файла конфигурации в исходный формат. Формат этой команды следующий:

    writeconfig <list> password

    Эта команда применяется в тех случаях, когда файл конфигурации безнадежно испорчен и его не удалось восстановить другими средствами. Иногда это бывает при ошибочном применении команды newconfig. С помощью команды writeconfig предпринимается попытка восстановить исходный формат файла конфигурации списка рассылки.

    Резюме

    Одна из дополнительных функций почтовый серверов — ведение списков рассылки. Списки рассылки могут обслуживать большое количество пользователей, доставляя им одновременно одинаковые сообщения. Для платформы Linux существует программный пакет Majordomo, в котором реализованы функции сервера списков рассылки. Программа Majordomo может обслуживать на одном почтовом сервере несколько списков рассылки. Списки рассылки могут быть открытыми немодерируемыми или закрытыми (с ограничениями подписки). Для облегчения работы в списках рассылки предусмотрено формирование дайджестов (кратких подборок сообщений за определенный интервал времени) и архивов сообщений. Программа Majordomo также предоставляет возможности удаленного управления списками рассылки, поэтому владелец списка рассылки не нуждается в учетной записи непосредственно на сервере списков рассылки. Команды пользователей списков рассылки достаточно просты; с их помощью можно осуществить подписку, оформить отказ от подписки и послать сообщения в список рассылки без какой-либо специальной подготовки.

    Вернуться к учебному плану