MERNMail logo

Configuration

This guide will walk you through the process of configuring MERNMail. The configuration is managed through environment variables, which are defined in a .env file. An example .env.example file is provided in the repository to help you get started.

Creating the .env File

  1. Copy the .env.example File: First, copy the .env.example file to create a new .env file in the root directory of your project:

    cp .env.example .env
    
  2. Edit the .env File: Open the .env file in your preferred text editor and update the values as needed.

Configuration Options

General Settings

  • PORT: The port on which the MERNMail server listens.
  • ATTACHMENTS_PATH: The absolute path to the directory that contains attachments. If not set, the "attachments" directory in the script root will be used.

Database Configuration

  • MONGODB_CONNSTRING: The MongoDB connection string.

Encryption Settings

  • ENCRYPTION_SECRETKEY: A 256-bit secret key for password encryption. You can generate this key using the command openssl rand -base64 32.
  • ENCRYPTION_IV: A 128-bit IV for password encryption. You can generate this IV using the command openssl rand -base64 16.

JWT Configuration

  • JWT_SECRET: The secret key for JWT (JSON Web Token) authentication. You can generate this key using the command openssl rand -base64 32.
  • JWT_SECURECOOKIE: Set this to 1 if users access the webmail from HTTPS.

Email Receiving Configuration

  • EMAIL_RECV_PROTOCOL: The email receiving protocol. This can be pop3 or imap.
  • EMAIL_RECV_HOST: The host for receiving emails.
  • EMAIL_RECV_PORT: The port for receiving emails.
  • EMAIL_RECV_TLS: Set this to 1 to enable TLS for receiving emails.
  • EMAIL_RECV_ALLOWBADCERTIFICATES: Set this to 1 to allow bad TLS certificates for receiving emails.
  • EMAIL_RECV_DISCARDDOMAIN: Set this to 1 to log into email server without the email domain in the username.

Email Sending Configuration

  • EMAIL_SEND_PROTOCOL: The email sending protocol. This can be smtp.
  • EMAIL_SEND_HOST: The host for sending emails.
  • EMAIL_SEND_PORT: The port for sending emails.
  • EMAIL_SEND_TLS: Set this to 1 to enable TLS for sending emails. If using STARTTLS, set this to 0.
  • EMAIL_SEND_ALLOWBADCERTIFICATES: Set this to 1 to allow bad TLS certificates for sending emails.
  • EMAIL_SEND_DISCARDDOMAIN: Set this to 1 to log into email server without the email domain in the username.

Example Configuration

Here is an example of what your .env file might look like:

PORT=3000
ATTACHMENTS_PATH=/path/to/attachments
MONGODB_CONNSTRING=mongodb://localhost:27017/mernmail
ENCRYPTION_SECRETKEY=your_256_bit_secret_key
ENCRYPTION_IV=your_128_bit_iv
JWT_SECRET=your_jwt_secret
JWT_SECURECOOKIE=1
EMAIL_RECV_PROTOCOL=imap
EMAIL_RECV_HOST=imap.example.com
EMAIL_RECV_PORT=993
EMAIL_RECV_TLS=1
EMAIL_RECV_ALLOWBADCERTIFICATES=0
EMAIL_RECV_DISCARDDOMAIN=0
EMAIL_SEND_PROTOCOL=smtp
EMAIL_SEND_HOST=smtp.example.com
EMAIL_SEND_PORT=587
EMAIL_SEND_TLS=0
EMAIL_SEND_ALLOWBADCERTIFICATES=0
EMAIL_SEND_DISCARDDOMAIN=0

Next Steps

After configuring the .env file, you can start the MERNMail server by following the instructions in the Getting started section.