# Upgrade iRedMail from 1.0 to 1.1

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

- Feb 10, 2020: initial release.

## General (All backends should apply these changes)

### 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:

    1.1

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

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

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

### Upgrade mlmmjadmin to the latest stable release

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

### Upgrade Roundcube webmail to the latest stable release

Roundcube 1.4

Since Roundcube 1.3, at least PHP 5.4 is required. If your server is running PHP 5.3 and cannot upgrade to 5.4, please upgrade Roundcube the latest 1.2 branch instead.

The latest Roundcube webmail 1.4.2 offers a shiny new web UI. Please follow Roundcube official tutorial to upgrade Roundcube webmail to the latest stable release (1.4.2):

- How to upgrade Roundcube.

### Upgrade netdata to the latest stable release

If you have netdata installed, you can upgrade it by following this tutorial: Upgrade netdata.

### Fixed: modular rsyslog config file is improper

Attention

This is applicable to only CentOS 7.

On CentOS 7, the modular rsyslog config file `/etc/rsyslog.d/1-iredmail-iredapd.conf` doesn't correctly filter iRedAPD log, please replace the `if` line by below one and restart rsyslog service:

    if $syslogfacility-text == 'local5' and ($syslogtag startswith 'iredapd' or $msg startswith 'iredapd ') then -/var/log/iredapd/iredapd.log

### Fixed: SOGo backup script doesn't relies on Python anymore

SOGo backup script `/var/vmail/backup/backup_sogo.sh` shipped in iRedMail-1.0 and earlier releases relies on Python to calculate the date of old backup for removal, but not anymore in iRedMail-1.1. Please download the latest version and override the one on your system:

    cd /var/vmail/backup/
    wget -O backup_sogo.sh https://github.com/iredmail/iRedMail/raw/1.1/tools/backup_sogo.sh
    chown root backup_sogo.sh
    chmod 0500 backup_sogo.sh

## For OpenLDAP backend

### Fixed: Backup MX doesn't work.

In iRedMail-1.0, the placeholder used by LDAP query for Backup MX domain is incorrect, please run commands below to fix it.

    perl -pi -e 's#%d#%s#g' /etc/postfix/ldap/relay_domains.cf
    postfix reload

### Fixed: improper LDAP query filter

The LDAP query used in file `/etc/postfix/ldap/virtual_group_maps.cf` (Linux/OpenBSD) or `/usr/local/etc/postfix/ldap/virtual_group_maps.cf` (FreeBSD) is not accurate, it will cause missing external members of (not-subscribeable) mailing list with alias domain. Please follow steps below to fix it.

- Open file `/etc/postfix/ldap/virtual_group_maps.cf` (Linux/OpenBSD) or `/usr/local/etc/postfix/ldap/virtual_group_maps.cf`, replace the `query_filter =` line by below one:

    query_filter    = (&(accountStatus=active)(!(domainStatus=disabled))(enabledService=mail)(enabledService=deliver)(|(&(|(memberOfGroup=%s)(shadowAddress=%s))(|(objectClass=mailUser)(objectClass=mailExternalUser)))(&(memberOfGroup=%s)(!(shadowAddress=%s))(|(objectClass=mailAlias)(&(objectClass=mailList)(!(enabledService=mlmmj)))))(&(objectClass=mailList)(enabledService=mlmmj)(|(mail=%s)(shadowAddress=%s)))))

- Save your change and restart or reload Postfix service.

### Improvement: OpenLDAP backup script doesn't relies on Python anymore

OpenLDAP backup scripts `/var/vmail/backup/backup_openldap.sh` and `backup_mysql.sh` shipped in iRedMail-1.0 and earlier releases relies on Python to calculate the date of old backup for removal, but not anymore in iRedMail-1.1. Please download the latest version and override the one on your system:

    cd /var/vmail/backup/
    wget -O backup_openldap.sh https://github.com/iredmail/iRedMail/raw/1.1/tools/backup_openldap.sh
    wget -O backup_mysql.sh https://github.com/iredmail/iRedMail/raw/1.1/tools/backup_mysql.sh
    chown root backup_openldap.sh backup_mysql.sh
    chmod 0500 backup_openldap.sh backup_mysql.sh

## For MySQL/MariaDB backends

### Fixed: Backup MX doesn't work.

In iRedMail-1.0, the placeholder used by SQL query for Backup MX domain is incorrect, please run commands below to fix it.

    perl -pi -e 's#%d#%s#g' /etc/postfix/mysql/relay_domains.cf
    postfix reload

### Fixed: MySQL backup script doesn't relies on Python anymore

Backup script `/var/vmail/backup/backup_mysql.sh` shipped in iRedMail-1.0 and earlier releases relies on Python to calculate the date of old backup for removal, but not anymore in iRedMail-1.1. Please download the latest version and override the one on your system:

    cd /var/vmail/backup/
    wget -O backup_mysql.sh https://github.com/iredmail/iRedMail/raw/1.1/tools/backup_mysql.sh
    chown root backup_mysql.sh
    chmod 0500 backup_mysql.sh

## For PostgreSQL backend

### Fixed: incorrect index on SQL table `vmail.sender_relayhost`

Column `sender_relayhost.account` should be unique index. Please follow steps below to fix it.

- Connect to PostgreSQL server as `postgres` user and connect to `vmail` database:
  - on Linux, it's `postgres` user
  - on FreeBSD, it's `pgsql` user
  - on OpenBSD, it's `_postgresql` user

    su - postgres
    psql -d vmail

- Run SQL commands below:

    DROP INDEX idx_sender_relayhost_account;
    CREATE UNIQUE INDEX idx_sender_relayhost_account ON sender_relayhost (account);

### Fixed: Backup MX doesn't work.

In iRedMail-1.0, the placeholder used by SQL query for Backup MX domain is incorrect, please run commands below to fix it.

    perl -pi -e 's#%d#%s#g' /etc/postfix/pgsql/relay_domains.cf
    postfix reload

### Fixed: PostgreSQL backup script doesn't relies on Python anymore

Backup script `/var/vmail/backup/backup_pgsql.sh` shipped in iRedMail-1.0 and earlier releases relies on Python to calculate the date of old backup for removal, but not anymore in iRedMail-1.1. Please download the latest version and override the one on your system:

    cd /var/vmail/backup/
    wget -O backup_pgsql.sh https://github.com/iredmail/iRedMail/raw/1.1/tools/backup_pgsql.sh
    chown root backup_pgsql.sh
    chmod 0500 backup_pgsql.sh