> ## Documentation Index
> Fetch the complete documentation index at: https://jetemail.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# cPanel / WHM Server

> End-to-end setup: signup, domain verification, and the official JetEmail cPanel plugin.

This guide takes a brand-new JetEmail account and a fresh cPanel/WHM server through every step required to send authenticated mail through the JetEmail relay. The cPanel plugin handles the Exim configuration for you, so the heavy lifting is one command on the server.

<Note>
  **Two ways to handle the many domains on a cPanel/WHM server:**

  * **Free tier:** Add and verify every sending domain in the dashboard (step 2). Mail from any unverified sender will be rejected. Fine for a small server, tedious for a busy one.
  * **Pro subscription:** Enable **Allow any domain** on the SMTP user (step 3). The server can send from any domain hosted on it without preconfiguring each one in the dashboard. You still need to publish **SPF** on every sending domain — the plugin's `--add-spf` flag (step 5) does this for you.

  See [SMTP users → permission modes](/outbound/smtp-users#permission-modes) for the full comparison.
</Note>

<Warning>
  The cPanel plugin supports **AlmaLinux**, **Rocky Linux**, and **CloudLinux** only. Ubuntu is not yet supported. If you're on Ubuntu, follow the [Exim guide](/outbound/getting-started/exim) instead.
</Warning>

<Steps>
  <Step title="Sign up for JetEmail">
    Create an account at [jetemail.com](https://jetemail.com), then open the dashboard at [dash.jetemail.com](https://dash.jetemail.com).
  </Step>

  <Step title="Add and verify your sending domain">
    1. In the dashboard, go to **Outbound** → **Domains**
    2. Add the domain you send from (e.g. `example.com`)
    3. Publish every DNS record the dashboard shows you (SPF, return-path, DKIM, DMARC) at your DNS provider
    4. Wait until the domain shows as **verified**

    For a full breakdown of the records, see [Email authentication](/outbound/email-authentication).
  </Step>

  <Step title="Create an SMTP user">
    1. Go to **Outbound** → **SMTP** in the dashboard
    2. Click **Create SMTP**
    3. Set a **Username** and strong **Password**
    4. Leave **Quota** at `0` for unlimited, or set a per-user limit
    5. **On Pro plans**, toggle **Allow any domain** on so the user can send from every domain on the server without each one being verified in the dashboard. On the free tier, leave this off and make sure every domain you intend to send from has been added and verified in step 2.

    <Note>
      With **Allow any domain** on, you skip per-domain dashboard verification but you still need **SPF** published on every sending domain (see [SMTP allow any domain](/outbound/email-authentication#smtp-allow-any-domain)). The `--add-spf` flag in step 5 takes care of this for every domain on the server.
    </Note>

    Keep the username and password ready for the next step.
  </Step>

  <Step title="Install the JetEmail cPanel plugin">
    SSH to your server as `root` and run:

    ```bash theme={null}
    curl -O https://cdn.jetemail.com/plugins/cpanel/install-cpanel.sh
    chmod 755 install-cpanel.sh
    ./install-cpanel.sh
    ```

    This installs the JetEmail repository and the `jetemail-cpanel` command. It does not configure Exim yet.
  </Step>

  <Step title="Configure the relay">
    Run the install command with the SMTP credentials from step 3:

    ```bash theme={null}
    jetemail-cpanel install \
      --smtp-user YOUR_SMTP_USERNAME \
      --smtp-pass YOUR_SMTP_PASSWORD \
      --add-spf \
      --domain-lockdown
    ```

    Recommended flags:

    * `--add-spf` — adds the JetEmail SPF include to every domain on the server
    * `--domain-lockdown` — adds the [Domain Lockdown](/outbound/domain-lockdown) `_jm` TXT record to every domain so only your account can send from them

    Prefer a GUI? After the install script runs, you can complete configuration through the **JetEmail** plugin in WHM instead.

    For the full flag reference, see the [cPanel plugin docs](/outbound/plugins/cpanel).
  </Step>

  <Step title="Send a test message">
    Send a message from any cPanel account on the server to an external address and confirm it lands. Then open the JetEmail dashboard's **Logs** view to confirm the message was accepted and authenticated.

    If something looks wrong, the [SMTP block error reference](/outbound/smtp-blocks) explains the most common rejection codes.
  </Step>
</Steps>

## What the plugin changes

The plugin makes the following changes to your Exim configuration so you don't have to:

* Routes outbound mail through `relay.jetsmtp.net` with your SMTP credentials
* Adds `spf.jetsmtp.net` to Exim's additional SPF hosts
* Trusts JetEmail's inbound IPs (`senderverifybypass` + `trustedips`)
* Enables SRS (Sender Rewriting Scheme) for forwarded mail
* Disables remote HELO checks
* Enables and configures DMARC for every domain
* Optional (`--domain-lockdown`): adds the `_jm` TXT record on every domain
* Optional (`--add-spf`): enables and configures SPF on every domain

## Next steps

<Columns cols={2}>
  <Card title="Domain Lockdown" icon="lock" href="/outbound/domain-lockdown">
    Stop other JetEmail accounts from sending as your domains.
  </Card>

  <Card title="DMARC" icon="shield-check" href="/outbound/dmarc">
    Tighten your authentication policy once mail is flowing.
  </Card>
</Columns>
