PureMessage Upgrade Guide (6.4.6 to 6.4.7)

There are a few major changes you should be aware of when upgrading from PureMessage version 6.4.6 to PureMessage version 6.4.7.

Postgres Upgrade

PostgreSQL-9.3.1 is automatically upgraded to version 9.5.14, however there are some steps you will need to take before the upgrade:

  • Use pg_dump to back up the database.

    For more information, see https://www.postgresql.org/docs/9.3/app-pgdump.html.

  • Check you have enough disk space before upgrading.

    After successful migration of the database, the updater will delete all directories and files from the old postgres-9.3 directory except the database itself (postgres-9.3/var/data/), the configuration file (postgres-9.3/etc/database.conf) and installation log (postgres-9.3/install.log). After the upgrade there will be two copies of the database, one in the old version (9.3) format and another in the new version (9.5) format.

    Note If there are no issues in the performance and functionality of the new database, the old database can be removed manually.
  • Plan a maintenance window for the upgrade.

    The amount of time the upgrade takes depends on the size of the database. In our tests, pg_upgrade took 80 seconds to upgrade a 2 GB database and 10 minutes to upgrade a 8.5 GB database.

Before the upgrade, assuming the PMX installation directory is /opt/pmx6, the symbolic link /opt/pmx6/postgres points to another symbolic link /opt/pmx6/etc/alternatives/postgres which points to the directory /opt/pmx6/postgres-9.3. The upgrade procedure will create a new directory /opt/pmx6/postgres-9.5 and will change the symbolic link as below:
  • Before the upgrade: /opt/pmx6/postgres -> /opt/pmx6/etc/alternatives/postgres -> /opt/pmx6/postgres-9.3
  • After the upgrade: /opt/pmx6/postgres -> /opt/pmx6/etc/alternatives/postgres -> /opt/pmx6/postgres-9.5
The database will be migrated using the pmx-database-upgrade script (part of the PureMessage-Manager-PostgreSQL package) which uses the PostgreSQL supplied command pg_upgrade. For more information on pmx-database-upgrade, see https://www.postgresql.org/docs/9.5/pgupgrade.html.

If the database upgrade fails, the symbolic link is not changed and will still point to postgres-9.3 and no files or directories are removed from the postgres-9.3 directory. You can still use PureMessage with the old version of the database.

Note If the upgrade fails, you need to check /opt/pmx6/var/log/install_log to find out the reason (for example, not enough disk space). You will need to troubleshoot the failure then start the upgrade procedure again.

In postgresql.conf, the old 9.3 version was using a parameter, checkpoint_segments, which needs to be converted into the min_wal_size and max_wal_size parameters. If the upgrade process finds checkpoint_segments in postgresql.conf, it converts its value according to the section E.17.2 of the PostgreSQL-9.5 release notes. If you are using the checkpoint_segments parameter, you will need to read that section of the release notes.

Note PostgreSQL-9.5 does not support SSLv3.


The built in MTA, Sendmail, is no longer a part of PureMessage from v6.4.7 onwards. This means that the 'PureMessage-Sendmail' package will no longer be included in PMX packages. A related package 'PureMessage-Manager-Sendmail' and related code in other packages is still included, however functioning of v6.4.7 with externally installed Sendmail is not tested or supported by us.

Note The upgrade from v6.4.6 (with built-in Sendmail) to v6.4.7 is tested and supported. However, we recommend you switch to Postfix.

Other changes

  • The End User License Agreement has changed. We recommend you read the new EULA before upgrading. See, https://www.sophos.com/en-us/legal/sophos-end-user-license-agreement.aspx.
  • The PCRE library used in PMX is no longer vulnerable to CVE-2008-2371.
  • The Postfix smtpd process that accepts messages filtered by the milter won't reject unknown recipients now. See the milter section in the pmx.conf file for more information. This should avoid the issue of recipient rejection in cases where the recipient is mapped before queueing the message. For more information, see receive_override_options. The value is set to no_unknown_recipient_checks.
  • The manual page for the command pmx-db-watchdog now displays the correct path of the configuration file pmx-db-watchdog.conf.