Перенос почтового сервера с PostfixAdmin и iRedMail

В этой заметке я описываю свой опыт переноса действующего почтового сервера с одной системы на другую. Оба сервера настроены на iRedMail с прикрученным PostfixAdmin. ОС Debian 8 и Debian 9.

Читать далее Перенос почтового сервера с PostfixAdmin и iRedMail

exceeded storage quota postfix

Превышение размера письма (прикреплённого файла). Размер определён сервером получателя. В логах даёт ошибку:

exceeded storage quota postfix

Определяется настройками сервера принимающей стороны.

Отключение спам фильтра iRedMail

На моём почтовом сервере совсем мало ресурсов и я решил удалить условно лишнее. А именно избавился от антивируса, что потянуло за собой (видимо) удаление спам фильтра. И в один прекрасный момент почта перестала доставляться адресатам. Логи при этом в принципе говорили, что проблема есть.

Файл /var/log/syslog

Mar 16 09:41:50 vot-tak-vot postfix/smtp[26460]: connect to 127.0.0.1[127.0.0.1]:10026: Connection refused
Mar 16 09:41:50 vot-tak-vot postfix/smtp[26462]: connect to 127.0.0.1[127.0.0.1]:10024: Connection refused

Поиск не заставил долго искать аналогичные ситуация и я быстро понял, что postfix заворачивает всё на 127.0.0.1, т.к. фильтрует письма.

В файле /etc/postfix/main.cf делаются следующие изменения.

# contentfilter = amavis:[127.0.0.1]:10024
# receiveoverrideoptions = noaddress_mappings

Перезагрузка postfix.

/etc/init.d/postfix restart

Далее рекомендуется сделать вот эти действия.

/etc/init.d/clamav-daemon stop
/etc/init.d/clamav-freshclam stop
/etc/init.d/amavis stop

update-rc.d -f clamav-daemon remove 
update-rc.d -f clamav-freshclam remove
update-rc.d -f amavis remove

По идее эти действия должны были помочь (я пробовал по аналогии конкретного варианта решения данной проблемы), но не помогло. Postfix по прежнему заворачивал всё на 127.0.0.1.

Я редактировал ещё конфиг /etc/postfix/master.cf, искал конкретно, где упоминается заворот на 127.0.0.1. Нашёл ещё строчку, которую закомментировал.

 # -o content_filter=smtp-amavis:[127.0.0.1]:10026

В папке /etc/postfix ещё были файлы main.cf и master.cf с датами. Я убрал эти файлы из каталога (временно сохранил в другом каталоге). После чего перезагрузил ещё раз postfix. Теперь почта заработала как надо.

Добавление PTR записи

PTR запись — обратная DNS-запись, связывающая IP-адрес сервера с его каноническим именем (доменом).

Проверяется эта запись командой

#dig -x <ip>

Например

#dig -x 138.201.191.252

Делается эта запись хостером или в панели управления, если к ней имеется доступ. Я это делаю в своей панели управления у хостера Hetzner.

ptr_hetz

Обновление PTR записи произойдёт ни сразу. Когда именно она обновится скажет величина TTL, полученная после команды dig.

ptr_time_ttl

Если команду повторять с интервалом 5-10 секунд, то будет видно, как значение уменьшается. Это время в секундах до момента, когда обновится PTR-запись.

Reverse dns does not match smtp banner

При проверке почты получил сообщение

reverse dns does not match smtp banner 

Решение.

postconf -e myhostname=servername

Указкать servername — имя сервера, которое должно получаться при reverse DNS.

Перезагрузить postfix. Выполнить команду ниже, чтобы убедиться в получении нужного результат.

nc <ip> 25

Должно получится

220 mail.mymail.com ESMTP Postfix

Обновление 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, я их не делал, т.к. он у меня не используется.

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