Case study:
EMG at Mblox (PDF)
Download EMG 7.2.0 Print
Tuesday, 09 April 2019



2019-04-04: A number of important changes have been made over the past few days, so if you have downloaded these binaries earlier, we suggest updating them again.


These are the changes in EMG 7.2 as compared to EMG 7.1, specifically EMG 7.1.10.

  • The connectivity management has been rewritten, giving some important improvments. It can be enabled by adding CSM=1 on the connector.
    • The CPU usage for configurations having connectors with many connected instances has been reduced. Typically this is the "smpp-in" connector, sometimes with hundreds of parallel open connections.
    • Each connection now uses only a single thread, instead of the two used earlier. This allows for a larger number of connector instances without running into system limitations.
    • New connections are established faster, and they are closed cleaner.
  • A new connector option NOTIFY, for automatic notification of flooding, connection state changes and large queue sizes. Notification messages are sent using the normal EMG connectors. This is a replacement for the discontinued EMG SNMP Agent. If you need triggers on other events, please contact us. Examples, where "smtp-out" is an outgoing connector:
    • NOTIFY=STATECHANGE:1m:smtp-out: This e-mail address is being protected from spambots. You need JavaScript enabled to view it
    • NOTIFY=QUEUESIZE>0:1m:smtp-out: This e-mail address is being protected from spambots. You need JavaScript enabled to view it :SUBJECT=EMG notification
    • NOTIFY=FLOOD:1m:smtp-out: This e-mail address is being protected from spambots. You need JavaScript enabled to view it which also needs FLOOD=5s:2 (at most 2 messages per 5 seconds).
  • A new set of log files, named db.<DatabaseProfileName>, containing all executed SQL statements and their results in JSON.
  • Support for multiple addresses. These work for both connectors and database profiles.
    • Failover: ADDRESS=|host1:port1|host2:port2|host3:port3|...|
    • Round-robin: ADDRESS=|host1:port1|host2:port2|host3:port3|...|RR
  • A more compact format for database profiles: ADDRESS=username:password@host:port/dbname. This can be combined with the syntax above.
  • A new concept of connector groups, to be able to easily define failover and load balancing (with proportions) to different connectors.
  • Various messages that tend to occur over and over in the general log are now summarized with a count, in order to give a clearer view of anomalies that may require some action.
  • The utility emgstat has a new option "--plugin", showing a list of configured plugins and their throughput.
  • Delivery reports that arrive just before the submit response containing its message id are now handled correctly.
  • The routelog table has new (optional) columns for MCC and MNC information.
  • The default storage backend for new messages, delivery reports etc is changed to LevelDB from Google. The previous backend can be selected using BACKEND=TC in the server configuration file.

EMG 7 is backward compatible with configurations for earlier versions of EMG. It is possible to download the binaries-only distribution and replace the binaries for an earlier version. However, some configuration options have become obsolete, so please examine the log/general file carefully. If you need the other files, such as SQL schema files etc, please download the full distribution.

EMG Portal does not support connector groups nor the NOTIFY option yet.

Quality Assurance

EMG 7.2 is tested using the combinatorial testing technique, with test cases created automatically by Tcases. This is a way of testing as many different combinations of configuration options, communication protocols, types of message data etc as possible, within a reasonable time frame.

According to the Valgrind tool "helgrind", there are no known situations where thread locks are used inconsistently or with the risk of a deadlock.


Important notice 1! When upgrading from an earlier EMG release and using a database a schema change will need to be applied ("emgd --upgradedb"). This schema upgrade may take a long time to complete. We recommend testing on a copy of the database first.
Important notice 2! EMG 7 includes functionality that depends on embedded perl. EMG 5.2.6 and later includes Perl 5.12.2 statically linked into the emgd binary. This means that for Perl plugins that do not depend on external modules (such as CPAN modules) there are no external dependencies. Read more »

Downloads are password-protected. To obtain the username and password required for download, please use our license request form.

The binaries are built on CentOS 5.4 (64-bit) with glibc 2.5, so they should work fine on any recent Linux distribution.

EMG 7 requires a new license key when upgrading from EMG 6 or earlier.

Installing EMG 7.1 and EMG Portal 3 on CentOS 7 »

Upgrading from EMG 7.1 to 7.2 can be done in multiple steps.

Binaries only

With SSL/encryption support: EMG 7.2.0, 15 MB

Without SSL/encryption support: EMG 7.2.0, 10 MB

Full distribution

With SSL/encryption support: EMG 7.2.0, 15 MB

Without SSL/encryption support: EMG 7.2.0, 10 MB