Upgrade iRedMail from 0.9.8 to 0.9.9

Paid Remote Upgrade Support

We offer remote upgrade support if you don't want to get your hands dirty, check the details and contact us.

ChangeLog

General (All backends should apply these steps)

Update /etc/iredmail-release with new iRedMail version number

iRedMail stores the release version in /etc/iredmail-release after installation, it's recommended to update this file after you upgraded iRedMail, so that you can know which version of iRedMail you're running. For example:

0.9.9

Upgrade iRedAPD (Postfix policy server) to the latest stable release (2.3)

Please follow below tutorial to upgrade iRedAPD to the latest stable release: Upgrade iRedAPD to the latest stable release

Upgrade iRedAdmin (open source edition) to the latest stable release (1.0)

Please follow this tutorial to upgrade iRedAdmin open source edition to the latest stable release: Upgrade iRedAdmin to the latest stable release

Upgrade Roundcube webmail to the latest stable release (1.3.6)

Roundcube 1.3

With the release of Roundcube 1.3.0, the previous stable release branches 1.2.x and 1.1.x will switch in to LTS low maintenance mode which means they will only receive important security updates but no longer any regular improvement updates.

Please follow Roundcube official tutorial to upgrade Roundcube webmail to the latest stable release immediately:

Fix incorrect file owner/group of mlmmjadmin config file

Please run commands below to fix incorrect file owner/group and permission:

chown mlmmj:mlmmj /opt/mlmmjadmin/settings.py
chmod 0400 /opt/mlmmjadmin/settings.py

OpenLDAP special

Update iRedMail LDAP schema file

iRedMail-0.9.9 introduces 1 new LDAP attribute for mail user account:

Warning

If you use different mailbox format, you need to set mailbox format to the one you're using.

Download the latest iRedMail LDAP schema file

cd /tmp
wget https://bitbucket.org/zhb/iredmail/raw/default/iRedMail/samples/iredmail/iredmail.schema

cd /etc/openldap/schema/
cp iredmail.schema iredmail.schema.bak

cp -f /tmp/iredmail.schema /etc/openldap/schema/
service slapd restart
cd /tmp
wget https://bitbucket.org/zhb/iredmail/raw/default/iRedMail/samples/iredmail/iredmail.schema

cd /etc/ldap/schema/
cp iredmail.schema iredmail.schema.bak

cp -f /tmp/iredmail.schema /etc/ldap/schema/
service slapd restart
cd /tmp
wget https://bitbucket.org/zhb/iredmail/raw/default/iRedMail/samples/iredmail/iredmail.schema

cd /usr/local/etc/openldap/schema/
cp iredmail.schema iredmail.schema.bak

cp -f /tmp/iredmail.schema /usr/local/etc/openldap/schema/
service slapd restart
cd /tmp
ftp https://bitbucket.org/zhb/iredmail/raw/default/iRedMail/samples/iredmail/iredmail.schema

cd /etc/openldap/schema/
cp iredmail.schema iredmail.schema.bak

cp -f /tmp/iredmail.schema /etc/openldap/schema/
rcctl restart slapd

Dovecot: read mailbox format from LDAP

Please open file /etc/dovecot/dovecot-ldap.conf (Linux/OpenBSD) or /usr/local/etc/dovecot/dovecot-ldap.conf (FreeBSD), find the user_attrs = line like below:

user_attrs      = mail=master_user,mail=user,homeDirectory=home,=mail=maildir:~/Maildir/,mailQuota=quota_rule=*:bytes=%$

Please replace maildir: by %{ldap:mailboxFormat:maildir}. After modified, it looks like below:

user_attrs      = mail=master_user,mail=user,homeDirectory=home,=mail=%{ldap:mailboxFormat:maildir}:~/Maildir/,mailQuota=quota_rule=*:bytes=%$

If attribute mailboxFormat doesn't present in user object, Dovecot will use string maildir as default value.

MySQL/MariaDB special

SQL structure changes in vmail database

We've made some changes to vmail database:

Warning

If you use different mailbox format, you need to set mailbox format to the one you're using.

Download SQL template file used to update SQL database:

cd /root/
wget https://bitbucket.org/zhb/iredmail/raw/default/extra/update/0.9.9/iredmail.pgsql

Connect to PostgreSQL server as postgres user and import the SQL file: on Linux, it's postgres user on FreeBSD, it's pgsql user * on OpenBSD, it's _postgresql user

mysql vmail < /root/iredmail.pgsql

Dovecot: read mailbox format from SQL

Please open file /etc/dovecot/dovecot-mysql.conf (Linux/OpenBSD) or /usr/local/etc/dovecot/dovecot-mysql.conf (FreeBSD), find the user_attrs = line like below:

user_query = SELECT \
            ...
            CONCAT(mailbox.storagebasedirectory, '/', mailbox.storagenode, '/', mailbox.maildir) AS home, \
            ...

Add a new CONCAT line after above CONCAT() line:

user_query = SELECT \
            ...
            CONCAT(mailbox.storagebasedirectory, '/', mailbox.storagenode, '/', mailbox.maildir) AS home, \
            CONCAT(mailbox.mailboxformat, ':', mailbox.storagebasedirectory, '/', mailbox.storagenode, '/', mailbox.maildir, '/Maildir') AS mail, \
            ...

PostgreSQL special

SQL structure changes in vmail database

We've made some changes to vmail database:

Warning

If you use different mailbox format, you need to set mailbox format to the one you're using.

Download SQL template file used to update SQL database:

cd /root/
wget https://bitbucket.org/zhb/iredmail/raw/default/extra/update/0.9.9/iredmail.mysql
# su - postgres
$ psql -d vmail
sql> \i /tmp/mysql.pgsql

Dovecot: read mailbox format from SQL

Please open file /etc/dovecot/dovecot-pgsql.conf (Linux/OpenBSD) or /usr/local/etc/dovecot/dovecot-pgsql.conf (FreeBSD), then

PostgreSQL 8.x

If you're running PostgreSQL 8.x, you can find the user_attrs = line like below:

user_query = SELECT \
    mailbox.storagebasedirectory || '/' || mailbox.storagenode || '/' || mailbox.maildir AS home, \
    ...

Please Add a line after above line:

user_query = SELECT \
    mailbox.storagebasedirectory || '/' || mailbox.storagenode || '/' || mailbox.maildir AS home, \
    mailbox.mailboxformat || ':' || mailbox.storagebasedirectory || '/' || mailbox.storagenode || '/' || mailbox.maildir || '/Maildir/' AS mail, \
    ...

Restart Dovecot service is required.

PostgreSQL 9.x and later releases

If you're running PostgreSQL 9.x and later releases, you can find the user_attrs = line like below:

user_query = SELECT \
            ...
            CONCAT(mailbox.storagebasedirectory, '/', mailbox.storagenode, '/', mailbox.maildir) AS home, \
            ...

Add a new CONCAT line after above CONCAT() line:

user_query = SELECT \
            ...
            CONCAT(mailbox.storagebasedirectory, '/', mailbox.storagenode, '/', mailbox.maildir) AS home, \
            CONCAT(mailbox.mailboxformat, ':', mailbox.storagebasedirectory, '/', mailbox.storagenode, '/', mailbox.maildir, '/Maildir/') AS mail, \
            ...

Restart Dovecot service is required.