|
|
Line 1: |
Line 1: |
| [[Category:mail]]
| |
| == A Full Service Mail Server Upgrade to 2.x ==
| |
|
| |
|
| It's assumed that currently your server is running under Alpine Linux 1.10.x. The goal of this document is to describe how to upgrade "ISP Mail Server" to run under Alpine Linux 2.2. An upgrade process involves several significant changes in application configuration and database data and schema handling. Applications that come with Alpine Linux 2.x have a lot of bug and security fixes as well as new functionality. Upgrading of some components will require changing configurations files, update database schema and export/import data.
| |
|
| |
| '''NOTE:''' The ISP Mail Server can be run in RAM having directories for data such as Postfix mailboxes, PostgreSQL databases to be mounted on hard drive RAID/LVM partitions.
| |
|
| |
| == System Preparations before upgrade ==
| |
|
| |
| '''IMPORTANT NOTE''': Please perform full system backup including system configuration and user data. Make sure sure that backup is valid.
| |
|
| |
| We recommend you to stop all user services permanently until system fully upgraded and tested. While system tests are being perform block user access for all users.
| |
|
| |
| '''NOTE:''' One of the ways to block user access is to use firewall rules.
| |
|
| |
| Remove services from auto-start:
| |
|
| |
| rc-update del lighttpd
| |
| rc-update del dovecot
| |
| rc-update del postfix
| |
| rc-update del freshclam
| |
| rc-update del clamd
| |
| rc-update del clamsmtpd
| |
| rc-update del slapd
| |
| rc-update del postgresql
| |
| rc-update del cron
| |
|
| |
| Stop services except ''postfesql'':
| |
|
| |
| /etc/init.d/lighttpd stop
| |
| /etc/init.d/slapd stop
| |
| /etc/init.d/dovecot stop
| |
| /etc/init.d/postfix stop
| |
| /etc/init.d/clamsmtpd stop
| |
| /etc/init.d/freshclam stop
| |
| /etc/init.d/clamd stop
| |
| /etc/init.d/cron stop
| |
|
| |
| == Dump PostreSQL databases ==
| |
|
| |
| Since version 9 has significant changes in compare to version 8 you must dump all postgresql databases and later restore data after postgresql is upgraded.
| |
|
| |
| Create a directory where data will be dumped:
| |
|
| |
| mkdir <Path to datadump directory>
| |
| chown postges <Path to datadump directory>
| |
|
| |
| Login as ''postgres'' and dump data:
| |
|
| |
| su - postgres
| |
| cd <Path to datadump directory>
| |
| pg_dumpall > postgresql.bak.8.4.2
| |
| exit
| |
|
| |
| Stop PostgreSQL services:
| |
|
| |
| /etc/init.d/postgresql stop
| |
|
| |
| '''IMPORTANT NOTE''': Please perform backup of dumped data and PostgeSQL data directory ''/var/lib/postgresql/8.4''. Make sure sure that backup is valid.
| |
|
| |
| == Upgrading Alpine Linux ==
| |
|
| |
| '''NOTE:''' We recommend to upgrade to Alpine Linux version not earlier than 2.2, since release 2.2 has a lot of important fixes for bugs and security issues.
| |
|
| |
| Follow instructions described on page: http://wiki.alpinelinux.org/wiki/Upgrading_Alpine_-_v1.9.x. After system reboot proceed with next parts of this documents to complete upgrade.
| |
|
| |
| == Import data to PostgeSQL ==
| |
|
| |
| Make sure that file ''/etc/conf.d/psotgresql'' contains:
| |
|
| |
| PGDATA="/var/lib/postgresql/9.0/data"
| |
|
| |
| Check if you need any special setting in ''/var/lib/postgresql/9.0/data/pg_hba.conf'' and ''/var/lib/postgresql/9.0/data/postgresql.conf''. In most cases these files could remain unchanged.
| |
|
| |
| Start PostgeSQL (It will setup itself since by default AUTO_SETUP=yes)
| |
|
| |
| /etc/init.d/postgresql start
| |
| rc-update add postgresql
| |
|
| |
| Import previously dumped data:
| |
|
| |
| su - postgres
| |
| cd <Path to datadump directory>
| |
| psql -f postgresql.bak.8.4.2 postgres
| |
| exit
| |
|
| |
| == Start other services ==
| |
|
| |
| Other services do not require any changes of their current configurations, you may just start them:
| |
|
| |
| /etc/init.d/clamd start
| |
| /etc/init.d/freshclam start
| |
| /etc/init.d/clamsmtp start
| |
| /etc/init.d/postfix start
| |
| /etc/init.d/lighttpd start
| |
| /etc/init.d/slapd start
| |
| /etc/init.d/cron start
| |
|
| |
| Add these service to boot sequence:
| |
|
| |
| rc-update add lighttpd
| |
| rc-update add freshclam
| |
| rc-update add clamd
| |
| rc-update add clamsmtpd
| |
| rc-update add postfix
| |
| rc-update add slapd
| |
| rc-update add cron
| |
|
| |
| == Update Dovecot configuration ==
| |
|
| |
| Since Dovecot has many configuration settings changed since 1.x version, the best way is to parse old configuration with ''doveconf'' tool:
| |
|
| |
| cd /etc/dovecot
| |
| doveconf -n > dovecot.conf-new
| |
| mv dovecot.conf dovecot.conf-old
| |
| mv dovecot.conf-new dovecot.conf
| |
| /etc/init.d/dovecot start
| |
|
| |
| == Update Quota Configuration ==
| |
|
| |
| == Update Roundcube Webmail configuration ==
| |
|
| |
| Move Roundcube configuration files to ''/etc/roundcube'':
| |
|
| |
| mv /usr/share/webapps/roundcube/config/main.inc.php /etc/roundcube
| |
| mv /usr/share/webapps/roundcube/config/db.inc.php /etc/roundcube
| |
| mv /usr/share/webapps/roundcube/config/mimetypes.php /etc/roundcube
| |
|
| |
| Enable ''installer'' mode in ''/etc/roundcube/main.inc.php'' file:
| |
|
| |
| $rcmail_config['enable_installer'] = true;
| |
|
| |
| Install ''roundcubemail-install'' package:
| |
|
| |
| apk add roundcubemail-installer
| |
|
| |
| Run configuration and system checks:
| |
|
| |
| * https://host.example.com/roundcube/installer/index.php?_step=1
| |
| :'''NOTE:''' You may need to install php-dom, php-intl components and restart Lighttpd.
| |
|
| |
| * https://host.example.com/roundcube/installer/index.php?_step=3
| |
|
| |
| :Replace '''imap_root'' with ''imap_ns_personal
| |
| '' in /etc/roundcube/main.inc.php
| |
|
| |
| $rcmail_config['imap_ns_personal'] = null;
| |
|
| |
|
| |
| :Run only commands that are superscribed with the previously installed version number from ''/usr/share/webapps/roundcube/SQL/postgres.update.sql'':
| |
| cp /usr/share/webapps/roundcube/SQL/postgres.update.sql /usr/share/webapps/roundcube/SQL/postgres.update-3.1.sql
| |
|
| |
| edit /usr/share/webapps/roundcube/SQL/postgres.update-3.1.sql and remove not needed commands
| |
|
| |
| su - postgres
| |
|
| |
| psql -f /usr/share/webapps/roundcube/SQL/postgres.update-3.1.sql roundcubemail
| |
|
| |
| exit
| |
|
| |
|
| |
| :Change ownership of two new tables:
| |
|
| |
| psql -U postgres roundcubemail
| |
| roundcubemail=# ALTER TABLE contactgroups OWNER TO roundcube;
| |
| roundcubemail=# ALTER TABLE contactgroupmembers OWNER TO roundcube;
| |
|
| |
| Due to security reason disable ''installer'' mode in ''/etc/roundcube/main.inc.php'' file:
| |
|
| |
| $rcmail_config['enable_installer'] = false;
| |
|
| |
| Due to security reason remove ''roundcubemail-install'' package:
| |
|
| |
| apk del roundcubemail-installer
| |
|
| |
|
| |
| Makes sure you have restored all customizations such watermark.gif, roundcube_logo.gif, favicon.ico or custom roundcube skin. IF you would like to disable displaying of standard logos update template files accordingly:
| |
|
| |
|
| |
| includes/header.html:<!--<div id="header"><a href="./"><img id="logo" src="/images/roundcube_logo.png" alt="logo" title="<roundcube:object name='productname' />" /></a></div>-->
| |
|
| |
| templates/error.html:<!--<div id="header"><img src="/images/roundcube_logo.png" alt="<roundcube:object name='productname' />" /></div>-->
| |
|
| |
| templates/messageprint.html:<!--<div id="header"><img src="/images/roundcube_logo.png" alt="<roundcube:object name="productname" />" /></div>-->
| |
|
| |
| templates/login.html:<!--<img id="logo" src="/images/roundcube_logo.png" border="0" alt="<roundcube:object name='productname' />" style="margin:0 11px" /> -->
| |
|
| |
| templates/printmessage.html:<!--<div id="header"><img src="/images/roundcube_logo.png" alt="<roundcube:object name="productname" />" /></div>-->
| |
|
| |
|
| |
|
| |
| Test Roundcube Webmail site including functionality of activated plug-ins.
| |
|
| |
|
| |
| == Final Notes ==
| |
|
| |
|
| |
| 16. some fixes
| |
|
| |
| run find /etc -iname "*apk-new"
| |
|
| |
| and check is there any significant changes in config files
| |
|
| |
| fix accordingly
| |
|
| |
| Some optimizations mod-compres mod-setenv for lighttpd
| |
|
| |
| mkdir -p /var/lib/lighttpd/cache
| |
|
| |
| lbu add /var/lib/lighttpd/cache/compress
| |
|
| |
| lbu exclude /var/lib/lighttpd/cache/compress/*
| |
|
| |
| chown lighttpd:lighttpd /var/lib/lighttpd/cache
| |
|
| |
|
| |
|
| |
| nano /etc/lighttpd/lighttpd.conf
| |
|
| |
| uncomment mod_compress and mod_setenv
| |
|
| |
|
| |
|
| |
| modify website section:
| |
|
| |
| static-file.etags = "enable"
| |
|
| |
| etag.use-mtime = "enable"
| |
|
| |
| $HTTP["url"] =~ "^/(plugins|skins|program)" {
| |
|
| |
| setenv.add-response-header = ( "Cache-Control" => "public, max-age=2592000")
| |
|
| |
| }
| |
|
| |
| compress.cache-dir = var.statedir + "/cache/compress"
| |
|
| |
| compress.filetype = ("text/plain", "text/html", "text/javascript", "text/css", "text/xml", "image/gif", "image/png")
| |