xorlab Security Platform architecture
Every xorlab Security Platform component (Sandbox, MTA, and XCC) comprises a set of Docker containers which have different responsibilities. MTA and XCC components are delivered to on-prem customers as separate VMs. xorlab Cloud (xCloud) and the xorlab Sandbox are components in the SaaS infrastructure that are needed by our platform. In rare cases, the Sandbox is run on-prem. The following picture shows the most important containers, their dependencies, and a typical mail flow:
- An email arrives at the MTA (xorlab Mail Transfer Agent) component using SMTP and is received by the
mtacontainer (basically, a postfix mail server). - The
mtacontainer forwards the email—still using SMTP—to thecorecontainer. If this transmission fails—e.g., becausecoreis not ready to process the email—the email will be deferred by core, and you should see the following alert:Emails Older Than 100 Seconds Stuck In the Deferred Queue.corethen performs a static analysis of the message. Depending on the settings and the message itself, the message attachments can additionally be scanned by sending them to the xorlab Sandbox (DANA). When the Sandbox scan is done, the email will be shown in Messages → Pending in the web interface. - The analysis results are published to the XCC component, where the results are persisted in a database and accessible through the XCC web interface. If the result publishing fails, you will receive the following alert:
Core System Test Failed, with the description containing the name of the failing test—here,ResultPublishSystemTest. - If the message is allowed to be delivered, the
corecontainer hands it over back to themtacontainer for sending to the recipient. As in step #2, errors will trigger the following alert:Emails Older Than 100 Seconds Stuck In the Deferred Queue.
xcc_backend.

Container description
MTA
XCC
Sandbox (DANA)
Shared monitoring containers
Start and stop
Generic procedure to start and stop stacks on the xorlab Security Platform components is performed within the stack folder and looks like this:MTA
Stop and start:XCC
Stop and start:Sandbox (DANA)
Stop and start:Reboot
To reboot a component, execute the following command:- XCC: can be rebooted at any time.
-
MTA: stop the
agstack before reboot.
Log files
Most xorlab Security Platform internal containers write log files to a standardized location:/var/log/xorlab/xcc/backend//var/log/xorlab/auth/auth//var/log/xorlab/activeguard/core//var/log/xorlab/dana/analysisnode/
- backend:
xcc.logandxcc_err.log - auth:
auth.logandauth_err.log - core:
activeguard.logandactiveguard_err.log - analysisnode:
analysisnode.logandanalysisnode_err.log
Standard outThe following containers do not have log files:
elasticsearch, kibana, db, and all monitoring containers. For those, logs are written to the standard output which you can read by executing docker compose logs <container> inside the /etc/xorlab/<stack> folder.Email queue
The email queue sizes can be conveniently observed in the grafana monitoring dashboards. For more advanced email queue handling, connect to each MTA separately. List all queued emails:Requeue vs. flushA flush is a lightweight operation where xorlab Security Platform will try to resend all queued emails.
A requeue will treat all queued emails as if they were completely new emails. This will re-apply all header checks, address rewrites, routing decisions, etc. If you use this when there are emails in the deferred queue that already passed through core, they will be sent again to core (which will cause the email to be shown twice in the XCC).
Exporting an email from the queue to EML format
The email files of a particular queue—active, incoming, or deferred—are in the /var/lib/docker/volumes/activeguard_mta_spool/_data/<queue_name> directory on the MTAs. You must be root to access this folder (sudo su).
The email file in the queue directory will have the queue ID as a name (e.g., 9A2821FE2). If you want to convert the email file to the EML format, you can use the following instructions:
-
Run
-
Execute
- Find the email file.
-
Run
- Press Ctrl+D.
-
Now, you can find the EML file in the
/var/log/xorlab/activeguard/mta/directory.
Stopping and resuming accepting emails by MTA
Sometimes you might want to prevent an MTA from accepting emails because, for example, you would like to empty the MTA from messages before performing an update. In this case, use SSH and run the following command (port 25 is used here as an example):eth0 is the interface name, which can be found, for example, with ip -4 a.
When you execute the command, wait one minute—or check in XCC for emails being processed—then shut down xorlab Security Platform.
After the maintenance, you can resume accepting emails:
Docker packet filteringTo learn more, see the Packet filtering and firewalls and Match the original IP and ports for requests from the official Docker Engine documentation.