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, т.е. письма на список рассылки должны быть отправлены на адрес
Поскольку ваше имя хоста будет другим, пожалуйста, скорректируйте этот учебник соответственно. Также убедитесь, что ваше имя хоста существует в 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 немного отличается, хотя выглядит довольно похоже):
| [...] |
Предпоследняя строка 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 restart3.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 startroot@server1:~# /etc/init.d/mailman start
Запуск Mailman master qrunner: mailmanctl.
root@server1:~#
Get new posts in your inbox
No spam. Unsubscribe anytime.