Обновление iRedMail (на Debian)

Процесс достаточно простой, но я всё же решил его немного законспектировать, т.к. возникают нюансы, которые вызывают сомнения в  правильности действий.

Обновить iRedMail можно двумя способами: платно и бесплатно. В первом случае всё сделают создатели самого пакета. Во втором надо поработать самостоятельно руками.

Информация о релизах — http://www.iredmail.org/docs/iredmail.releases.html

На момент написания статьи мой вариант обновления будет:

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

hetzner snapshot

Далее выполняю все правки по инструкции — http://www.iredmail.org/docs/upgrade.iredmail.0.9.5.1-0.9.6.html.

Выставляю версию iRedMail, до которой обновляюсь. Правлю файл /etc/iredmail-release, вписываю версию 9.6.

Upgrade iRedAPD

Скачиваю последнюю версию (по ссылке http://www.iredmail.org/yum/misc/)

# sudo wget http://www.iredmail.org/yum/misc/iRedAPD-2.0.tar.bz2

И выполняю действия по инструкции.

# cd /root
# tar xjf iRedAPD-1.7.0.tar.bz2
# cd iRedAPD-1.7.0/tools/
# bash upgrade_iredapd.sh

Обновление прошло гладко.

iredapd_upd_ok

Можно переходить к следующему этапу по порядку в инструкции. Принцип тот же. Скачивается последняя версия, распаковывается и делается обновление.

Upgrade iRedAdmin

# wget http://www.iredmail.org/yum/misc/iRedAdmin-0.7.tar.bz2
# cd /root/
# tar xjf iRedAdmin-x.y.z.tar.bz2
# cd iRedAdmin-x.y.z/tools/
# bash upgrade_iredadmin.sh

Если всё пройдёт успешно, то по окончанию будет написано Upgrading completed.

Upgrade Roundcube

Делается резервная копия roundcube.

# sudo tar -czf roundcubemail.bkp.tar.gz roundcubemail

Сделать резервную копию баз (perform a database dump (schema and data) ) (это я не делал).

# sudo wget https://github.com/roundcube/roundcubemail/releases/download/1.2.3/roundcubemail-1.2.3-complete.tar.gz
# sudo tar xf roundcubemail-1.2.3-complete.tar.gz
# sudo bin/installto.sh /opt/www/roundcubemail

После выполнения последней команды, обновление roundcube будет закончено.

Далее в инструкции идёт описания правки только конфигов. Хотел бы остановиться на первой же правке.

Fixed: HTTProxy vulnerability in Apache and Nginx

fixed_httpr_an

Эта правка подразумевает редактирование как конфигов Apache, так и Nginx. Но у меня Apache вообще не используется, он не запущен. Т.е. инструкция по обновлению имеет какой-то общий характер.

По файлам Nginx отмечу, что некоторые параметры, которые нужны было дополнять, закомментированы. Соответственно не ясно, надо ли вносить изменения на будущее, если вдруг эти параметры придётся раскомментировать. Во всяком случае, если отредактировать всё по инструкции, то ничего не поменяется на данном этапе работы почтовика.

Fixed: not allow access to ‘/.well-known/’ in Nginx

Данное исправление по сути нужно в процессе установки сертификата. Т.е. по хорошему на момент обновления почтовика, сертификаты уже установлены, работают и устранять эту ошибку по сути смысла особого нет. Разве что на будущее.

Fixed: Postfix allows email sent through port 587 without smtp authentication from trusted clients

Необходимо найти строчку

-o smtpd_client_restrictions=permit_mynetworks,permit_sasl_authenticated,reject

и убрать из неё permit_mynetworks.

Сдесь я допустил ошибку. В конфиге оказался похожая строчка и я принял её за искомую. В результате после перезапуска службы почта не отправлялась и не принималась. По логам быстро понял куда копать.

Fixed: SOGo-3.1.3 (and later releases) changed argument used by sogo-tool command

Эта программа у меня не установлена. Соответственно обновления не требует. Но в инструкции между строк говорится «догадайся об этом сам».

Fixed: Awstats is world-accessible with Apache

Нужно отредактировать конфиг /etc/apache2/conf-available/awstats.conf. Он у меня отсутствует.


Я описал не все процедуры данного конкретного обновления. Были ещё обновления, касающиеся LDAP, я их не делал, т.к. он у меня не используется.

Часть обновлений не затронутых в описании выполнялась без вопросов и эти моменты я не описывал.

Добавление DKIM записи для iRedMail

На почтовом сервере выполняется команда:

#sudo amavisd-new showkeys

Выдаётся результат вида:

# amavisd showkeys
dkim._domainkey.mydomain.com. 3600 TXT (
"v=DKIM1; p="
"MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDYArsr2BKbdhv9efugByf7LhaK"
"txFUt0ec5+1dWmcDv0WH0qZLFK711sibNN5LutvnaiuH+w3Kr8Ylbw8gq2j0UBok"
"FcMycUvOBd7nsYn/TUrOua3Nns+qKSJBy88IWSh2zHaGbjRYujyWSTjlPELJ0H+5"
"EV711qseo/omquskkwIDAQAB")

Чтобы сделать DKIM запись, понадобится только строчка вида:

v=DKIM1; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDYArsr2BKbdhv9efugBy...

У меня эта запись в панели управления выглядела вот так:

DKIM_260117

Строчка без кавычек, но обязательно с «;».

После этого можно протестировать, была ли успешно добавлена запись.

@unix-garage:/$ sudo amavisd-new testkeys

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

TESTING#1 mail.unix-garage.tk: dkim._domainkey.mail.unix-garage.tk => pass

Если что-то пошло не так, то будет сообщение:

TESTING#1 mail.unix-garage.tk: dkim._domainkey.mail.unix-garage.tk => invalid (public key: not available)

Стоит помнить, что для обновления добавленной запись DKIM может потребоваться какое-то ощутимое время (зависит от DNS сервера).

Если DKIM записей несколько, то сделать отдельную запись на каждый домен можно так:

amavisd-new genrsa /var/lib/dkim/new_domain.com.pem 1024
chown amavis:amavis /var/lib/dkim/new_domain.com.pem
chmod 0400 /var/lib/dkim/new_domain.com.pem

Информация от всех записях хранится в файле nano /etc/amavis/conf.d/50-user. При переносе записей с одного сервера на другой, необходимо отредактировать этот файл в блоке «# Add dkim_key here.» и внести туда нужные строки вида:

#dkim_key("host.com", "dkim", "/var/lib/dkim/host.com.pem");

Использовалась официальная инструкция от iRedMail — http://www.iredmail.org/docs/setup.dns.html

Статья добавление DKIM записи