User Tools

Site Tools


start

OpenEMM 2019 Install & Configuration Wiki

Latest Version of OpenEMM 2019: Backend: 19.04.000.441, Frontend: 19.04.000.459
Utility Package for Deployment & Runtime: 19.07.011
(as of August 14, 2019)

The final version of OpenEMM 2019 is now available. This wiki provides the brief version of the extensive OpenEMM Installation & Administration Guide 1.0.2.

We kindly ask you to contribute your feedback and questions to improve the documentation, installation, configuration and administration of OpenEMM 2019! Please leave your questions and comments in the OpenEMM forum at forum.openemm.org.


1. Introduction

OpenEMM is a professional open source software for email marketing and automation. If you want to automate your email communication, OpenEMM is the right choice for you.
The first version of OpenEMM was published in 2006. The source code of the frontend and the backend of the new OpenEMM 2019 is available at GitHub. It uses the popular open source license AGLPv3. At the end of this page you can find instructions on how to build OpenEMM 2019 yourself.

2. Requirements

  • RedHat 7 or CentOS 7 64 bit
  • Java Open JDK 8
  • Apache Tomcat 9
  • Python 2.7 (3.x with a future version)
  • MySQL 5.6 or 5.7, or MariaDB 10.1, 10.2 or 10.3
  • Sendmail 8.10 or later, or Postfix 2.6 or later
  • wkhtmltox 0.12.2.1 or later
  • for HTTPS support: Apache Tomcat Native Library



3. Preparations

OpenEMM consists of 2 packages:

  1. backend code for generation and dispatch of emails, management of bounces and replies: openemm-backend-19.04.000.*.tar.gz
  2. frontend code with GUI, statistics service (charts & diagrams) and webservices: openemm-frontend-19.04.000.*.tar.gz

We also offer a utility package for easy deployment and operations of the binary code of OpenEMM: openemm-runtime-19.07.*.tar.gz

Unless noted otherwise below, use user “root”.

3.1 Packages of Operating System

Install the required packages:

$ yum install gcc
$ yum install python
$ yum install java-1.8.0-openjdk-devel
$ yum install xorg-x11-fonts-75dpi zlib fontconfig freetype libX11 libXext libXrender urw-fonts

3.2 DBMS

Depending on the DBMS you want to use, either install MariaDB or MySQL.

MariaDB and MySQL code repository for RedHat7:

$ subscription-manager repos –enable rhel-server-rhscl-7-rpms

MariaDB and MySQL code repository for CentOS7:

yum install centos-release-scl

MariaDB DBMS

This example uses MariaDB 10.2:

$ yum install rh-mariadb102-mariadb-server
$ yum install MySQL-python

Make sure MariaDB is running and re-started at every server reboot:

$ systemctl enable rh-mariadb102-mariadb
$ systemctl start rh-mariadb102-mariadb

Finally, set a symlink to make sure that OpenEMM can find MariaDB:

$ cd /bin
ln -s /opt/rh/rh-mariadb102/root/bin/* .

MySQL DBMS

This example uses MySQL 5.7:

$ yum install rh-mysql57-mysql-server
$ yum install MySQL-python

Make sure MySQL is running and re-started at every server reboot:

$ systemctl enable rh-mysql57-mysql
$ systemctl start rh-mysql57-mysql

Finally, set a symlink to make sure that OpenEMM can find MySQL:

$ cd /bin
ln -s /opt/rh/rh-mysql57/root/bin/* .

3.3 MTA

Depending on the MTA you want to use, either install Sendmail or Postfix.

MTA Sendmail

If you want to use Sendmail as SMTP server (MTA), you have to stop and remove Postfix first (in case it is installed), and you have to install the required packages for Sendmail.

# systemctl stop postfix
# yum remove postfix
# yum install sendmail sendmail-cf sendmail-milter procmail

After that, if necessary, switch the default SMTP server to Sendmail with

$ alternatives --set mta /usr/sbin/sendmail.sendmail

and change Sendmail's configuration: Open file sendmail.mc in directory /etc/mail and add a leading “dnl ” to line

DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')dnl

This will enable Sendmail to listen on all available network interfaces and allows the processing of asynchronous bounces and auto responder mails. By default, Sendmail listens only on the local interface for connections, but dnl comments out this directive.

Additionally, add line

INPUT_MAIL_FILTER(`bav', `S=unix:/home/openemm/var/run/bav.sock, F=T')dnl

at the end of file sendmail.mc to make Sendmail familiar with OpenEMM's mail filter BAV (bounce address validator) so that the bounce management can process asynchronous bounces, too.
The mailloop service of OpenEMM, which processes the asynchronous bounces and auto responder mails needs some more preparations:

$ cd /etc/mail
$ umask 022
$ [ -f relay-domains ] || touch relay-domains
$ [ -f mailertable ] || touch mailertable

To activate your changes to the Sendmail configuration you have to compile the intermediate file sendmail.mc to the final configuration file sendmail.cf and activate the new configuration with

$ cd /etc/mail
$ make
$ systemctl restart sendmail

MTA Postfix

If you want to use Postfix as SMTP server (MTA), you have to stop and remove Sendmail first (in case it is installed), and you have to install the required packages for Postfix.

$ systemctl stop sendmail
$ yum remove sendmail
$ yum install postfix sendmail-milter procmail

After that, switch the default SMTP server to Postfix with

$ alternatives --set mta /usr/sbin/sendmail.postfix

and change Postfix' configuration to unleash all features. To do this, change to the Postfix main configuration directory:

$ cd /etc/postfix

and add some configuration parameters to Postfix' main configuration file main.cf:

inet_interfaces = all
inet_protocols = all
mailbox_command = /usr/bin/procmail
mailbox_size_limit = 0
message_size_limit = 0
maximal_queue_lifetime = 1d
bounce_queue_lifetime = 1d
smtp_tls_security_level = may
smtp_tls_protocols = !SSLv2, !SSLv3
smtp_tls_ciphers = high
smtp_tls_mandatory_ciphers = $smtp_tls_ciphers
hash_queue_depth = 2
enable_long_queue_ids = yes
relay_domains = /home/openemm/var/run/relay.domains
transport_maps = hash:/home/openemm/var/run/transport.maps
smtpd_milters = unix:/home/openemm/var/run/bav.sock

If lines with parameters of the same name already exist in file main.cf, comment them with character # at the beginning to avoid any warning messages or overwrite them with the new values in case you do not want to keep the original values as backup.
Additionally, you have to set parameter myhostname in file main.cf to the FQDN of your OpenEMM server. Otherwise, mails would be sent with sender domain localhost.localdomain instead.

Finally, add these lines to configuration file master.cf:

mailloop  unix  -       n       n       -       -       pipe
  flags=RX user=openemm argv=/usr/bin/procmail /home/openemm/lib/bav.rc

Please do not omit the two space characters before keyword “flags” to indicate the parser that the line is continued!
Last not least, activate the TLS manager in file master.cf by uncommenting (i.e. removing the leading #) line

tlsmgr unix - - n 1000? 1 tlsmgr

to permit sending of TLS encrypted emails.
To activate your changes, restart Postfix with

$ systemctl restart postfix

3.4 wkhtmltox

Download the RPM of “wkhtmltox” from wkhtmltopdf.org and unpack it:

$ rpm -ihv wkhtmltox-*.rpm

3.5 Firewall

Open port 25 and port 8080 in the firewall and add a port forwarding from port 80 to 8080, so you do not have to enter the URL of your OpenEMM server with “:8080” at the end:

$ firewall-cmd --get-active-zones

If your zone is “public” (if not, use the zone name you got with the aforementioned statement):

$ firewall-cmd --zone=public --add-port=8080/tcp --permanent
$ firewall-cmd --zone=public --add-port=25/tcp --permanent
$ firewall-cmd --zone=public --add-forward-port=port=80:proto=tcp:toport=8080 --permanent
$ firewall-cmd --reload



4. Installation

4.1 Group and User

Create group and user for OpenEMM:

$ groupadd openemm
$ useradd -m -g openemm -d /home/openemm -s /bin/bash openemm
$ passwd openemm
$ su - openemm

4.2 OpenEMM Download

We recommend to download the latest deployment & runtime package of OpenEMM from here. This package provides the installer for the backend and frontend code. Of course, you can also take the source code from GitHub (as soon as available) and compile and deploy the software manually.

4.3 Runtime Deployment

Download runtime tarball (file name: openemm-runtime-19.07.*.tar.gz) to /home/openemm to create the deployment and runtime environment for OpenEMM.

Change to user openemm, unpack and start it with

$ su - openemm
$ tar -xvzpf openemm-runtime-19.07.*.tar.gz
$ ./OpenEMMInstaller.sh

At launch time the OpenEMMInstaller checks your environment and offers to install required packages (including Tomcat 9), to configure a database connection (file dbcfg) and to set environment variables

  • JAVA_HOME (default: /usr/lib/jvm/java) for Java
  • CATALINA_HOME (default: /home/openemm/opt/tomcat/) for Tomcat
  • WKHTML (default: /usr/bin/wkhtmltoimage) for tool wkhtmltox

The parameters will be written to file setenv.sh in directory /home/openemm/bin/.

OpenEMMInstaller also checks if kernel parameter in /etc/security/limits.conf are sufficient and, if not, offers to change them. However, you have to restart OpenEMMInstaller as user root to be able to change the file:

$ sudo su -
$ /home/openemm/bin/OpenEMMInstaller.sh

If database configuration file dbcfg does not exist in directory /home/openemm/etc/, OpenEMMInstaller asks for the required parameters like database type (“mysql” or “mariadb”), database name (“openemm”), database user (“openemm”) and your database password.

4.4 Frontend and Backend Deployment

For the deployment of the backend tarball you have to run the OpenEMMInstaller as user root, because some files of the tarball have to be deployed with root permissions:

$ sudo su -
$ /home/openemm/bin/OpenEMMInstaller.sh

Use menu 4 or 5 to install the frontend and backend package. Menu 4 offers to install the runtime, backend an frontend package, but you can select “n” for any package, if you do not want to install it.
During Deployment of the backend tarball several new directories and symlinks will be created in /home/openemm/.
If you do not want to install the backend package of OpenEMM, you can start den installer as user “openemm”:

$ su - openemm
$ OpenEMMInstaller.sh

When the frontend is installed, the OpenEMM database is automatically filled with its initial content.

5. Configuration

5.1 Log Access

OpenEMM requires read access to the mail log file at /var/log/maillog and logrotate has to be aware of this fact, too. Open file /etc/logrotate.d/syslog and add the following line after the line sharedscripts:

$ create 0644

and run

$ chmod 644 /var/log/maillog

to set the permissions of the current maillog.

5.2 OpenEMMInstaller

Use menu 2 and 3 of tool OpenEMMInstaller to set up and change the configuration of OpenEMM.

Create an initial password for main user “emm-master” in menu “3 Security”. Write down the generated password and use user “emm-master” and this initial password later for your first login. You will be prompted to change your password to a new one of your choice.

Set various essential parameters in a sub-menu of menu “2 Configuration”:

emm.properties:

DB configuration:
Use menu “2 Configuration”, sub-menu “7 Change client/account data” to set important values in the OpenEMM database:

  • Set rdir_domain to the protocol and FQDN of your OpenEMM server, for example https://openemm.example.com. This domain will be used in all measureable links to redirect them through OpenEMM.
  • Set mailloop_domain to the domain of your sender address. The domain for the mailloop service must be different from the name of your OpenEMM server. It usually is the FQDN which is defined in the MX record for your server, for example mailing.example.com, pointing as MX to openemm.example.com. In this case, use domain mailing.example.com as domain for the sender address of your mailings. (There are other ways for configuration, described in the OpenEMM Install&Admin Guide.) If you do not configure the mailloop service, OpenEMM can only process instant bounces, i.e. you will not be able to catch all bounces (see section Mailloop Configuration below).

Launch OpenEMM with menu “7 Restart OpenEMM”.

Point your browser to your OpenEMM server and log in with user “emm-master” and the password you just created. OpenEMM will ask you to change the initial password to a new one of your choice.

If you want to install the context-sensitive help feature of OpenEMM, download tarball OpenEMM_Manual_*.tar.gz (not available, yet) from the AGNITAS website and use menu 5 to install it as local file.

5.3 Templates and Forms

You do not have to start from scratch when producing mailings and creating forms in OpenEMM. At https://www.agnitas.de/en/download-center/ you can download templates and forms which you can import into OpenEMM. Make sure to replace all placeholders for a company ID with value “1”.

5.4 Mailloop Configuration

The mailloop service of OpenEMM pocesses asynchronous bounces, i.e. bounces that are not sent back instantly by the receiving MTA, but only after a delay. There are several options to configure the mailloop service. See section OpenEMM Mailloop Configuration for details.

6. Updates

The 2nd and 3rd line of this Wiki show the latest available versions of OpenEMM backend, frontend and the deployment & runtime package.

You can download the latest versions of the packages with menu 4 of the OpenEMMInstaller. An update of the frontend package will also update the schema of the OpenEMM database, if necessary.

Do not forget to restart OpenEMM with menu 7 after you have downloaded and installed the update package to activate it. But do the restart at an convenient time: Do not restart OpenEMM during a dispatch of a mailing, or right after the dispatch (due to the brief downtime of the redirect service causing missed openings and click redirects).

Beginning with runtime version 19.07.011 updating has become even easier. Simply start the OpenEMMInstaller from the command line with option “-update” (use sudo to be able to update the backend):

$ sudo /home/openemm/bin/OpenEMMInstaller.sh -update

In this case, if the OpenEMMInstaller finds and applies an update, it automatically restarts OpenEMM afterwards.

7. Administration

Here is a video with first steps:



8. Known Issues

8.1 Open Issues

8.2 Fixed Issues

Runtime 19.07.011 or later:

  • simplified update process with “OpenEMMInstaller.sh -update”

Runtime 19.07.005 or later:

  • O-281: menu 4 of OpenEMMInstaller also offers to update deployment & runtime package

Runtime 19.07.004 or later:

  • O-358: menu “Show OpenEMM status” of OpenEMMInstaller shows status of backend

Runtime 19.04.091 or later:

  • O-350: in some cases wktohtmlx tool is not found by OpenEMM

Runtime 19.04.090 or later:

  • O-343: OpenEMM Installer offers Tomcat 9.0.21 now, because 9.0.16 is no longer safe due to a disclosed DOS vulnerability

Runtime 19.04.085 or later:

  • O-272: Runtime update removes symlink for backend libraries

Runtime 19.04.079 or later:

  • O-272: sub-menu 3 of menu 2 in OpenEMMInstaller does not work


Frontend 19.04.000.459 or later:

  • G-4109: administration of import profile settings does not work

Frontend 19.04.000.439 or later:

  • O-360: WSDL document to auto-generate webservice client is not accessible at <domain>/2.0/emmservices.wsdl

Frontend 19.04.000.430 or later:

  • G-4156: “sub-menu “Edit field content” of menu “Import/Export” not available

Frontend 19.04.000.422 or later:

  • O-356: recipient, domain and monthly statistics are missing

Frontend 19.04.000.369 or later:

  • O-350: in some cases wktohtmlx tool is not found by OpenEMM

Frontend 19.04.000.314 or later:

  • O-338: import wizard mode does not accept changed character set

Frontend 19.04.000.314 or later:

  • O-334: it is not possible to revoke permissions of a user

Frontend 19.04.000.312 or later:

  • O-337: it is not possible to create a new import profile

Frontend 19.04.000.310 or later:

  • O-336: workflow manager can not create new workflows

Frontend 19.04.000.268 or later:

  • O-328: validator prevents some mailings from being saved


Backend 19.04.000.441 or later:

  • O-362: optional individual setting of envelope email address is ignored

Backend 19.04.000.418 or later:

  • O-358: menu “Show OpenEMM status” of OpenEMMInstaller shows status of backend

Backend 19.04.000.388 or later:

  • G-4254: backend does not send all mails generated by WM

Backend 19.04.000.329 or later:

  • O-340: mailloop service not reachable due to invalid path


9. Roadmap

  • E-6587: improved filtering of invalid form data
  • E-6553: profile field cleansing for recipients without active binding after 30 days (data minimization)
  • E-5438: email header “List-Unsubscribe” supports RFC 8058 for one-click unsubscriptions
  • E-6249: improved usability for visual target group editor
  • G-4051: context-sensitive auto-complete suggestions for EQL editor
  • B-844: new link hash tag for encyption of data field

10. Building OpenEMM yourself

Download the source code of OpenEMM 2019 from GitHub at https://github.com/agnitas-org/openemm to a directory of your choice.

Backend

$ cd backend
$ ./build-backend.py

Frontend

Copy template files build.properties.default, build-birt.properties.default and build-ws.properties.default to build.properties, build-birt.properties and build-ws.properties and adapt the paths mentioned in these 3 files to your needs.

$ cd frontend
$ ant -f build.xml
start.txt · Last modified: 2019/08/14 16:06 by ma