How to Create an Email with Your Own Domain on a VPS?

To set up your own email hosting using Docker on a VPS, follow these steps:

Step 1: Get Docker Image

Get the latest image of the "Docker Mail Server" from the official Docker Hub registry or from the GitHub registry. You can do this using the command:

docker pull mailserver/docker-mailserver

Step 2: Configure Docker Compose

Create a YAML file named docker-compose.yml in the directory where you want to store your mail server configuration files. This file should contain the following content for a basic configuration of the mail server:

version: '3.8'
services:
  mailserver:
    image: docker.io/mailserver/docker-mailserver:latest
    container_name: mailserver
    hostname: mail-server
    domain_name: example.com
    ports:
      - "25:25"
      - "587:587"
      - "465:465"
    volumes:
      - ./docker-data/dms/mail-data/:/var/mail/
      - ./docker-data/dms/mail-state/:/var/mail-state/
      - ./docker-data/dms/mail-logs/:/var/log/mail/
      - ./docker-data/dms/config/:/tmp/docker-mailserver/

Step 3: Release Ports

Release the necessary ports on your VPS's firewall to allow incoming connections to your mail server. For example, if you are using UFW, you can open the ports with the command:

sudo ufw allow 25,143,165,587,993/tcp

Step 4: Apply Hostname to DNS Settings

Apply the hostname and domain name specified in your docker-compose.yml file to your DNS settings. This is important for setting up secure authentication and for sending emails.

Step 5: Generate DKIM and DMARC Records

Generate DKIM and DMARC records according to the instructions provided in the Docker Mail Server documentation. These records are necessary for preventing email spoofing and verifying email senders.

Step 6: Start Server and Create First Address

Start the configured mail server directly from the registry with the command:

docker-compose up

Create the first email address using the command:

./setup.sh email add user@domain password

Additional Configuration

You can further customize your mail server by creating additional profiles, setting up spam filters, and configuring other features as needed.

Conclusion

Setting up your own email hosting using Docker on a VPS involves several steps, including getting the Docker image, configuring Docker Compose, releasing ports, applying the hostname to DNS settings, generating DKIM and DMARC records, starting the server, and creating the first email address. By following these steps, you can have a fully functional email hosting service that you can manage and customize according to your needs.

Citations: [1] https://github.com/docker-mailserver/docker-mailserver [2] https://www.heeney.ie/2022/09/20/how-to-set-up-mail-server-using-docker/ [3] https://www.youtube.com/watch?v=4SQiTXHYrnw [4] https://www.ionos.com/digitalguide/e-mail/technical-matters/set-up-docker-mail-server/ [5] https://www.sumarsono.com/docker-setup-self-hosted-mail-server/