In today’s digital landscape, efficiently managing your web and email hosting can significantly enhance your server performance and security. If you’re using WHM/cPanel and looking to streamline your hosting setup, separating your web and email hosting onto different servers is a game-changer. This approach not only optimizes server resources but also ensures better email deliverability and management. In this guide, we will walk you through the step-by-step process of setting up a dedicated mail server using WHM/cPanel, making your hosting experience seamless and efficient. Whether you’re a seasoned admin or a novice, our detailed instructions will help you achieve this with ease.

To achieve automatic email account creation on a separate mail server when a new cPanel account is created on your main server, you can use WHM’s DNS clustering and custom MX routing features. This involves configuring both servers to work together seamlessly. Here’s how you can set it up:

Step 1: Set Up DNS Clustering

  1. Configure DNS Clustering in WHM:
    • Log in to WHM on both Server 1 (web server) and Server 2 (mail server).
    • On both servers, go to WHM -> Cluster/Remote Access -> Configure Cluster.
    • Enable DNS clustering and add each server to the cluster, ensuring they can communicate with each other.
    • Set Server 2 as the primary DNS server for MX records.

Step 2: Configure DNS Zones

  1. Adjust Default DNS Zone Template:
    • On Server 1, go to WHM -> DNS Functions -> Edit Zone Templates.
    • Modify the standard DNS zone template to automatically point MX records to Server 2.
    • Example:

      %domain%. IN MX 10 mail.%domain%.
      mail IN A [IP of Server 2]

      Step 3: Automate Email Account Creation

  1. Sync cPanel Accounts:
    • Write a custom script on Server 1 to automatically create corresponding email accounts on Server 2 when a new cPanel account is created.
    • Use the WHM API or cPanel API to trigger account creation on both servers.

Step 4: Configure Remote Mail Exchanger

  1. Set Email Routing:
    • On Server 1, ensure that the default email routing is set to Remote Mail Exchanger for all new accounts.
    • Go to WHM -> Server Configuration -> Tweak Settings and set Mail routing to Remote.

Step 5: Custom Scripts for Account Creation

  1. Create Custom Hook Script:

    • Create a custom hook script in /scripts/postwwwacct on Server 1.
    • This script should use the WHM API to create a corresponding email account on Server 2 whenever a new cPanel account is created on Server 1.

    Example of a simple postwwwacct script:


    # WHM API call to create email account on Server 2
    ssh root@server2 “/scripts/ $USER $DOMAIN”

    Email Account Creation Script on Server 2:

    • Create a script /scripts/ on Server 2 that handles the creation of email accounts.
    • Example:


      /usr/local/cpanel/bin/createacct $USER $DOMAIN

Step 6: Test the Setup

  1. Create a New cPanel Account:
    • On Server 1, create a new cPanel account and verify that the email account is automatically created on Server 2.
  2. Verify Email Routing:
    • Ensure that emails sent to the new domain are correctly routed to Server 2.

Step 7: Monitor and Troubleshoot

  1. Logs and Monitoring:
    • Monitor the logs on both servers to ensure proper synchronization and troubleshoot any issues that arise.

By following these steps, you can set up a system where email accounts are automatically created on a separate mail server whenever a new cPanel account is created on your main server. If you need more detailed guidance on any specific step, feel free to ask!