Я использую систему Mailman среднего размера, в которой недавно возникла проблема, когда любые сообщения, прошедшие модерацию, исчезают, а не доставляются в список рассылки. Это влияет каждый один из наших списков рассылки.
Модерация не выполняется при выполнении на отдельном веб-сервере
Среда Mailman разделена на два сервера: интерфейсный и внутренний. Внутренний сервер обрабатывает Postfix и qrunners Mailman, в то время как внешний сервер размещает сценарии Apache и Mailman CGI для модерирования списков. Два сервера используют монтирование NFS, которое включает в себя все общие данные Mailman.
Весь нормальный почтовый поток работает правильно, но когда модератор списка входит в веб-интерфейс и утверждает сообщение, оно исчезает без следа.
/usr/lib/mailman/mail/mailman
.vette
файл журнала (внутренний сервер), сообщение хранится для утверждения.vette
файл журнала (на внешнем сервере), в котором говорится, что сообщение одобрено.На этом этапе файл .pck, связанный с задержанным сообщением, исчезает, но ничего не доставляется, и дальнейшие записи журнала не создаются.
Модерация прошла успешно с веб-интерфейсом на главном сервере Mailman
Хотя мы обычно не запускаем веб-интерфейс Mailman на внутреннем сервере (чтобы уменьшить поверхность для атак), я запустил его в целях тестирования. Когда мы используем веб-интерфейс Mailman на внутреннем сервере, сообщение доставляется нормально, и мы видим эти записи журнала.
smtp
файл журнала обновлен с указанием количества получателей и времени для завершенияpost
файл журнала обновлен с указанием имени списка, идентификатора сообщения и «успеха».Задний план
Проблема началась после переноса среды Mailman на новые серверы. Это не произошло само по себе, скорее всего, это результат какой-то ошибки конфигурации, которую мы еще не обнаружили. Мы используем:
type=AVC
записываются. Кроме того, используя setenforce 0
не решает проблему.Я нашел один связанная запись в списке пользователей Mailman, но решения не было.
При использовании более одного сервера для Mailman каждый сервер должен иметь доступ к каталогам очередей в общем хранилище. Вот и все.
Это то, что я рекомендую, если у вас есть отдельный сервер, обслуживающий веб-интерфейс Mailman.
ДОЛЖЕН находиться в общем хранилище
queue_dir
, inqueue_dir
, outqueue_dir
, cmdqueue_dir
, bouncequeue_dir
, newsqueue_dir
, archqueue_dir
, shuntqueue_dir
, virginqueue_dir
, badqueue_dir
, retryqueue_dir
, maildir_dir
Ваши файлы очереди должны быть доступны любому серверу, на котором выполняются задачи Mailman, включая интерфейсный веб-сервер.
DATA_DIR
, LIST_DATA_DIR
Помимо почтовых очередей, вам также необходимо предоставить общий доступ ко всем файлам конфигурации списка и файлам сообщений.
PUBLIC_ARCHIVE_FILE_DIR
, PRIVATE_ARCHIVE_FILE_DIR
Если вы используете списки архивов, вам также необходимо предоставить общий доступ к каталогам архивов.
ДОЛЖЕН находиться в общем хранилище
LOCK_DIR
, PID_DIR
, PIDFILE
Я не совсем уверен, но похоже, что блокировки и pid-файлы должны быть расположены в общем хранилище, чтобы в случае чего-то плохого с сервером qrunner было очевидно, что процессы завершились ненормально.
SITE_PW_FILE
, LISTCREATOR_PW_FILE
Вероятно, вы хотите, чтобы ваши файлы паролей находились в общем хранилище, чтобы вы могли быть уверены, что ваш пароль главного списка работает независимо от того, на каком сервере вы находитесь.
CONFIG_DIR
Если вы используете MTA=Postfix
, Mailman автоматически создаст файл псевдонимов в CONFIG_DIR. Поскольку любую машину с Mailman можно использовать для создания или удаления списков, каждая машина также должна иметь возможность правильно обновлять файл общих псевдонимов. (Caveat Emptor: иногда вы хотите настроить Mailman немного по-разному на каждой машине, что может быть сложно с общим CONFIG_DIR.)
МОЖЕТ находиться в общем хранилище
LOG_DIR
В зависимости от ваших предпочтений вы можете оставить эти каталоги локальными или разместить их в общем хранилище. Мне нравится, когда все мои журналы хранятся в одном центральном месте, для которого выполняется резервное копирование, так что у меня все еще есть старые журналы, доступные после миграции процессов на новый сервер.
TEMPLATE_DIR
Если вы вообще настроили свои шаблоны Mailman (например, рикошеты), вы, вероятно, захотите также разместить их в общем хранилище.
SPAM_DIR
Я не знаю, для чего на самом деле используется SPAM_DIR, но рекомендуется, чтобы все файлы переменных находились в общем хранилище, поэтому я включаю это здесь.
Только локальное хранилище
WRAPPER_DIR
, BIN_DIR
, SCRIPTS_DIR
, MESSAGES_DIR
Очень хорошая идея - хранить двоичные файлы и сценарии локально, чтобы вы могли использовать пакеты, предоставляемые вашей операционной системой, для обновлений, не беспокоясь о синхронизации общих двоичных файлов. Mailman, похоже, очень внимательно относится к тому, чтобы одна и та же версия работала на любом сервере, который связан с общим хранилищем.(Отредактировано 4 сентября 2013 г.) Следующее руководство было предоставлено Марком Сапиро в рассылке Mailman-Users.
Я бы посоветовал стандартному GNU Mailman поделиться всеми изменяемыми данными, которые есть в var_prefix, который представляет собой все каталоги archives /, data /, lists /, locks /, logs /, qfiles / и spam /, однако у вас есть Пакет Scientific Linux (производная от Red Hat), см. FAQ по адресу http://wiki.list.org/x/KYCB чтобы узнать, как они соотносятся с вашей установкой.
На сайте есть FAQ http://wiki.list.org/x/wgB0 это в некоторой степени решает эту проблему. Возможно, потребуются некоторые дополнения. Смотрите все ссылки.
(Отредактировано 4 сентября 2013 г.) На самом деле каталог config должен быть общим, а не локальным.
Марк Сапиро написал на Mailman-users 03 декабря 2013 г .:
http://www.mail-archive.com/mailman-users@python.org/msg63365.html
«Mailman 2.1.12 несовместим с Python 2.6+. Это было исправлено в версии 2.1.13».
Эта конкретная проблема была исправлена этим патчем:
(Я не включаю патч сюда, так как форматирование может быть повреждено.)