Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Mimecast is a cloud-based, anti-spam, and archive filtering service for securing email accounts and communications for businesses. This collector

Mimecast protects an enterprise’s email infrastructure from viruses, malware, phishing, and the rise of deep-fake attacks. It does this by deploying a layered cyber resilience solution that prevents email-borne infections and reduces data loss by archiving emails. This cloud-based cybersecurity solution also makes it possible to automate the recovery of archived and affected emails for continuous use. It

The Mimecast approach to protecting email structures means it can predict and or anticipate attacks and deal with losses in order to handle real-time threats. It also deals with data loss from ransomware attacks using data archiving. The Devo Mimecast Collector uses the Mimecast API to extract all the relevant information and send it as events to Devo., which eliminates the need to meet ransom demands, as well as struggle with downtime. Mimecast can also be deployed to tackle those annoyingly ‘spammy’ messages that keep cluttering inboxes.

For those who already use any of the popular email management brands such as Microsoft Office 365, Outlook, or Google’s Gsuite, Mimecast’s cloud-based nature makes it compatible with them. It can be deployed to tackle spam, ransomware, or other cybersecurity challenges.

The Devo Mimecast Collector uses the Mimecast API to extract all the relevant information an send it as events to Devo.

Data sources

Data source

Description

API endpoint

Devo table

Audit

Audit EventsAttachments

Attachment Protection Logs

/api/ttp/attachment/get-logs

mail.mimecast.ttp.attachment

Audit

Audit Events

/api/audit/get-audit-events

mail.mimecast.audit.events

Attachments

Attachment Protection LogsDashboard

Dashboard Notifications

/api/ttp/attachmentaccount/get-dashboard-logsnotifications

mail.mimecast.ttpaccount.attachmentdashboard

Impersonation

TTP Impersonation Protect Logs

/api/ttp/impersonation/get-logs

mail.mimecast.ttp.impersonation

Url

TTP URL LogsMessageholdlist

Hold Message List

/api/ttp/urlgateway/get-hold-message-logslist

mail.mimecast.ttpmessage.urllist

Search

Search LogsMessageholdsummary

Message Hold Summary List

/api/archivegateway/get-hold-searchsummary-logslist

mail.mimecast.archivemessage.searchsummary

ViewSearch

Archive Message View Search Logs

/api/archive/get-viewsearch-logs

mail.mimecast.archive.messageviewsearch

Threatfeed

Threat Intel FeedSiem

SIEM Logs

/api/ttpaudit/threatget-intel/getsiem-feedlogs

mail.mimecast.threatsiem.feed

Messageholdlist

Hold Message List

/api/gateway/get-hold-message-listreceipt
mail.mimecast.siem.process
mail.mimecast.message.list

Messageholdsummary

Message Hold Summary List

/api/gateway/get-hold-summary-listsiem.delivery
mail.mimecast.message.summary

Dashboard

Dashboard Notifications

/api/account/get-dashboard-notificationssiem.jrnl
mail.mimecast.accountsiem.dashboard

Siem

SIEM Logs

/api/audit/get-siem-logsav
mail.mimecast.siem.iep
mail.mimecast.siem.impersonation
mail.mimecast.siem.spameventthread
mail.mimecast.siem.ttp

Siem (API v2)

SIEM Batch Logs

/siem/v1/batch/events/cg

mail.mimecast.siem.av_v2
mail.mimecast.siem.receiptdelivery_v2
mail.mimecast.siem.processieo_v2
mail.mimecast.siem.deliveryimpersonation_v2
mail.mimecast.siem.jrnl_v2
mail.mimecast.siem.avprocess_v2
mail.mimecast.siem.iepreceipt_v2
mail.mimecast.siem.impersonationattachment_v2
mail.mimecast.siem.spameventthreadspam_v2
mail.mimecast.siem.ttp

...

url_v2

Threatfeed

Threat Intel Feed

/api/ttp/threat-intel/get-feed

mail.mimecast.threat.feed

Url

TTP URL Logs

/api/ttp/url/get-logs

mail.mimecast.ttp.url

View

Archive Message View Logs

/api/archive/get-view-logs

mail.mimecast.archive.messageview

For more information on how the events are parsed, visit our page.

Vendor setup

There are some requirements to configure the Mimecast collector:

  • Accessing your API applications.

  • Creating user API keys. Refer to the Mimecast official documentation for more information.

Expand
titleAccess your API applications
  1. Log in to the Administration Console.

  2. Click on the Administration toolbar button.

  3. Select the Services/API and Platform Integrations menu item.

Once your API applications display you can:

  • Add an application.

  • Edit an application.

  • Delete an application.

Info

Refer to the Mimecast official documentation for more information.

Expand
titleCreate API keys

Scroll to the middle of API Concepts for detailed instructions.

Authentication

The Mimecast Collector API 2.0 needs two keys that the API uses:

  • Client ID (client_id).

  • Client secret (client_secret)

Expand
titleCredentials

Steps and information to generate these keys can be found in this article.

Expand
titlePermissions

Each API call has a prerequisite section that tells you what permissions are needed for the call. Usually, a basic administrator role will be enough, which should allow you to use the same API keys generated for multiple API calls under the application.  

If you want to create a custom administrative role for this API service account user, follow these steps: 

  1. Navigate to Administration → Account → Roles. 

  2. Click New Role.

  3. Enter a Role Name and Description.

  4. In the Application Permissions section, select the boxes for each required role to be used by the service user account. 

  5. Click Save and Exit

  6. Locate the newly created role and click on the role name. 

  7. Click Add User to Role

  8. Select the email address of the API service user account.

If you want to add the service account user to an existing role:

  1. Navigate to Administration → Account → Roles. 

  2. Click on the administrator role the user will be added to. 

  3. Click Add User to Role.

  4. Select the email address of the API service user account.

Find more details in the Customer Community.

Run the collector

Once the data source is configured, you can either send us the required information if you want us to host and manage the collector for you (Cloud collector), or deploy and host the collector in your own machine using a Docker image (On-premise collector).

...

Rw tab
titleOn-premise collector

This data collector can be run in any machine that has the Docker service available because it should be executed as a docker container. The following sections explain how to prepare all the required setup for having the data collector running.

Structure

The following directory structure should be created for being used when running the collector:

Code Block
<any_directory>
└── devo-collectors/
    └── <product_name>/
        ├── certs/
        │   ├── chain.crt
        │   ├── <your_domain>.key
        │   └── <your_domain>.crt
        ├── state/
        └── config/ 
            └── config.yaml 
Note

Replace <product_name> with the proper value.

Devo credentials

In Devo, go to Administration → Credentials → X.509 Certificates, download the Certificate, Private key and Chain CA and save them in <product_name>/certs/. Learn more about security credentials in Devo here.

...

Note

Replace <product_name> with the proper value.

Editing the config.yaml file

...

Expand
titleVersion 2 of the API

Overview

Mimecast API 2.0 uses OAuth 2.0 to authenticate with the new Mimecast API Gateway using a dedicated Application (created and configured by the customer). To register and configure an Application:

  • For Email Security Cloud Gateway customers:

    • From Mimecast Administration Console navigate to: Administration | Services | API and Platform Integrations | Available Integrations, locate the Mimecast API 2.0 tile and select Generate Keys. Please see the following KB article for further information on Managing API 2.0 Applications: https://community.mimecast.com/s/article/api-integrations-managing-mimecast-api-2-0-applications

    • To successfully create and manage Mimecast API 2.0 applications, the Security Permissions setting for a logged in administrators' role, must be able to Manage Application Roles. Please see the following KB article for further information on managing roles: Customer Community

  • For Email Security Cloud Integrated customers

    • Navigate to Configuration | API 2.0 Applications

    • Select New Application

Authentication

After this process, the two keys that the Mimecast Collector API 2.0 needs are created, the keys are:

  • Client ID(client_id).

  • Client Secret ( client_secret)

Expand
titleVersion 1 of the API

Overview

Following steps are necessary for setup at the Mimecast side.

Log in from https://www.mimecast.com/tech-connect/documentation/api-overview/api-concepts/

Accessing your API applications:

  1. Log on to the Administration Console.

  2. Click on the Administration toolbar button.

  3. Select the Services | API and Platform Integrations menu item.

With your API applications displayed you can:

  • Add an application

  • Edit an application

  • Delete an application

Further information may be found here: https://community.mimecast.com/s/article/Managing-API-Applications-505230018

Creating user API keys:

Scroll to middle of: https://www.mimecast.com/tech-connect/documentation/api-overview/api-concepts/ for detailed instructions.

Authentication

The Mimecast Collector needs four keys that the API uses, the four keys are:

  • API Application ID(app_id).

  • API Key(app_key).

  • Access Key(access_key).

  • Secret Key(secret_key).

Credentials

  • API Application ID & API Key

Steps

1

Click Add API Application.

2

Fill in the Details section as outlined below:

3

Click Next.

4

Fill in the Settings section as outlined below:

5

Click Next.

6

Review the Summary page to ensure all details are correct. To fix any errors:

  1. Click on the Edit link next to the Details or Settings to return to the relevant page.

    • Make your changes and click on the Next button to proceed to the Summary page again.

7

Click on the Add button. The application's details display in a slide-in panel.

8

Copy and paste the Application ID and Application Key to a safe place for use later in the process.

9

Wait 30 minutes and click on the application in your list. A panel opens.

  1. While waiting for the application to become live, you may go through the Prerequisites section of Creating User Association Keys. 

10

Click on the X to return to the list of API applications.

More details https://community.mimecast.com/s/article/Managing-API-Applications-505230018#Creating-an-API-user-Authentication-Profile .

  • Access Key & Secret Key

1

Click on API Application from the application list.

2

Click Create Keys. A "Create Keys" wizard is displayed with the Account tab selected.

3

Enter the Email Address of your service account

4

Click Next

5

Complete the Authentication dialog:

6

Click Next. The Verification tab is displayed.

7

If you are using a 2-step authentication mechanism, a verification code is sent to you by SMS or email. 

8

Enter the Code within 15 minutes.

9

Click Next. The Keys tab is displayed with the generated keys hidden by default.

  1. Click on the  icon to display a key.

    • Click on the   icon to copy the key to your clipboard.

10

Click on the Finish button to exit the wizard and return to the application list.

More details https://community.mimecast.com/s/article/Managing-API-Applications-505230018#Creating-an-API-user-Authentication-Profile .

Permissions (both API 1 and 2)

Each API call has a prerequisite section that tells you what permissions are needed for the call. Usually, a Basic Administrator role will suffice, which should allow you to use the same API keys generated for multiple API calls under the application.  

Service

Permissions

SIEM Audit

Gateway | Tracking | Read

Audit

Account | Logs | Read

TTP attachment

Monitoring | Attachment Protection | Read

TTP impersonation

Monitoring | Impersonation Protection | Read

TTP URL

Monitoring | URL Protection | Read

Archive search

Archive | Search Logs | Read

Archive view

Archive | View Logs | Read

TTP Thread intel

Services | Gateway | Tracking | Read

Message Hold List

Account | Dashboard | Read

Message Hold Summary

Account | Monitoring | Held Summary | Read

Dashboard

Account | Dashboard | Read

If you want to create a custom administrative role for this API service account user: 

  1. Navigate to Administration | Account | Roles. 

  2. Click New Role.

  3. Enter a Role Name and Description.

  4. In the Application Permissions section, select the boxes for each required role to be used by the service user account. 

  5. Click Save and Exit

  6. Locate the newly created role and click on the role name. 

  7. Click Add User to Role

  8. Click on the email address of the API service user account. 

If you want to add the service account user to an existing role:

  1. Navigate to Administration | Account | Roles. 

  2. Click on the administrator role the user will be added to. 

  3. Click Add User to Role.

  4. Click on the email address of the API service user account.

More details https://community.mimecast.com/s/article/Managing-API-Applications-505230018#Creating-an-API-user-Authentication-Profile .

Run the collector

Once the data source is configured, you can either send us the required information if you want us to host and manage the collector for you (Cloud collector), or deploy and host the collector in your own machine using a Docker image (On-premise collector).

Rw ui tabs macro
Rw tab
titleCloud collector

We use a piece of software called Collector Server to host and manage all our available collectors.

To enable the collector for a customer:

  1. In the Collector Server GUI, access to the domain in which you want this instance to be created in, click on Add Collector and search for “Mimecast Collector - Integrations Factory”, then click on the result.

  2. In the Version field, select the latest value.

  3. In the Collector Name field, set the value you prefer (this name must be unique inside the same Collector Server domain).

  4. In the Parameters section, establish the Collector Parameters as follows below:

Editing the JSON configuration

Code Block
{
  "global_overrides": {
    "debug": false
  },
  "inputs": {
    "mimecast_input": {
      "id": "<short_unique_identifier>",
      "enabled": true,
      "base_url": "your_base_url",
      "auth_url": "your_auth_url",
      "pageSize": "<page_size_value>",
      "autoconfig": {
        "refresh_interval_in_seconds": "refresh_interval_value",
        "creation_timeout_in_second": "creation_timeout_value"
      },
      "credentials": {
        "client_id": "your_client_id",
        "client_secret": "your_client_secret",
        "app_id": "your_app_id",
        "app_key": "your_app_key",
        "access_key": "your_access_key",
        "secret_key": "your_secret_key"
      },
      "services": {
        "service_mimecast_client_api": {
          "last_configuration_timestamp": "last_configuration_timestamp_value",
          "endpoints": [
            {
              "endpoints_1": {
                "name": "audit",
                "initial_lookback_period": "1d"
              }
            },
            {
              "endpoints_2": {
                "name": "attachments",
                "initial_lookback_period": "1d"
              }
            },
            {
              "endpoints_3": {
                "name": "impersonation",
                "initial_lookback_period": "1d"
              }
            },
            {
              "endpoints_4": {
                "name": "url",
                "initial_lookback_period": "1d"
              }
            },
            {
              "endpoints_5": {
                "name": "search",
                "initial_lookback_period": "1d"
          - endpoints_1:   }
           name: audit},
            {
 initial_lookback_period: 1d           - "endpoints_2:6": {
                "name": "view",
 attachments               "initial_lookback_period": "1d"
          - endpoints_3:   }
           name: impersonation},
            {
 initial_lookback_period: 1d           - "endpoints_4:7": {
                "name": "threatfeed",
url                "initial_lookback_period": "1d"
          - endpoints_5:   }
           name: search},
            {
 initial_lookback_period: 1d           - "endpoints_68": {
                "name": "messageholdlist",
 view               "initial_lookback_period": "1d"
          - endpoints_7:   }
           name: threatfeed},
            {
 initial_lookback_period: 1d           - "endpoints_8:9": {
                "name": "messageholdsummary",
 messageholdlist               "initial_lookback_period": "1d"
          - endpoints_9:   }
           name: messageholdsummary},
            {
 initial_lookback_period: 1d           - "endpoints_10": {
                "name": "dashboard",
                "initial_lookback_period": "1d"
   mimecast_siem_input:     id: 2     enabled:}
false     requests_per_second: 5     base_url: your_base_url }
    auth_url: your_auth_url     pageSize:]
10     autoconfig:   }
   refresh_interval_in_seconds: 60  }
   # Runs},
the setup every x seconds (default 600) "mimecast_siem_input": {
       creation_timeout_in_second: 60"id": "<short_unique_identifier>",
      "enabled": true,
  # Set up the setup timeout (default 60) "requests_per_second": "requests_per_second_value",
      credentials"base_url": "your_base_url",
       client_id"auth_url": <client"your_idauth_value>url",
        client_secret"pageSize": <client"page_secret_value>
    services:size_value",
      "autoconfig": {
        service_mimecast_siem_client_api:"refresh_interval_in_seconds": "refresh_interval_value",
        last_configuration_timestamp: 2021-12-02T13:10:00Z # change this if you want to get your state changed!
        endpoints:
"creation_timeout_in_second": "creation_timeout_value"
      },
      "credentials": {
         siem"client_id": "your_client_id",
           initial_lookback_period: 1d
Info

All defined service entities will be executed by the collector. If you do not want to run any of them, just remove the entity from the services object.

Replace the placeholders with your required values following the description table below:

Parameter

Data type

Type

Value range/ Format

Details

debug

bool

Mandatory

false / true

This will make the collector generate (or not) log messages with the DEBUG level.

id

str

Mandatory

Minimum length: 1
Maximum length: 5

Alphanumeric identifier.

enabled

bool

Mandatory

true/false

Enables or disables the input.

base_url

str

Mandatory

The region related to the API credentials, the string value has to be one of the valid URL’s in Global Base URLs | Mimecast.

credentials

dictionary

Mandatory

Code Block
"client_secret": "your_client_secret",
        "app_id": "your_app_id",
        "app_key": "your_app_key",
        "access_key": "your_access_key",
        "secret_key": "your_secret_key"
      },
      "services": {
        "service_mimecast_siem_client_api": {
          "last_configuration_timestamp": "last_configuration_timestamp_value",
          "endpoints": {
            "siem": {
              
client_id: <client_id_value>
"initial_lookback_period": "0d",
              
client
"page_
secret
token": 
<client_secret_value>

Credentials to use the API.

endpoints

list

Mandatory

Minimum length: 1

Posible values:

Code Block- endpoints_1:
"<page_token>"
        
name:
 
audit
   }
 
initial_lookback_period:
 
1d
 
-
 
endpoints_2:
     
name:
 
attachments
}
    
initial_lookback_period:
 
1d
 
-
 
endpoints_3:
 }
   
name:
 
impersonation
  }
  
initial_lookback_period:
 
1d
 
-
}
endpoints_4:
  
name: url initial_lookback_period: 1d - endpoints_5: name: search initial_lookback_period: 1d - endpoints_6: name: view initial_lookback_period: 1d - endpoints_7: name: threatfeed initial_lookback_period: 1d - endpoints_8: name: messageholdlist initial_lookback_period: 1d - endpoints_9: name: messageholdsummary initial_lookback_period: 1d - endpoints_10: name: dashboard initial_lookback_period: 1d

An array with at least one endpoint, the collector will pull from the selected endpoints.

last_configuration_timestamp

str

Mandatory

Date following the next format:

yyyy-mm-ddThh:mm:ss.000Z

Change this value to a date after the initial configuration to reset the state of the collector.

initial_lookback_period

str

Mandatory

Number of days, Example:

  • 1d

 

This value will be subtracted from the current date to execute all queries in that range if no state is detected (Initial execution for example).

 This value only has an effect for mimecast_input, mimecast_siem_input always pull from the last 7 days.

Download the Docker image

The collector should be deployed as a Docker container. Download the Docker image of the collector as a .tgz file by clicking the link in the following table:

Collector Docker image

SHA-256 hash

collector-mimecast_collector-docker-image-2.0.1

c422b9205a569d5a9e7ccf510852b6d756ba97e3a46e734efeb633005482c79a

Use the following command to add the Docker image to the system:

Code Block
gunzip -c <image_file>-<version>.tgz | docker load

Once the Docker image is imported, it will show the real name of the Docker image (including version info). Replace <image_file> and <version> with a proper value.

The Docker image can be deployed on the following services:

Docker

Execute the following command on the root directory <any_directory>/devo-collectors/<product_name>/

Code Block
docker run \
--name <YOUR_COLLECTOR_NAME>\
--volume $PWD/certs:/devo-collector/certs \
--volume $PWD/config:/devo-collector/config \
--volume $PWD/state:/devo-collector/state \
--env CONFIG_FILE=<YOUR-CONFIG-FILE>.yaml \
--rm -it <YOUR_DEVO_IMAGE_NAME>:<version>
Note

Replace <product_name>, <image_name> and <version> with the proper values.

Docker Compose

The following Docker Compose file can be used to execute the Docker container. It must be created in the <any_directory>/devo-collectors/<product_name>/ directory.

Code Block
version: '3'
services:
  <YOUR_COLLECTOR_NAME>:
    image: <YOUR_DEVO_IMAGE_NAME>:${IMAGE_VERSION:-latest}
    volumes:
      - ./certs:/devo-collector/certs
      - ./config:/devo-collector/config
      - ./state:/devo-collector/state
    environment:
      - CONFIG_FILE=${CONFIG_FILE:-<YOUR-CONFIG-FILE>.yaml}

To run the container using docker-compose, execute the following command from the <any_directory>/devo-collectors/<product_name>/ directory:

Code Block
IMAGE_VERSION=<version> docker-compose up -d
Note

Replace <product_name>, <image_name> and <version> with the proper values.

Rw tab
titleCloud collector

We use a piece of software called Collector Server to host and manage all our available collectors.

To enable the collector for a customer:

  1. In the Collector Server GUI, access to the domain in which you want this instance to be created in, click on Add Collector and search for “Mimecast Collector - Integrations Factory”, then click on the result.

  2. In the Version field, select the latest value.

  3. In the Collector Name field, set the value you prefer (this name must be unique inside the same Collector Server domain).

  4. In the Parameters section, establish the Collector Parameters as follows below:

Editing the JSON configuration

Code Block
{
"mimecast_input": {
      "id": "<short_unique_identifier>}
}
Info

All defined service entities will be executed by the collector. If you do not want to run any of them, just remove the entity from the services object.

Please replace the placeholders with real world values following the description table below:

Parameter

Data Type

Type

Value Range/ Format

Details

id

str

Mandatory

Minimum length: 1
Maximum length: 5

Alphanumeric identifier.

enabled

bool

Mandatory

true/false

Enables or disables the input.

base_url

str

Mandatory

For v2 API
https://api.services.mimecast.com

For v1 API, see:
Global Base URLs

Base url for all the APIs

auth_url

str

Mandatory

For v2 API:
"https://api.services.mimecast.com/oauth/token"
For v1:

Delete this parameter

Auth url to generated auth token.

credentials

dictionary

Mandatory

For v2 API:

Code Block
"credentials": {
        "client_id": "your_client_id",
        "client_secret": "your_client_secret"
},

For v1:

Code Block
"credentials": {
  "app_id": "your_app_id",
  "app_key": "your_app_key",
  "access_key": "your_access_key",
  "secret_key": "your_secret_key"
}

Credentials to use the API.

endpoints

list

Mandatory

Minimum length: 1

Posible values:

Code Block
[
          {
            "endpoints_1": {
              "name": "audit",
              "initial_lookback_period": "1d"
            }
          },
          {
            "endpoints_2": {
              "name": "attachments",
              "initial_lookback_period": "1d"
            }
          },
          {
            "endpoints_3": {
              "name": "impersonation",
              "initial_lookback_period": "1d"
            }
          },
          {
            "endpoints_4": {
              "name": "url",
      
"enabled":
 
true,
       "
base
initial_lookback_
url
period": "
your_base_url",
1d"
            }
          },
       
"auth_url":
 
"your_auth_url",
  {
    
"pageSize":
 
"<page_size_value>",
       "
autoconfig
endpoints_5": {
     
{
         "
refresh_interval_in_seconds
name": "
refresh_interval_value
search",
              "
creation
initial_
timeout
lookback_
in_second
period": "
creation_timeout_value
1d"
      
},
      }
"credentials":
 
{
         
"client_id": "your_client_id"
},
        
"client_secret":
 
"your_client_secret"
 {
     
},
       "
services
endpoints_6": {
              "name": "
service_mimecast_client_api": {
view",
              "
last
initial_
configuration
lookback_
timestamp
period": "
last_configuration_timestamp_value",
1d"
            }
     
"endpoints":
 
[
    },
        
{
  {
            "endpoints_
1
7": {

              
"name": "
audit
threatfeed",

              "initial_lookback_period": "1d"

            
}

          },

          {

            
"endpoints_
2
8": {

              "name": "
attachments
messageholdlist",

              "initial_lookback_period": "1d"

            }

          
},

          {

            "endpoints_
3
9": {

              "name": "
impersonation
messageholdsummary",

              
"initial_lookback_period": "1d"

            }

          },

          
{

            "endpoints_
4
10": {

              
"name": "
url
dashboard",

              "initial_lookback_period": "1d"

            
}

          }
,

        
{ "endpoints_5": { "name": "search", "initial_lookback_period": "1d" } }, { "endpoints_6": { "name": "view", "initial_lookback_period": "1d" } }, { "endpoints_7": { "name": "threatfeed", "initial_lookback_period": "1d"
]

An array with at least one endpoint, the collector will pull from the selected endpoints.

last_configuration_timestamp

str

Mandatory

Date following the next format:

yyyy-mm-ddThh:mm:ss.000Z

Change this value to a date after the initial configuration to reset the state of the collector.

initial_lookback_period

str

Mandatory

Number of days, Example:

  • 1d

 

This value will be subtracted from the current date to execute all queries in that range if no state is detected (Initial execution for example).

 This value only has an effect for mimecast_input, mimecast_siem_input always pull from the last 7 days.

page_token

str

Optional

Token from app log

Advanced theme: it is possible to put a pagination token from the collector to start fetching data from a given page.

We recommend to leave parameters not in the list with their default values.

Keep in mind that the Mimecast collector has two different inputs:

  • mimecast_input

  • mimecast_siem_input

The collector can use both inputs or just one. Each input uses different endpoints and feeds different tables in Devo. Make sure to check the credentials given to determine the inputs and endpoints to use.

Rw tab
titleOn-premise collector

This data collector can be run in any machine that has the Docker service available because it should be executed as a docker container. The following sections explain how to prepare all the required setup for having the data collector running.

Structure

The following directory structure should be created for being used when running the collector:

Code Block
<any_directory>
└── devo-collectors/
    └── <product_name>/
        ├── certs/
     }      ├── chain.crt
     },             {
├── <your_domain>.key
           └──  "endpoints_8": {<your_domain>.crt
        ├── state/
       "name": "messageholdlist",
 └── config/ 
            └──  "initial_lookback_period": "1d"
              }
            },
            {
              "endpoints_9": {
                "name": "messageholdsummary",config.yaml 
Note

Replace <product_name> with the proper value.

Devo credentials

In Devo, go to Administration → Credentials → X.509 Certificates, download the Certificate, Private key and Chain CA and save them in <product_name>/certs/. Learn more about security credentials in Devo here.

Image Added
Note

Replace <product_name> with the proper value.

Editing the config.yaml file

Code Block
globals:
  debug: false
  id: not_used
  name: mimecast_collector
  persistence:
    type: filesystem
    config:
      directory_name: state
  queue_max_size_in_messages: 1000
     "initial_lookback_period": "1d"
    queue_wrap_max_size_in_messages: 100
outputs:
#  devo_1:
#    type: devo_platform
#    }config:
#      address: collector-us.devo.io
#    },  port: 443
#      type: SSL
# {     chain:  chain.crt
#      cert: "endpoints_10": {<devo_domain>.crt
#      key: <devo_domain>.key
inputs:
  mimecast_input:
     "name": "dashboard",id: 1
    enabled: true
    requests_per_second: 5
     "initial_lookback_period": "1d"base_url: your_base_url
    auth_url: your_auth_url
    pageSize: 1000
    }autoconfig:
      refresh_interval_in_seconds: 60     } # Runs the setup every x seconds (default 600)
 ]     creation_timeout_in_second: 60   }     # Set }up the setup timeout (default },60)
    "mimecast_siem_input": {credentials:
      "client_id": "<short<client_uniqueid_identifier>",value>
      "enabled": true,
      "requests_per_second": "requests_per_second_value",client_secret: <client_secret_value>
      "baseapp_url"id: "your<app_baseid_url",value>
      "authapp_url"key: "your<app_authkey_url",value>
      "pageSize"access_key: "page<access_sizekey_value",value>
      "autoconfig": {
 secret_key: <secret_key_value>
    services:
      "refreshservice_intervalmimecast_inclient_seconds": "refresh_interval_value",api:
        "creationlast_timeout_in_second": "creation_timeout_value"
      },
      "credentials": {configuration_timestamp: 2021-12-02T13:10:00Z # change this if you want to get your state changed!
        endpoints:
 "client_id": "your_client_id",        - "clientendpoints_secret"1:
"your_client_secret"       },       "services"name: {
     audit
  "service_mimecast_siem_client_api": {           "lastinitial_configurationlookback_timestamp"period: "last_configuration_timestamp_value",1d
          - "endpoints"_2:
 {             "siem"name: {attachments
              "initial_lookback_period": "1d"
          - endpoints_3:
}           }   name: impersonation
    }       }     }
}
Info

All defined service entities will be executed by the collector. If you do not want to run any of them, just remove the entity from the services object.

Please replace the placeholders with real world values following the description table below:

Parameter

Data Type

Type

Value Range/ Format

Details

id

str

Mandatory

Minimum length: 1
Maximum length: 5

Alphanumeric identifier.

enabled

bool

Mandatory

true/false

Enables or disables the input.

base_url

str

Mandatory

The region related to the API credentials, the string value has to be one of the valid URL’s in https://integrations.mimecast.com/documentation/api-overview/global-base-urls/.

credentials

dictionary

Mandatory

Code Block"credentials": {
initial_lookback_period: 1d
          - endpoints_4:
              name: url
              initial_lookback_period: 1d
          - endpoints_5:
              name: search
              initial_lookback_period: 1d
          - endpoints_6:
              name: view
              initial_lookback_period: 1d
          - endpoints_7:
              name: threatfeed
              initial_lookback_period: 1d
          - endpoints_8:
              name: messageholdlist
              initial_lookback_period: 1d
          - 
"client_id": "your_client_id",
endpoints_9:
              name: messageholdsummary
              initial_lookback_period: 1d
          - endpoints_10:
              name: dashboard
         
"client_secret":
 
"your_client_secret"
 
},

Credentials to use the API.

endpoints

list

Mandatory

Minimum length: 1

Posible values:

Code Block[
   initial_lookback_period: 1d
  mimecast_siem_input:
   
{
 id: 2
    enabled: false
    
"endpoints_1"
requests_per_second: 
{
5
    base_url: your_base_url
    
"name": "audit",
auth_url: your_auth_url
    pageSize: 10
    autoconfig:
      
"initial_lookback_period": "1d"
refresh_interval_in_seconds: 60      # Runs the setup every x seconds 
}
(default 600)
      creation_timeout_in_second: 60  
},
      # Set up the setup 
{
timeout (default 60)
    credentials:
     
"endpoints_2":
 
{
  client_id: <client_id_value>
        
"name": "attachments",
client_secret: <client_secret_value>
        
"initial_lookback_period": "1d"
app_id: <app_id_value>
        app_key: <app_key_value>
     
}
   access_key: <access_key_value>
      
},
  secret_key: <secret_key_value>
    services:
  
{
    service_mimecast_siem_client_api:
        
"endpoints_3": { "name": "impersonation",
last_configuration_timestamp: 2021-12-02T13:10:00Z # change this if you want to get your state changed!
        endpoints:
   
"initial_lookback_period":
 
"1d"
      siem:
      
}
      initial_lookback_period: 0d
   
},
         
{ "endpoints_4": { "name": "url", "initial_lookback_period": "1d" } }, { "endpoints_5": { "name": "search",
page_token: <page_token>
Info

All defined service entities will be executed by the collector. If you do not want to run any of them, just remove the entity from the services object.

Replace the placeholders with your required values following the description table below:

Parameter

Data type

Type

Value range/ Format

Details

id

str

Mandatory

Minimum length: 1
Maximum length: 5

Alphanumeric identifier.

enabled

bool

Mandatory

true/false

Enables or disables the input.

base_url

str

Mandatory

For v2 API
https://api.services.mimecast.com

For v1 API, see:
Global Base URLs

Base url for all the APIs

auth_url

str

Mandatory

For v2 API:
"https://api.services.mimecast.com/oauth/token"
For v1:

Delete this parameter

Auth url to generated auth token.

credentials

dictionary

Mandatory

Code Block
        client_id: <client_id_value>
        
"initial_lookback_period": "1d"
client_secret: <client_secret_value>

Credentials to use the API.

endpoints

list

Mandatory

Minimum length: 1

Posible values:

Code Block
- endpoints_1:
    name: audit
    initial_lookback_period: 1d
}
- endpoints_2:
    name: attachments
   
},
 initial_lookback_period: 1d
- endpoints_3:
    name: 
{
impersonation
    
"endpoints_6": {
initial_lookback_period: 1d
- endpoints_4:
    name: url
    initial_lookback_period: 1d
"name": "view",
- endpoints_5:
    name: 
search
    
"
initial_lookback_period
"
: 
"
1d
"

- endpoints_6:
    name: view
    
}
initial_lookback_period: 1d
- endpoints_7:
    name: threatfeed
  
},
  initial_lookback_period: 1d
- endpoints_8:
    name: 
{
messageholdlist
    initial_lookback_period: 1d
- endpoints_9:
    
"endpoints_7"
name: 
{
messageholdsummary
    initial_lookback_period: 1d
- endpoints_10:
    name: dashboard
"name":
 
"threatfeed",
   initial_lookback_period: 
"
1d

An array with at least one endpoint, the collector will pull from the selected endpoints.

last_configuration_timestamp

str

Mandatory

Date following the next format:

yyyy-mm-ddThh:mm:ss.000Z

Change this value to a date after the initial configuration to reset the state of the collector.

initial_lookback_period

": "1d" } }, { "endpoints_8": { "name": "messageholdlist", "initial_lookback_period": "1d" } }, { "endpoints_9": { "name": "messageholdsummary", "initial_lookback_period": "1d" } }, { "endpoints_10": { "name": "dashboard", "initial_lookback_period": "1d" } } ]

An array with at least one endpoint, the collector will pull from the selected endpoints.

last_configuration_timestamp

str

Mandatory

Date following the next format:

yyyy-mm-ddThh:mm:ss.000Z

Change this value to a date after the initial configuration to reset the state of the collector.

initial_lookback_period

str

Mandatory

Number of days, Example:

  • 1d

 

This value will be subtracted from the current date to execute all queries in that range if no state is detected (Initial execution for example).

 This value only has an effect for mimecast_input, mimecast_siem_input always pull from the last 7 days.

We recommend to leave parameters not in the list with their default values.

Keep in mind that the Mimecast collector has two different inputs:

  • mimecast_input

  • mimecast_siem_input

The collector can use both inputs or just one. Each input uses different endpoints and feeds different tables in Devo. Make sure to check the credentials given to determine the inputs and endpoints to use. Using Postman is a great way to check the credentials to each input. Read more here.

Input

Endpoint

Tables

mimecast_input

  • /api/audit/get-audit-events

  • /api/ttp/attachment/get-logs

  • /api/ttp/impersonation/get-logs

  • /api/ttp/url/get-logs

  • /api/archive/get-search-logs

  • /api/archive/get-view-logs

  • /api/ttp/threat-intel/get-feed

  • /api/gateway/get-hold-message-list

  • /api/gateway/get-hold-summary-list

  • /api/account/get-dashboard-notifications

  • mail.mimecast.audit.events

  • mail.mimecast.ttp.attachment

  • mail.mimecast.ttp.impersonation

  • mail.mimecast.ttp.url

  • mail.mimecast.archive.search

  • mail.mimecast.archive.messageview

  • mail.mimecast.threat.feed

  • mail.mimecast.message.list

  • mail.mimecast.message.summary

  • mail.mimecast.account.dashboard

mimecast_siem_input

  • /api/audit/get-siem-logs

  • mail.mimecast.siem.receipt

  • mail.mimecast.siem.process

  • mail.mimecast.siem.delivery

  • mail.mimecast.siem.jrnl

  • mail.mimecast.siem.av

  • mail.mimecast.siem.iep

  • mail.mimecast.siem.impersonation

  • mail.mimecast.siem.spameventthread

  • mail.mimecast.siem.ttp

Change log

...

Release

...

Released on

...

Release type

...

Details

...

Recommendations

...

 v2.0.1

...

...

str

Mandatory

Number of days, Example:

  • 1d

 

This value will be subtracted from the current date to execute all queries in that range if no state is detected (Initial execution for example).

 This value only has an effect for mimecast_input, mimecast_siem_input always pull from the last 7 days.

page_token

str

Optional

Token from app log

Advanced theme: it is possible to put a pagination token from the collector to start fetching data from a given page.

Download the Docker image

The collector should be deployed as a Docker container. Download the Docker image of the collector as a .tgz file by clicking the link in the following table:

Collector Docker image

SHA-256 hash

collector-mimecast_collector-docker-image-2.1.1

e3b2be797dc29c071b0324977c6f03437d87bc7d58a86455cd81142af5c027d1

Use the following command to add the Docker image to the system:

Code Block
gunzip -c <image_file>-<version>.tgz | docker load

Once the Docker image is imported, it will show the real name of the Docker image (including version info). Replace <image_file> and <version> with a proper value.

The Docker image can be deployed on the following services:

Docker

Execute the following command on the root directory <any_directory>/devo-collectors/<product_name>/

Code Block
docker run \
--name <YOUR_COLLECTOR_NAME>\
--volume $PWD/certs:/devo-collector/certs \
--volume $PWD/config:/devo-collector/config \
--volume $PWD/state:/devo-collector/state \
--env CONFIG_FILE=<YOUR-CONFIG-FILE>.yaml \
--rm -it <YOUR_DEVO_IMAGE_NAME>:<version>
Note

Replace <product_name>, <image_name> and <version> with the proper values.

Docker Compose

The following Docker Compose file can be used to execute the Docker container. It must be created in the <any_directory>/devo-collectors/<product_name>/ directory.

Code Block
version: '3'
services:
  <YOUR_COLLECTOR_NAME>:
    image: <YOUR_DEVO_IMAGE_NAME>:${IMAGE_VERSION:-latest}
    volumes:
      - ./certs:/devo-collector/certs
      - ./config:/devo-collector/config
      - ./state:/devo-collector/state
    environment:
      - CONFIG_FILE=${CONFIG_FILE:-<YOUR-CONFIG-FILE>.yaml}

To run the container using docker-compose, execute the following command from the <any_directory>/devo-collectors/<product_name>/ directory:

Code Block
IMAGE_VERSION=<version> docker-compose up -d
Note

Replace <product_name>, <image_name> and <version> with the proper values.

API limits and duplicates

The Mimecast API has some call rate limits. When a limit is reached, the collector shows a 429 error. More details about MImecast limits can be found here and here

The Mimecast API sometimes sends duplicate events (it is not common). The collector tries to filter out the duplicates, but it is not possible to guarantee that all duplicates are deleted.

Change log

-

Release

Released on

Release type

Recommendations

v2.1.1

Status
colourYellow
titlebug fixing

Recommended version

Expand
titleDetails

Bug fixes

  • Solved CVE-2024-45490, CVE-2024-45491, CVE-2024-45492 updating base image.

v2.1.0

Status
colourPurple
titleNew features

Status
colourBlue
titleIMPROVEMENTS

 

Expand
titleDetails

New features

  • Integrated Mimecast API v2 for SIEM events, using Batch download

  • New tables for new event formats
    mail.mimecast.siem.av_v2
    mail.mimecast.siem.delivery_v2
    mail.mimecast.siem.ieo_v2
    mail.mimecast.siem.impersonation_v2
    mail.mimecast.siem.jrnl_v2
    mail.mimecast.siem.process_v2
    mail.mimecast.siem.receipt_v2
    mail.mimecast.siem.attachment_v2
    mail.mimecast.siem.spam_v2
    mail.mimecast.siem.url_v2

Improvements

  • Changed default cycle value to 300 seconds for SIEM service, to avoid 429 from the API

  • Migrated to DCSDK version 1.12.4

    • Fixed error related a ValueError exception not well controlled.

    • Fixed error related with loss of some values in internal messages (collector_name, collector_id and job_id)

    • Improve Controlled stop when InputProcess is killed

    • Change internal queue management for protecting against OOMK

    • Extracted ModuleThread structure from PullerAbstract

    • Improve Controlled stop when both processes fails to instatiate

 v2.0.1

Status
colourPurple
titleNew features

Status
colourBlue
titleIMPROVEMENTS

-

Expand
titleDetails

New features

  • Integrated both Mimecast API v2 and API v1

  • Deleted duplited SIEM events

  • New parameter for SIEM service inicialization

Improvements

  • Some small fixes and changes for robustness

  • Migrated to DCSDK version 1.12.2

    • Added new sender for relay in house + TLS

    • Added persistence functionality for gzip sending buffer

    • Added Automatic activation of gzip sending

    • Improved behaviour when persistence fails

    • Upgraded DevoSDK dependency to v5.4.0

    • Fixed console log encoding

    • Restructured python classes

    • Improved behaviour with non-utf8 characters

    • Decreased defaut size value for internal queues (Redis limitation, from 1GiB to 256MiB)

    • New persistence format/structure (compression in some cases)

    • Removed dmesg execution (It was invalid for docker execution)

 v1.2.0

Status
colourYellowBlue
titleIMPROVEMENTS

-

Expand
titleDetails

Improvements

  • Upgraded the mimecast api from v1 to v2.

  • Updated DCSDK from 1.10.2 to 1.11.1