Установка ПО · 7 min read · Sep 26, 2025

Установка iRedMail и Mailman на Debian Squeeze

Установка iRedMail и Mailman на Debian Squeeze

Версия: 1
Автор: Джейсон Норвуд-Янг
Последнее редактирование: 22 декабря 2011

Я большой поклонник iRedMail, который по сути является упакованной версией Postfix и других компонентов, которые делают Postfix крутым, таких как Spamassassin, серый список и бэкенд LDAP или MySql. Одно, что я хотел с iRedMail, это Mailman, мой любимый сервер рассылки. Интеграция двух может быть сложной задачей, поэтому вот некоторые инструкции, чтобы избавить вас от значительной боли.

Парни из iRedMail предлагают бесплатную консоль администратора для управления учетными записями пользователей. Я подписан на профессиональную версию консоли администратора iRedMail, которая очень полезна для клиентов, чтобы управлять собой. Я не имею никакого отношения к iRedMail, кроме как быть клиентом.

1. Настройка сервера

Я устанавливаю на чистую установку Debian Squeeze. Первое, что я всегда делаю на новом сервере, это:

apt-get update   
apt-get upgrade   
dpkg-reconfigure tzdata

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

Теперь нам нужно настроить полное доменное имя (FQDN). Это означает, что нам нужно доменное имя, такое как mailserver.example.com, а не просто mailserver. Чтобы проверить, какое у вас имя хоста, введите:

hostname -f

ПРИМЕЧАНИЕ: Выбранное вами доменное имя должно отличаться от домена электронной почты, который вы хотите использовать. Если вы хотите, чтобы ваша электронная почта приходила с [email protected], не делайте имя вашего сервера example.com - дайте ему поддомен, такой как obiwan или captainkirk или (если вы скучны, как я) mailserver.

Если у вас уже есть FQDN, вы можете перейти к шагу 2.

Доменное имя устанавливается в двух местах: /etc/hostname и /etc/hosts.

Отредактируйте ваш /etc/hostname, чтобы он содержал ваше FQDN (для целей этого руководства я буду использовать mailserver.example.com).

Для вашего файла /etc/hosts ваша первая строка должна выглядеть так:

127.0.0.1     mailserver.example.com mailserver localhost localhost.localdomain

Теперь нам просто нужно сказать системе зарегистрировать изменение:

/etc/init.d/hostname.sh   
hostname -f

Теперь вы должны увидеть FQDN. Если вы его не получили, паникуйте! Эм, я имею в виду перезагрузите и проверьте снова.

2. Установка iRedMail

На момент написания версия iRedMail составляет 0.7.3. Проверьте на www.iredmail.org последнюю версию и при необходимости скорректируйте.

cd ~   
wget http://iredmail.googlecode.com/files/iRedMail-0.7.3.tar.bz2   
apt-get install bzip2   
tar xjf iRedMail-0.7.3.tar.bz2   
cd iRedMail-0.7.3   
bash iRedMail.sh

iRedMail установит все, что вам нужно. Примите все значения по умолчанию, кроме бэкенда - выберите MySql вместо LDAP. Когда вас спросят о вашем первом виртуальном почтовом домене, введите example.com, НИ В КОЕМ СЛУЧАЕ не mailserver.example.com. Отвечайте “Да” всякий раз, когда вас спросят.

Теперь у вас есть отличный почтовый сервер! Это было легко, да?

3. Установка Mailman

Сначала мы устанавливаем Mailman:

apt-get install mailman

Вы заметите, что Mailman еще не запущен. Сначала нам нужно сказать Postfix отправлять почту в Mailman, когда он получает почту с определенных адресов.

4. Настройка транспортных и алиасных учетных записей

Мы собираемся создать виртуальный домен под названием lists.example.com, который мы будем использовать для всех наших Mailman вещей. Каждый раз, когда что-то отправляется на домен lists.example.com, мы будем перенаправлять это на программу Mailman вместо того, чтобы обрабатывать это как обычную почту.

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

Мы будем делать все это через базу данных MySql. Укажите браузер на https://example.com/phpmyadmin. Обратите внимание, что это https, а не просто http. Также обратите внимание, что если у вас еще нет DNS-сервера, указывающего на ваш IP-адрес, вам может потребоваться добавить example.com в ваш файл /etc/hosts на вашем локальном компьютере.

Войдите с пользователем root и паролем, который вы выбрали во время установки iRedMail. Если вы не можете вспомнить какие-либо данные, посмотрите в ~/iRedMail-0.7.3/iRedMail.tips - iRedMail удобно сохраняет местоположения, имена пользователей и пароли для всех служб iRedMail.

Нажмите на базу данных “vmail” в левой панели, а затем на вкладку “SQL”. Вставьте следующую команду в вкладку (после изменения домена на ваш собственный, конечно) и нажмите “Выполнить”:

INSERT INTO `vmail`.`domain` (`domain`, `description`, `disclaimer`, `aliases`, `mailboxes`, `maxquota`, `quota`, `transport`, `backupmx`, `defaultuserquota`, `defaultuseraliases`, `defaultpasswordscheme`, `minpasswordlength`, `maxpasswordlength`, `created`, `modified`, `expired`, `active`) VALUES ('lists.example.com', '', '', '0', '0', '0', '0', 'mailman:', '0', '1024', '', '', '0', '0', NOW(), '0000-00-00 00:00:00', '9999-12-31 00:00:00', '1');

Это настроило наш транспорт, чтобы получить все с lists.example.com в приложение Mailman.

Теперь нам нужно добавить алиасы Mailman. Вам нужно будет делать это каждый раз, когда вы добавляете новый список в Mailman, просто замените “mailman” на имя вашего нового списка и снова выполните SQL.

INSERT INTO `alias` (`address`, `goto`, `name`, `moderators`, `accesspolicy`, `domain`, `created`, `modified`, `expired`, `active`) VALUES
('[email protected]', '[email protected]', '', '', 'public', 'example.com', NOW(), NOW(), '9999-12-31 00:00:00', 1),
('[email protected]', '[email protected]', '', '', 'public', 'example.com', NOW(), NOW(), '9999-12-31 00:00:00', 1),
('[email protected]', '[email protected]', '', '', 'public', 'example.com', NOW(), NOW(), '9999-12-31 00:00:00', 1),
('[email protected]', '[email protected]', '', '', 'public', 'example.com', NOW(), NOW(), '9999-12-31 00:00:00', 1),
('[email protected]', '[email protected]', '', '', 'public', 'example.com', NOW(), NOW(), '9999-12-31 00:00:00', 1),
('[email protected]', '[email protected]', '', '', 'public', 'example.com', NOW(), NOW(), '9999-12-31 00:00:00', 1),
('[email protected]', '[email protected]', '', '', 'public', 'example.com', NOW(), NOW(), '9999-12-31 00:00:00', 1),
('[email protected]', '[email protected]', '', '', 'public', 'example.com', NOW(), NOW(), '9999-12-31 00:00:00', 1),
('[email protected]', '[email protected]', '', '', 'public', 'example.com', NOW(), NOW(), '9999-12-31 00:00:00', 1),
('[email protected]', '[email protected]', '', '', 'public', 'example.com', NOW(), NOW(), '9999-12-31 00:00:00', 1);

5. Настройка Postfix

Вернемся к командной строке. Нам нужно выполнить:

postconf -e 'relay_domains = lists.example.com'   
postconf -e 'mailman_destination_recipient_limit = 1'   
/etc/init.d/postfix reload

6. Отключение серого списка

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

Отредактируйте /etc/postfix-policyd.conf:

[...]
GREYLISTING=0
[...]

Теперь перезапустите политику Postfix:

/etc/init.d/postfix-policyd restart

7. Настройка Mailman

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

pico /etc/mailman/mm_cfg.py
[...]
DEFAULT_URL_PATTERN = 'http://%s/'
[...]
DEFAULT_EMAIL_HOST = 'example.com'
[...]
DEFAULT_URL_HOST = 'lists.example.com'

8. Настройка Apache

Мы почти закончили. Нам просто нужно настроить сервер Apache, чтобы обслуживать веб-сайт Mailman, когда мы переходим на lists.example.com. Не забудьте настроить этот домен в /etc/hosts или вашем DNS-сервере.

pico /etc/apache2/sites-available/mailman
ScriptAlias /cgi-bin/mailman/ /usr/lib/cgi-bin/mailman/
Alias /pipermail/ /var/lib/mailman/archives/public/
Alias /images/mailman/ /usr/share/images/mailman/

    AllowOverride None
    Options ExecCGI
    AddHandler cgi-script .cgi
    Order allow,deny
    Allow from all
    Satisfy Any


    Options FollowSymlinks
    AllowOverride None
    Order allow,deny
    Allow from all


    AllowOverride None
    Order allow,deny
    Allow from all


    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

Теперь нам просто нужно включить этот виртуальный хост.

a2ensite mailman   
mkdir /var/www/lists   
apache2ctl restart

9. Создание вашего первого списка

Первый список Mailman всегда “mailman”. Чтобы создать этот список, выполните:

newlist mailman

Заполните адрес электронной почты и пароль вашего администратора. Вам будет предложено нажать Enter, чтобы уведомить администратора. Когда вы это сделаете, вы не получите электронное письмо сразу. У нас есть еще один шаг:

/etc/init.d/mailman start

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

Если это сработает, вы также захотите протестировать подписки (просто отправьте пустое письмо на [email protected]). Если вы получите подтверждение подписки и сможете нажать на ссылку, то, скорее всего, все работает на 100%. Если нет, паникуйте! Я имею в виду, посмотрите в /var/log/mail.log, чтобы понять, что идет не так.

Подсказка: чтобы следить за журналом почты, используйте:

tail -f /var/log/mail.log

Если вам нужно попробовать воссоздать список Mailman, сначала выполните:

rmlist mailman

10. Создание дополнительных списков

Чтобы создать список под названием “listname”, сначала добавьте алиасы нового списка в таблицу алиасов в базе данных MySql vmail:

INSERT INTO `alias` (`address`, `goto`, `name`, `moderators`, `accesspolicy`, `domain`, `created`, `modified`, `expired`, `active`) VALUES
('[email protected]', '[email protected]', '', '', 'public', 'example.com', NOW(), NOW(), '9999-12-31 00:00:00', 1),
('[email protected]', '[email protected]', '', '', 'public', 'example.com', NOW(), NOW(), '9999-12-31 00:00:00', 1),
('[email protected]', '[email protected]', '', '', 'public', 'example.com', NOW(), NOW(), '9999-12-31 00:00:00', 1),
('[email protected]', '[email protected]', '', '', 'public', 'example.com', NOW(), NOW(), '9999-12-31 00:00:00', 1),
('[email protected]', '[email protected]', '', '', 'public', 'example.com', NOW(), NOW(), '9999-12-31 00:00:00', 1),
('[email protected]', '[email protected]', '', '', 'public', 'example.com', NOW(), NOW(), '9999-12-31 00:00:00', 1),
('[email protected]', '[email protected]', '', '', 'public', 'example.com', NOW(), NOW(), '9999-12-31 00:00:00', 1),
('[email protected]', '[email protected]', '', '', 'public', 'example.com', NOW(), NOW(), '9999-12-31 00:00:00', 1),
('[email protected]', '[email protected]', '', '', 'public', 'example.com', NOW(), NOW(), '9999-12-31 00:00:00', 1),
('[email protected]', '[email protected]', '', '', 'public', 'example.com', NOW(), NOW(), '9999-12-31 00:00:00', 1);

Как только это будет сделано, выполните эту команду, чтобы создать новый список:

newlist listname

Наслаждайтесь вашим новым сервером Mailman! Я надеюсь, вы создадите отличные электронные сообщества.

Share: X/Twitter LinkedIn

Get new posts in your inbox

No spam. Unsubscribe anytime.