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
-
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
-
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
orimap
. - 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 to0
. - 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.