Mailing List · 5 min read · Sep 09, 2025

Как установить и настроить Mailman (с Postfix) на Debian Squeeze

Как установить и настроить Mailman (с Postfix) на Debian Squeeze

Версия 1.0
Автор: Фалко Тимме
Следите за мной в Twitter

Mailman — это менеджер списков рассылки с открытым исходным кодом, т.е. его можно использовать для управления электронными дискуссиями и списками новостных рассылок. Это, вероятно, самый популярный и широко используемый менеджер списков рассылки в Интернете. Этот учебник объясняет, как установить и настроить Mailman на сервере Debian Squeeze с почтовым сервером Postfix.

Я не даю никаких гарантий, что это сработает для вас!

1 Предварительная заметка

В этом учебнике я настрою виртуальный хост с именем lists.example.com, на котором я установлю Mailman. lists.example.com также является правой частью адресов электронной почты списков рассылки, которые будут настроены в Mailman, т.е. письма на список рассылки должны быть отправлены на адрес @lists.example.com.

Поскольку ваше имя хоста будет другим, пожалуйста, скорректируйте этот учебник соответственно. Также убедитесь, что ваше имя хоста существует в DNS.

Mailman можно использовать с многими почтовыми серверами (например, Postfix, Exim, Sendmail, Qmail). Я буду использовать Postfix в этом учебнике. Убедитесь, что у вас есть рабочая установка Postfix, например, как показано в этом учебнике: Виртуальные пользователи и домены с Postfix, Courier, MySQL и SquirrelMail (Debian Squeeze)

2 Установка Mailman и Apache

Поскольку Mailman поставляется с веб-интерфейсом, нам нужен веб-сервер в дополнение к Mailman. Я выбираю Apache. Mailman и Apache можно установить следующим образом:

apt-get install mailman apache2

Вы увидите следующие вопросы/сообщения:

Языки для поддержки: <– en (English)
Отсутствует список сайтов
Mailman нуждается в так называемом “списке сайтов”, который является списком, из которого отправляются напоминания о паролях и т.д. Этот список необходимо создать перед тем, как Mailman начнет работать. Чтобы создать список, выполните “newlist mailman” и следуйте инструкциям на экране. Обратите внимание, что вам также нужно будет запустить Mailman после этого, используя /etc/init.d/mailman start. <– Ok

Mailman поставляется с конфигурационным файлом Apache, /etc/mailman/apache.conf, который мы копируем в /etc/apache2/sites-available/mailman.conf:

cp /etc/mailman/apache.conf /etc/apache2/sites-available/mailman.conf

Откройте /etc/apache2/sites-available/mailman.conf…

vi /etc/apache2/sites-available/mailman.conf

… и добавьте следующую конфигурацию vhost в файл (в файле уже есть vhost для lists.example.net, который закомментирован - пожалуйста, не используйте этот vhost, так как моя конфигурация vhost немного отличается, хотя выглядит довольно похоже):

| [...] ServerName lists.example.com DocumentRoot /var/www/lists ErrorLog /var/log/apache2/lists-error.log CustomLog /var/log/apache2/lists-access.log combined Options FollowSymLinks AllowOverride None Alias /pipermail/ /var/lib/mailman/archives/public/ Alias /images/mailman/ /usr/share/images/mailman/ ScriptAlias /admin /usr/lib/cgi-bin/mailman/admin ScriptAlias /admindb /usr/lib/cgi-bin/mailman/admindb ScriptAlias /confirm /usr/lib/cgi-bin/mailman/confirm ScriptAlias /create /usr/lib/cgi-bin/mailman/create ScriptAlias /edithtml /usr/lib/cgi-bin/mailman/edithtml ScriptAlias /listinfo /usr/lib/cgi-bin/mailman/listinfo ScriptAlias /options /usr/lib/cgi-bin/mailman/options ScriptAlias /private /usr/lib/cgi-bin/mailman/private ScriptAlias /rmlist /usr/lib/cgi-bin/mailman/rmlist ScriptAlias /roster /usr/lib/cgi-bin/mailman/roster ScriptAlias /subscribe /usr/lib/cgi-bin/mailman/subscribe ScriptAlias /mailman/ /usr/lib/cgi-bin/mailman/ ScriptAlias / /usr/lib/cgi-bin/mailman/listinfo |

Предпоследняя строка ScriptAlias / /usr/lib/cgi-bin/mailman/listinfo является необязательной; она делает так, что когда вы переходите на http://lists.example.com/, вы будете перенаправлены на http://lists.example.com/listinfo. Это имеет смысл, если у вас нет файлов для обслуживания в корневом каталоге документа /var/www/lists.

Далее создайте корневой каталог документа /var/www/lists, включите конфигурацию vhost для lists.example.com и перезапустите Apache:

mkdir /var/www/lists
a2ensite mailman.conf
/etc/init.d/apache2 restart

Поскольку мы используем vhost здесь (lists.example.com), нам нужно скорректировать следующие переменные в /etc/mailman/mm_cfg.py:

vi /etc/mailman/mm_cfg.py

| [...] DEFAULT_URL_PATTERN = 'http://%s/' [...] DEFAULT_EMAIL_HOST = 'lists.example.com' [...] DEFAULT_URL_HOST = 'lists.example.com' [...] |

3 Настройка Postfix

Теперь нам нужно настроить Postfix. Сначала выполните:

postconf -e ‘relay_domains = lists.example.com’
postconf -e ‘mailman_destination_recipient_limit = 1’

Затем откройте /etc/postfix/master.cf…

vi /etc/postfix/master.cf

… и убедитесь, что у вас есть следующие строки в нем (они должны быть там по умолчанию):

| [...] mailman unix - n n - - pipe flags=FR user=list argv=/usr/lib/mailman/bin/postfix-to-mailman.py ${nexthop} ${user} [...] |

Далее мы должны связать домен lists.example.com с транспортом mailman. Как это сделать, зависит от вашей конфигурации Postfix. Например, если вы настроили свой сервер в соответствии с учебником Виртуальные пользователи и домены с Postfix, Courier, MySQL и SquirrelMail (Debian Squeeze), транспорты хранятся в базе данных MySQL; в большинстве других настроек файл /etc/postfix/transport используется для создания транспортов. Я собираюсь описать оба случая в главах 3.1 и 3.2.

3.1 Транспорты в базе данных MySQL

Если вы настроили свой сервер в соответствии с учебником Виртуальные пользователи и домены с Postfix, Courier, MySQL и SquirrelMail (Debian Squeeze), транспорты хранятся в таблице transport в базе данных mail MySQL. Чтобы создать необходимый транспорт, войдите в MySQL…

mysql -u root -p

… и выполните следующие команды MySQL:

USE mail;
INSERT INTO transport (domain, transport) VALUES (‘lists.example.com’, ‘mailman:’);
quit;

Перезапустите Postfix после этого:

/etc/init.d/postfix restart

3.2 Транспорты в /etc/postfix/transport

Если у вас нет вашего транспорта в базе данных MySQL, вы, вероятно, используете файл /etc/postfix/transport. В этом случае вы можете настроить необходимый транспорт следующим образом:

postconf -e 'transport_maps = hash:/etc/postfix/transport'

Откройте /etc/postfix/transport…

vi /etc/postfix/transport

… и добавьте следующую строку:

| lists.example.com mailman: |

Запустите

postmap -v /etc/postfix/transport

после этого и перезапустите Postfix:

/etc/init.d/postfix restart   

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

Прежде чем мы сможем начать использовать Mailman, мы должны создать список рассылки под названием mailman; это обязательно - без него Mailman не запустится:

newlist --urlhost=lists.example.com --emailhost=lists.example.com mailman

В большинстве случаев переключатели –urlhost и –emailhost не нужны, потому что наш vhost уже называется lists.example.com, и мы также имеем его в /etc/mailman/mm_cfg.py (DEFAULT_EMAIL_HOST и DEFAULT_URL_HOST), но если вы хотите быть уверены, что Mailman использует правильное имя хоста, используйте эти переключатели.

root@server1:~# newlist –urlhost=lists.example.com –emailhost=lists.example.com mailman
Введите электронную почту человека, управляющего списком: <– укажите адрес электронной почты администратора списка, например, [email protected]
Первоначальный пароль mailman: <– mailman_password
Чтобы завершить создание вашего списка рассылки, вам нужно отредактировать ваш файл /etc/aliases (или эквивалентный), добавив следующие строки, и, возможно, запустить программу newaliases:

список рассылки mailman

mailman: “|/var/lib/mailman/mail/mailman post mailman”
mailman-admin: “|/var/lib/mailman/mail/mailman admin mailman”
mailman-bounces: “|/var/lib/mailman/mail/mailman bounces mailman”
mailman-confirm: “|/var/lib/mailman/mail/mailman confirm mailman”
mailman-join: “|/var/lib/mailman/mail/mailman join mailman”
mailman-leave: “|/var/lib/mailman/mail/mailman leave mailman”
mailman-owner: “|/var/lib/mailman/mail/mailman owner mailman”
mailman-request: “|/var/lib/mailman/mail/mailman request mailman”
mailman-subscribe: “|/var/lib/mailman/mail/mailman subscribe mailman”
mailman-unsubscribe: “|/var/lib/mailman/mail/mailman unsubscribe mailman”

Нажмите enter, чтобы уведомить владельца mailman… <– ENTER

root@server1:~#

Теперь откройте /etc/aliases и добавьте алиасы, которые вы видите в выводе команды newlist (это нужно сделать вручную для каждого нового списка, который вы создаете):

vi /etc/aliases

| [...] ## список рассылки mailman mailman: "|/var/lib/mailman/mail/mailman post mailman" mailman-admin: "|/var/lib/mailman/mail/mailman admin mailman" mailman-bounces: "|/var/lib/mailman/mail/mailman bounces mailman" mailman-confirm: "|/var/lib/mailman/mail/mailman confirm mailman" mailman-join: "|/var/lib/mailman/mail/mailman join mailman" mailman-leave: "|/var/lib/mailman/mail/mailman leave mailman" mailman-owner: "|/var/lib/mailman/mail/mailman owner mailman" mailman-request: "|/var/lib/mailman/mail/mailman request mailman" mailman-subscribe: "|/var/lib/mailman/mail/mailman subscribe mailman" mailman-unsubscribe: "|/var/lib/mailman/mail/mailman unsubscribe mailman" |

Каждый раз, когда вы изменяете /etc/aliases, вам нужно запустить

newaliases
/etc/init.d/postfix restart

после этого.

Теперь мы наконец можем запустить Mailman:

/etc/init.d/mailman start

root@server1:~# /etc/init.d/mailman start
Запуск Mailman master qrunner: mailmanctl.
root@server1:~#

Share: X/Twitter LinkedIn

Get new posts in your inbox

No spam. Unsubscribe anytime.