Deployment Topologies
The xorlab Security Platform supports several deployment options. If you’re unsure which to choose, we recommend starting with theDefault Chain.
- Default Chain: XSP sits between the front MTA and the internal mailbox server. Emails between tenants take a shorter route within XSP, bypassing external systems. Ideal for setups with multiple tenants.
- Microsoft 365: Connectors route emails from M365 to XSP for analysis. Non-quarantined emails are returned via connectors to M365, which is responsible for final delivery.
- Star: A central gateway (typically the front MTA) manages all email traffic, with emails passing through the gateway twice—first for analysis, then for final delivery.
- Front MTA: XSP functions as the front MTA, analyzing incoming messages and routing them to tenants. Outgoing tenant emails are processed by XSP before final delivery.
- Full Chain: XSP sits between the front MTA and the internal mailbox server. Emails between tenants go through XSP to the front MTA, following standard email routing.
guarded_tenants.yml and publish the changes, xorlab will add a unique uid to that tenant. The uid does not need to be set by hand, and it will be left out in config examples below.
Default Chain Topology
Guarded Tenants
Expand to read the instructions.
Expand to read the instructions.
name: Define the name of the tenant. Also visible in the GUI.bccFallbackDomain: Set this attribute to the primary domain of the tenant.domains: Specify the guarded domains of the tenant including the bccFallbackDomain.tenantSelector: Reference the headerName and headerValue of a header that will be used to identify the tenant.Expert Editor: /activeguard/shared/guarded_tenants.yml
Transport Map
Expand to read the instructions.
Expand to read the instructions.
The transport map is used to ensure that incoming emails are delivered to the appropriate next-hop destination (such as the front MTA) based on the recipient’s domain.
- Define a rule for each guarded tenant domain, specifying the correct next-hop destination.
- Use the
smtpcommand to specify the SMTP endpoint (e.g., the front MTA). - The last line should be a default route to handle outgoing email traffic.
Expert Editor: /activeguard/mta/startup_cfg/postfix_custom/transport
Client Access
Expand to read the instructions.
Expand to read the instructions.
Client access rules are used to ensure that incoming emails are correctly routed based on the IP addresses of the front MTA or other mail transfer systems.
- Specify the IP address of the SMTP client, typically the Front MTA or Exchange Server, responsible for routing emails to XSP.
- Use the
permitcommand to allow these connections to access XSP and forward emails.
Expert Editor: activeguard/mta/startup_cfg/postfix_custom/client_access
Client Access Tenant
Expand to read the instructions.
Expand to read the instructions.
This file defines which headers XSP should add to incoming and outgoing emails.
- Structure:
<CIDRblock> PREPEND <headerName>: <headerValue> - The
<CIDRblock>specifies the IP range of the SMTP client responsible for routing emails to XSP - Add
/32to restrict to a single IP address. - The
<headerName>and<headerValue>refers to thetenantSelectoror thetenantSelectors. - The file should always end with an
0.0.0.0/0entry to prevent header spoofing.
Expert Editor: /activeguard/mta/startup_cfg/postfix_custom/client_access_tenant
M365 Topology
Guarded Tenants
Expand to read the instructions.
Expand to read the instructions.
bccFallbackDomain: Set this attribute to the primary domain of the tenant.domains: Specify the guarded domains of the tenant including the bccFallbackDomain.tenantSelectors: Refer to the x-originatororg header of each accepted domain in your Microsoft Exchange environment.Recommendation: List every 'Accepted Domain' as tenantSelector.
Recommendation: List every 'Accepted Domain' as tenantSelector.
- Go to admin.cloud.microsoft/exchange#/accepteddomains
- For each domain listed, define a seperate
selectoringuarded_tenants.yml - Use the following format for each selector:
- HeaderName:
"x-originatororg" - Header value: The domain listed in the “Accepted Domain” column, between double quotation marks.
- HeaderName:
Expert Editor: /activeguard/shared/guarded_tenants.yml
Header Checks
Expand to read the instructions.
Expand to read the instructions.
This config file contains the routing rules of your mail flow. It refers to the headers specified for each tenant in the previous step.
x-originatororgshould correspond to theheaderNameof thetenantSelectorsdefined inguarded_tenants.tenantA.comandtenantB.comshould correspond to theheaderValueof thetenantSelectorsdefined inguarded_tenants.tenanta/b-com.mail.protection.outlook.comshould correspond to the SMTP endpoint (MX server) of theheaderValueof thetenantSelectorsdefined inguarded_tenants.
Expert Editor: /activeguard/mta/startup_cfg/postfix_custom/header_checks_core
Star Topology
Guarded Tenants
Expand to read the instructions.
Expand to read the instructions.
name: Define the name of the tenant. Also visible in the GUI.bccFallbackDomain: Set this attribute to the primary domain of the tenant.domains: Specify the guarded domains of the tenant including the bccFallbackDomain.tenantSelector: Identifies the header that will be set when the email is coming from the trusted infrastructure.Expert Editor: /activeguard/shared/guarded_tenants.yml
Transport Rules
Expand to read the instructions.
Expand to read the instructions.
The transport rules for a multi-tenancy star integration only require one route that redirects all traffic to the central email gateway.
- The
*wildcard matches all traffic. <email-next-hop>should contain the domain of the central email gateway.
Expert Editor: /activeguard/mta/startup_cfg/postfix_custom/transport
Client Access
Expand to read the instructions.
Expand to read the instructions.
Client access rules are used to ensure that incoming emails are correctly routed based on the IP addresses of the front MTA or other mail transfer systems.
- Specify the IP address of central gateway that will send emails to xorlab.
- Use the
permitcommand to allow these connections to access XSP and forward emails.
Expert Editor: activeguard/mta/startup_cfg/postfix_custom/client_access
Front MTA Topology
Guarded Tenants
Expand to read the instructions.
Expand to read the instructions.
name: Define the name of the tenant. Also visible in the GUI.bccFallbackDomain: Set this attribute to the primary domain of the tenant.domains: Specify the guarded domains of the tenant including the bccFallbackDomain.tenantSelector: Reference the headerName and headerValue of a header that will be added by XSP.The headers referenced intenantSelectorneed to match the entries in theclient_access_tenantconfiguration.
Expert Editor: /activeguard/shared/guarded_tenants.yml
Client Access
Expand to read the instructions.
Expand to read the instructions.
Client access rules are used to ensure that incoming emails are correctly routed based on the IP addresses of the front MTA or other mail transfer systems.
- Specify the IP address of the allowed SMTP client, typically the Exchange server.
- Use the
permitcommand to allow these connections to access XSP and forward emails.
Expert Editor: activeguard/mta/startup_cfg/postfix_custom/client_access
Client Access Tenant
Expand to read the instructions.
Expand to read the instructions.
This file defines which headers XSP should add to incoming and outgoing emails.
- Structure:
<CIDRblock> PREPEND <headerName>: <headerValue> - The
<CIDRblock>specifies the IP range of each tenant’s mail server - Add
/32to restrict to a single IP address. - The
<headerName>and<headerValue>refer to thetenantSelectoror thetenantSelectors. - The file should always end with an
0.0.0.0/0entry to prevent header spoofing.
Expert Editor: /activeguard/mta/startup_cfg/postfix_custom/client_access_tenant
Transport Map
Expand to read the instructions.
Expand to read the instructions.
The transport map is used to ensure that incoming emails are delivered to the appropriate next-hop destination (such as the front MTA) based on the recipient’s domain.
- Define a rule for each guarded tenant domain, specifying the correct next-hop destination.
- Use the
smtpcommand to specify the SMTP endpoint (e.g., the front MTA).
Expert Editor: /activeguard/mta/startup_cfg/postfix_custom/transport
Full Chain Topology
In the Full Chain Topology xorlab sits between a front MTA and the Exchange server. The difference to the default chain is that inter-tenant emails are routed to the front MTA and back. Important: the front MTA needs to strip away all x-xor-trusted-client headers from all emails to ensure proper routing.Guarded Tenants
Expand to read the instructions.
Expand to read the instructions.
bccFallbackDomain: Set this attribute to the primary domain of the tenant.domains: Specify the guarded domains of the tenant including the bccFallbackDomain.tenantSelector: If needed, reference a unique trusted headerName and headerValue for specific tenants.interTenantMessageSplitting: Controls whether xorlab splits emails sent between tenants into separate incoming and outgoing messages. By default, this attribute is set to true but for the Full Chain Topology you are required to set it to false.configSets - tenantSelector: Reference the headerName and headerValue of a header that will be added by XSP.The headers referenced intenantSelectorandtenantSelectorsneed to match the entries in theclient_access_tenantconfiguration.
Expert Editor: /activeguard/shared/guarded_tenants.yml
Header Checks
Expand to read the instructions.
Expand to read the instructions.
This config file defines how messages are routed based on the headers assigned in guarded_tenants.yml.
- Structure:
/^<headerName>:<headerValue>/ FILTER smtp:[<SMTP endpoint>] - The
<SMTP endpoint>should include the domain of either the frontMta or the guarded domain’s mail server.
Expert Editor: /activeguard/mta/startup_cfg/postfix_custom/header_checks_core
Client Access
Expand to read the instructions.
Expand to read the instructions.
Client access rules are used to ensure that incoming emails are correctly routed based on the IP addresses of the front MTA or other mail transfer systems.
- Specify the IP address of the SMTP client, typically the Front MTA or Exchange Server, responsible for routing emails to XSP.
- Use the
permitcommand to allow these connections to access XSP and forward emails.
Expert Editor: activeguard/mta/startup_cfg/postfix_custom/client_access
Client Access Tenant
Expand to read the instructions.
Expand to read the instructions.
This file defines which headers XSP should add to incoming and outgoing emails.
- Structure:
<CIDRblock> PREPEND <headerName>: <headerValue> - The
<CIDRblock>specifies the IP range of the Exchange Server. - Add
/32to restrict to a single IP address. - The
<headerName>and<headerValue>refers to thetenantSelectoror thetenantSelectors. - The file should always end with an
0.0.0.0/0entry to prevent header spoofing.
Expert Editor: /activeguard/mta/startup_cfg/postfix_custom/client_access_tenant
Tenant Selector
Tenant selectors are used to assign emails to the correct tenant by evaluating specific mail headers. There are two configuration options:-
tenantSelector: Defines a single set of headers that must all match to assign the message to a tenant (AND logic). -
tenantSelectors: One property that enables you to define more then oneselector. Aselectorcan reference one or more header sets. If multiple header sets are referenced, all need to match (AND-logic). The message matches a tenant if at least oneSelectormatches (OR logic).
configSets.
Expert Editor: /activeguard/shared/guarded_tenants.yml
Tenant Selection Logic
When processing an email, the system determines which Tenant it belongs to based on the following rules. Step 1: Single Match: If exactly one Tenant Selector matches the email, the email is assigned to that Tenant. Step 2: No Match: If no Tenant Selector matches the email, choose the Tenant based on the recipient addresses. If no Tenant can be identified, assign the email to the specialUNKNOWN Tenant.
Step 3: Multiple Matches: If multiple Tenant Selectors match, the selection is resolved using the logic below in the specified order.
-
Assign Tenant based on sender address.
- Prefer a match on the sender’s envelope-from address.
- If no match, check the header-from address.
- Assign Tenant based on recipient addresses. Choose only from the matched Tenant Selectors.
-
If no Tenant can be identified, assign the email to the special
UNKNOWNTenant.
Recipient address matchingFor step 2 and 3: If the Tenant is chosen based on the recipients, and the recipients belong to different Tenants, the email is split for each Tenant. Each split email is assigned a separate GGRID and will be shown as separate email in the UI.
- For all recipients of the email that do not match any tenants (outgoing email) or match the tenant of the email itsef (internal or incoming email), deliver the email.
-
For all recipients of the email that match a different tenant than the one of the email itself (inter-tenant email):
- If
interTenantMessageSplittingis active, re-process the email again with a separateGGRIDand assigned to the recipient tenant. No email delivery at this point. - Else deliver the email. We expect the email to pass again through xorlab.
- If
Config Sets
configSets allow you to define some configuration that can be re-used for multiple tenants.
A config set supports the following parameters. All those parameters can also be set directly on a tenant.
You can overwrite single parameters of the
default set without having to specify all other parameters.default set is always applied to all tenants with the least precedence.