Usage & Enterprise Capabilities

Best for:Large Enterprises & CorporationsMarketing Automation AgenciesE-commerce & Retail EnterprisesFinancial Services & BankingPublishing & Media Networks

OpenEMM is the open-source offshoot of the commercial E-Marketing Manager (EMM) developed by AGNITAS. Built specifically for high-volume, enterprise-grade email marketing, OpenEMM focuses heavily on sophisticated profile targeting, complex event-driven automation pipelines, and deep system integrations via its Web Services framework.

Unlike lightweight newsletter organizers, OpenEMM is fundamentally a Java Enterprise application running atop Apache Tomcat and a relational database. It utilizes a highly specialized, proprietary C-based MTA (Mail Transfer Agent) send-engine extension called Sendmail (or modern Postfix integrations) designed to blast through massive queues by talking directly to the email protocol layer, bypassing typical database limitations during dispatch.

For production use, OpenEMM is chosen when data privacy is paramount (e.g., German/EU GDPR compliance) and when basic "blast and track" functionality is insufficient—specifically when organizations need logic like: "If a user clicks link X, wait 3 days, check CRM status via API, and then send follow-up Y if conditions are met."

Key Benefits

  • Enterprise Automation: Build multi-stage, branching email campaigns triggered by user behavior (clickstreams) or temporal data (birthdays, subscription renewals).

  • Target Audience Management: Build complex dynamic segments based on deep subscriber profile data stored in the OpenEMM database.

  • Dynamic Content Formatting: Alter the layout and copy of individual emails on-the-fly based on the recipient's demographic profile using the built-in scripting engine.

  • Deep Integration: OpenEMM assumes it is part of a larger ecosystem; it offers robust APIs to sync contact logic with external platforms like Salesforce or SAP.

Production Architecture Overview

Deploying OpenEMM is significantly more complex than a standard LAMP stack, requiring a specific architectural footprint:

  • Java Runtime Environment (JRE): The foundation for the Tomcat Application Server.

  • Apache Tomcat: Hosts the OpenEMM administrative Web GUI and the backend REST/SOAP API services.

  • Relational Database (MySQL/MariaDB): Stores subscriber databases, operational metadata, and analytics.

  • Python: Required for executing OpenEMM’s myriad internal backend automation scripts (e.g., parsing bounces, generating statistics).

  • Postfix / Sendmail (MTA): An active dependency. OpenEMM does not natively speak SMTP to external relays like SendGrid; rather, it injects mail directly into a local Postfix/Sendmail queue, which then routes or relays the mail reliably to the internet.

Implementation Blueprint

Implementation Blueprint

Prerequisites & Dependencies

Installing OpenEMM bare-metal requires strict OS configurations. (Ubuntu 22.04 LTS is used as an example).

sudo apt update && sudo apt upgrade -y

# Install Core Dependencies
sudo apt install mariadb-server python3 postfix postfix-pcre wget tar unzip net-tools -y
sudo apt install default-jre -y
shell

Install Apache Tomcat 9:

sudo apt-get install tomcat9 tomcat9-admin -y
shell

Database Installation

Create the OpenEMM database context.

sudo mysql -u root

CREATE DATABASE openemm DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'openemm'@'localhost' IDENTIFIED BY 'highly_secure_db_password';
GRANT ALL PRIVILEGES ON openemm.* TO 'openemm'@'localhost';
FLUSH PRIVILEGES;
EXIT;
sql

Configuring the Local MTA (Postfix)

OpenEMM relies on Postfix to process its massive outbound queues and ingest inbound bounces. You must configure your domain (e.g., em.mycompany.com).

Edit /etc/postfix/main.cf to optimize for OpenEMM's spool directories and set up an external SMTP relay if you aren't sending direct-to-MX.

# Add to /etc/postfix/main.cf
myhostname = em.mycompany.com
mydomain = mycompany.com

# If using an external relay like Amazon SES to ensure deliverability
relayhost = [email-smtp.us-east-1.amazonaws.com]:587
smtp_sasl_auth_enable = yes
smtp_sasl_security_options = noanonymous
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_use_tls = yes
ini

Configure the SES credentials, map them, and reload Postfix:

echo "[email-smtp.us-east-1.amazonaws.com]:587 ses_user:ses_password" | sudo tee /etc/postfix/sasl_passwd
sudo postmap /etc/postfix/sasl_passwd
sudo systemctl restart postfix
shell

Application Installation

Currently, OpenEMM deployment is most efficiently managed via their official installation scripts or Docker orchestration, as manual bare-metal configurations are highly error-prone due to numerous directory permission requirements.

The OpenEMM Installer App: Agnitas provides a Python-based OpenEMM Installer Application (OIA).

# Create the OpenEMM system user
sudo adduser --disabled-password --gecos "" openemm

# Download and run the setup
su - openemm
wget -O OIA.tar.gz "https://github.com/agnitas-org/openemm/releases/latest/download/OIA.tar.gz"
tar -xzf OIA.tar.gz
cd OIA
python3 oia.py
shell

The `oia.py` script presents a terminal GUI. Follow the prompts to point it at your MySQL database, Tomcat installation directories, and Postfix configurations. The script will automatically fetch the correct `.war` files, update schemas, and adjust kernel parameters.

Starting the System

Once installed via OIA, OpenEMM provides a centralized command script to manage its background Python daemons and the Tomcat frontend.

# As the openemm user
/home/openemm/bin/openemm.sh start
shell

This script spins up a dozen distinct micro-processes: the bounce-filter daemon, the mail-builder, the send-engine, and triggers the Tomcat application context.

Securing Access

OpenEMM normally runs on Tomcat's default port 8080. For production, place Nginx in front as a reverse proxy.

server {
    listen 80;
    server_name em.mycompany.com;

    location / {
        proxy_pass http://127.0.0.1:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

Enable SSL via Certbot.

Advanced Usage: Event-Triggered Automation

OpenEMM's true power is action-based campaigns.

  1. Navigate to campaigns in the GUI.

  2. Define a Target Audience based on a query: e.g., "Users who clicked Link ID 42 in Campaign A".

  3. Define an Action: Create a new automated mailing step.

  4. Set the Time-delayed Trigger: Schedule the mailing to send specifically 48 hours after the behavior was recorded.

  5. Activate the mailing. The backend Python scripts will continuously evaluate the database condition and dispatch mail individually as users meet the precise criteria.

Technical Support

Stuck on Implementation?

If you're facing issues deploying this tool or need a managed setup on Hostinger, our engineers are here to help. We also specialize in developing high-performance custom web applications and designing end-to-end automation workflows.

Engineering trusted by teams at

Managed Setup & Infra

Production-ready deployment on Hostinger, AWS, or Private VPS.

Custom Web Applications

We build bespoke tools and web dashboards from scratch.

Workflow Automation

End-to-end automated pipelines and technical process scaling.

Faster ImplementationRapid Deployment
100% Free Audit & ReviewTechnical Analysis