Mailman2mlmmj

Материал из ALT Linux Wiki
Версия от 00:42, 29 мая 2009; Bga (обсуждение | вклад) (Таблица соответствия настроек)
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)

Сравнение почтовых рассылок mailman и mlmmj с целью миграции.

Компиляция и установка

Пакеты mailman и mlmmj есть (или будут) в дистрибутивах ALT Linux и прочих вендоров. Устанавливаются из их репозитариев.

Настройка

Какие изменения требуется внести в конфигурацию системы.

mailman

  1. Завести пользователя mailman в группе mailman.
  2. Запустить службу mailman и включить автозапуск (chkconfig).
  3. Для Postfix добавить в /etc/postfix/main.cf
    alias_maps = cdb:/etc/mailman/aliases
    virtual_maps = cdb:/etc/mailman/virtual-mailman
  4. Добавить нужные системные группы в список почтовых и веб-групп
    echo apache >> /etc/mailman/mail.groups
    echo apache >> /etc/mailman/cgi.groups
  5. Для Apache добавить настройки CGI-интерфейса
    Include conf/addon-modules.d/mailman.conf
  6. Включить локальных администраторов в группу mailman.
  7. Внести обще-системные настройки в файл /etc/mailman/mm_config.py.

mlmmj

  1. Для Postfix добавить в /etc/postfix/main.cf
    recipient_delimiter = +
    или другой разделитель, который будет использоваться.

Создание списка рассылки

mailman

  • Можно добавлять списки через веб-интерфейс, зная пароль созидателя рассылок (см. mmsitepass -c)
  • или из консоли:
/usr/share/mailman/bin/newlist -l ru listname admin@domain.tld

Будут созданы директории

  • /var/lib/mailman/lists/listname/
  • /var/lib/mailman/archives/private/listname/
  • /var/lib/mailman/archives/private/listname.mbox/
  • /var/lib/mailman/archives/public/listname/

Почтовые алиасы будут созданы автоматически (в ALT Linux, по крайней мере) и сервер уведомлён.

mlmmj

  1. Запустить в консоли
    mlmmj-make-ml.sh -c -a -L listname
    Этот скрипт создаст директорию /var/spool/mlmmj/listname с конфигами.
  2. Добавить в файл алиасов строку
    listname: "|/usr/bin/mlmmj-recieve -L /var/spool/mlmmj/listname"
  3. Запустить newaliases

Обработка почты

И в mailman, и в mlmmj обработкой входящих писем занимаются утилиты, указанные в качестве почтовых алиасов (псевдонимов) в системных конфигах (см. выше).

mailman

Ошибками доставки, запросами на подписку и прочим занимаются обработчики очереди, запускаемые службой mailman или вручную, например, из monit.

mlmmj

В mlmmj для этих целей используется mlmmj-maintd, запускаемый из cron

0 */2 * * *  /usr/bin/mlmmj-maintd -F -L /var/spool/mlmmj/listname

или

0 */2 * * *  /usr/bin/mlmmj-maintd -F -d /var/spool/mlmmj

или в качестве демона (без ключа -F).

Архивация писем на сайте

mailman

Входящие письма конвертируются в связный веб-архив одним из обработчиков очереди (ArchRunner) путём вызова утилиты /usr/share/mailman/bin/arch. Обработчики запускаются службой mailman или вручную, например, из monit.

mlmmj

Для архивации используются независимые программы.

Подписка

Осуществляется абонентами самостоятельно через веб-интерфейс или почтовый запрос.

mailman

Администратор может подписать/отписать группу пользователей через веб-интерфейс или утилитами add_members / remove_members.

mlmmj

Администратором используются утилиты mlmmj-sub и mlmmj-unsub.

Настройка списка

mailman

Имеется богатый веб-интерфейс и возможность импорта-экспорта настроек в текстовый файл (см. config_list).

mlmmj

Настройки хранятся в файлах /var/spool/mlmmj/listname/*. Правила фильтрации по заголовкам — в файле control/access. Имеется веб-интерфейс администратора на perl и php, но, вероятно, неполный. Совместимость с mailman требует изучения и систематизации.

Синонимы настроек

Таблица соответствия

mlmmj mailman Описание
access, подробнее header_filter_rules, bounce_matching_headers Фильтрация почты по заголовкам
addtohdr Добавить заголовок To: <адрес получателя>
bouncelife (432000 сек. — 5 дней) bounce_score_threshold (5 дней) Допустимый период получения bounce, после которого адресат будет отписан
closedlist subscribe_policy, unsubscribe_policy Разрешена ли авто-подписка и отписка по почте
closedlistsub subscribe_policy Разрешена ли авто-подписка по почте (отписка разрешена)
customheaders include_rfc2369_headers, include_list_post_header, reply_goes_to_list/reply_to_address Дополнительные заголовки
delheaders first_strip_reply_to Удаление заголовков
delimiter Служебный разделитель в адресе
digestinterval (604800 сек. — 7 дней) digest_send_periodic (1 день) Интервал между дайджестами
digestmaxmails (50) digest_size_threshhold (30 Кб) Количество сообщений в дайджесте
listaddress acceptable_aliases Адреса-псевдонимы
maxmailsize max_message_size Максимальный размер письма
maxverprecips (100) Отправлять письма на сервер пачками по столько
memorymailsize (16384 байт) Максимальный размер письма в памяти перед отправкой
moderated emergency, default_member_moderation Пре-модерирование списка (удержание писем)
modnonsubposts generic_nonmember_action Удерживать письма от не-подписчиков
noaccessdenymails Не отправлять уведомления об удержании писем
noarchive archive Не архивировать почту
nodigestsub digestable Запретить подписку на дайджест
nodigesttext Не включать в дайджест текстовое описание
noget Запретить запросы старых писем
nomaxmailsizedenymails Не отправлять уведомления о превышении размера
nonomailsub Запретить подписку без доставки
nosubconfirm Подписывать без подтверждения (осторожно!)
nosubonlydenymails Не отправлять уведомление об удержании не-подписчикам
notifysub admin_notify_mchanges Уведомить владельца списка о новом подписчике
notoccdenymails Не отправлять уведомление о том, что адрес списка не совпадает
owner owner Адреса владельцев списка (администраторов)
prefix subject_prefix Префикс, вставляемый в тему письма
relayhost (127.0.0.1) host_name Адрес почтового сервера
smtpport (25) Порт почтового сервера
submod subscribe_policy Контроллировать подписку
subonlyget Разрешить повторы старых писем только подписчикам
subonlypost generic_nonmember_action Разрешить отправлять письма только подписчикам
tocc Принимать письма, даже если адрес списка отсутствует в To: или Cc:
verp Использовать VERP