Обновление почтового сервера iRedMail с 0.9.2 до 0.9.5-1

3
34

debian-dovecot-postfix-iredmailВ данном руководстве собраны шаги по обновлению почтового сервера iRedMail с версии 0.9.2 до актуальной на момент выхода статьи 0.9.5-1. Как оказалось соблюдать строгий порядок обновления не обязательно, и можно обновлять компоненты системы сразу перепрыгивая несколько промежуточных версий. В данной заметке, будем рассматривать версию сервера, где в качестве backend’а базы данных используется MySQL, а в качестве операционной системы Debian. Как показывает практика и уже более 4-х летний опыт использования данного сервера, данная связка (debian + mysql) требует наименьшего количества обновлений и соответственно отнимает гораздо меньше времени затрачиваемого админом на поддержание системы в актуальном состоянии. Поэтому, если вы собираетесь разворачивать сервер впервые, рекомендую использовать именно этот вариант.

На данный момент проект iRedMail продолжает активно развиваться, исправлены разные баги, в том числе и связанные с безопасностью, включена поддержка HSTS, вебсервера Nginx, баз данных MariaDB, опционально SOGo как cервера групповой работы (аналога Microsoft Exchange) с красивым веб-интерфейсом и др. плюшками. Одним словом, если вы ищите надежный и самое главное бесплатный вариант по организации почтовой системы и при этом не боитесь Linux, то данный вариант несомненно вам подойдет :)

Инструкции по обновлению предыдущей версии на новую обычно выкладываются по следующему адресу и довольно хорошо описаны, но на практике как это нередко случается, возникают нюансы. Вот об этом подробнее:

В самом начале откроем на редактирование текстовый файл где записан номер текущей версии сборки, меняем ее на последнюю.

1) Обновление iRedAPD:

Выполняем последовательно шаги по обновлению iRedAPD:

Начиная с версии 0.9.3 функции по борьбе со спамом на основе серых списков (greylisting), которые ранее были возложены на PolicyD v2 (кодовое имя «cluebringer») теперь выполняет iRedAPD. Поэтому нам необходимо выполнить ряд шагов по переносу конфигурации с cluebringer на iRedAPD. Подробнее о новом функционале грейлистинга читаем здесь. Авторизуемся в MySQL и добавим в таблицу greylisting, базы iredapd несколько новых значений.

Затем выполняем непосредственно шаги по миграции. Открываем последовательно следующие файлы скриптов на редактирование и задаем параметры подключения к mysql базе clubringer.

Сами параметры берем в /etc/cluebringer/cluebringer.conf

Затем переходим в /opt/iredapd/tools/ и последовательно запускаем скрипты на выполнение:

Если видим, такую картинку:

То все ОК, миграция прошла успешно.

Удаляем лишние и добавляем новые плагины внутри файла настроек /opt/iredapd/settings.py. Должно получится что то типа этого:

Отключаем Cluebringer в Postfix:

Открываем на редактирование фаил конфигурации postfix.

и меняем значения триггеров: smtpd_recipient_restrictions и smtpd_end_of_data_restrictions на
check_policy_service inet:127.0.0.1:7777 т.е. по сути порт с 10031 на 7777 с добавлением permit_mynetworks. В результате приводим к следующему виду:

Перезапускаем postfix:

Останавливаем и удаляем пакеты Cluebringer:

Удаляем лишние каталоги:

Удаляем базу clubringer и пользователя cluebringer из mysql:

2) Обновление iRedAdmin:

3) Обновление Roundcube.

Обновляем существующую сборку с версии 1.1.1 до 1.2.2.

Нажимаем Yes. Если видим что:

То процесс обновления прошел успешно.

Поправим имя директории roundcubemail на актуальную с правкой ярлыка (smlinks):

Добавляем в cron скрипт очистки sql базы roundcubemail:

# Cleanup Roundcube SQL database.
2   2   *   *   *   php /usr/share/apache2/roundcubemail/bin/cleandb.sh >/dev/null

4) Включаем поддержку HSTS — HTTP Strict Transport Security в Apache.

Данный механизм включает форсированное защищённое соединение через протокол HTTPS.

Для начала активируем модуль «header» командой:

Затем, открываем на редактирование файл /etc/apache2/sites-enabled/default-ssl
Добавляем следующий код:

Перезапускаем Apache:

5) Вносим изменения в Dovecot:

Исправляем известные проблемы с неправильным оповещением локальных пользователей о превышением квоты. Открываем на редактирование файл /etc/dovecot/dovecot.conf и находим следующие строки:

меняем их на:

Перезапускаем dovecot.

6) Изменения в Posfix

Невозможность доставить письмо до системной учетной записи. Если речь идет о postmaster то на текущей сборке лично я не сталкивался с таким, но поверим разработчикам и внесем следующие изменения. Открываем на редактирование  /etc/postfix/main.cf. Находим и удаляем следующие строки:

Исправления в механизме образования имени почтовых ящиков. (Not preserve the case of ${extension} while delivering message to mailbox).

Открываем на редактирование /etc/postfix/master.cf Находим строки:

и убираем флаг «u». Получаем:

7) Изменения в Amavis.

Исправляем неправильную настройку, которая рассматривает внешних отправителей как внутренних пользователей.

Открываем на редактирование файл /etc/amavis/conf.d/50-user

Приводим значения параметров к следующему виду:

Оставим значение как есть (У меня в файле это 278 строка):

Затем закоментим или полностью удалим блоки:

Перезапускаем Amavis:

Теперь открываем конфиг Postfix /etc/postfix/master.cf

Раскомментируем строку:

Перезапустим сервис:

8) Изменения в Fail2ban:

Обновление регулярных выражений для захвата postscreen лога. Помогает эффективнее бороться со спамом.

Приводим конфиг /etc/fail2ban/filter.d/postfix.iredmail.conf к следующему виду:

Добавление ssh портов в конфиг Fail2ban.

Я просто скопировал кусок кода из последней сборки iRedMail на своем тестовом сервере и получилось что нужно привести начальную часть конфига /etc/fail2ban/jail.conf к следующему виду:

# Refer to /etc/fail2ban/jail.conf for more examples.

Перезапускаем демон командой:

9) MySQL

Добавление новой колонки delete_date в SQL таблице vmail.deleted_mailboxes базы vmail;

10) Обновление phpmyadmin. (опционально)

Обновляем phpmyadmin, хотя делать это совсем не обязательно, к тому же последняя сборка 4.6.4 требует версии php 5.5. Если у вас до сих пор стоит Debian 7 Wheezy то придется отдельно обновлять и php до версии 5.5, иначе при входе через браузер получим следующую месагу:

Итак, для обновления последовательно выполняем следующие шаги. На всякий случай копируем старую сборку в /tmp, а так же отдельно файл конфигурации config.inc.php. Качаем последний релиз phpmyadmin. Извлекаем архив в /usr/share. Меняем имя на phpmyadmin. Подкладываем обратно файл конфигурации в новую сборку. Перезапускам apache.  Если все хорошо, то при старте получим окошко авторизации «Добро пожаловать в phpMyAdmin«

Обновление php до версии 5.5 (Debian 7 Wheezy);

Открываем на редактирование /etc/apt/sources.list и добавляем туда следующие строки:

Запускаем команду на обновление пакета php5:

Либо обновляем всю систему целиком:

Проверить версию php после установки:

После обновления, в php.ini желательно указать значение временной зоны для вашего региона, иначе, как это было у меня в Roundcube перестанет отображаться поле «дата». Открываем на редактирование /etc/php5/apache2/php.ini и в разделе [Date] параметру date.timezone пропишем значение часового пояса. В моем случае это:

Сохраняем, перезапускаем вебсервер.

11) Обновление антивируса clamav

Если возникает ошибка во время запуска freshclam, «ERROR: /var/log/clamav/freshclam.log is locked by another process» то делаем слудующее:

  • Александр

    Спасибо за полезную и интересную информацию!

  • SergeyD

    Добрый день!
    Друзья, подскажите по какой причине у меня нет в tools upgrade_iredapd.sh

    • admin

      Причина неизвестна :) Перекачайте пакет!