Email Forwarders in cPanel automatically forward incoming mail from one address to another. For example, every message to info@example.com can be copied to your@gmail.com — with no need to set up a separate mailbox and check it manually.
Creating a Forwarder
cPanel → Email → Forwarders → Add Forwarder.
| Field | Description |
|---|---|
| Address to Forward | info (the part before @) |
| Domain | example.com |
| Forward to Email Address | your@gmail.com |
Forwarding does not delete the message from the original mailbox — it stays on the hosting and gets copied to Gmail, provided a mailbox actually exists for that address and not just a forwarder. A single address can have several forwarders pointing to different mailboxes at once — the message copy then goes out to every recipient simultaneously, which is often used to duplicate contact-form submissions to several staff members at once.
Common error: a forwarding loop
If forwarding is mistakenly set up pointing an address at itself, or at a chain of two addresses that forward to each other, the sender gets a bounce message:
Final-Recipient: rfc822; info@example.com
Action: failed
Status: 5.4.6
Diagnostic-Code: smtp; 554 5.4.6 Too many hops, this message is looping,
your.address@example.com
The mail server counts how many times a message has been relayed and cuts off the chain after a certain hop limit to avoid an infinite loop. The fix is to check the entire forwarding chain in cPanel → Forwarders and make sure the final address does not forward mail back to the original one.
Forwarding an entire domain (Domain Forwarder)
cPanel → Email → Forwarders → Add Domain Forwarder. Every message to any address on the domain gets forwarded to the specified domain.
Catch-all address
Catch-all captures mail sent to addresses that do not exist on your domain:
cPanel → Email → Default Address → "Forward to Email Address" → specify the mailbox.
Catch-all attracts a lot of spam — spammers send mail to random addresses on your domain. Use it carefully, ideally together with SpamAssassin. An alternative to forwarding is the "Discard" option in the same Default Address section: mail to non-existent addresses is silently rejected with a 550 error on the sender's side instead of landing in one shared mailbox. This is cleaner from a spam-protection standpoint, but a sender who made a typo in the address gets no notice that the message never arrived.
Forwarding methods compared
| Method | Level | Where it is configured |
|---|---|---|
| Forwarder | One specific address | cPanel → Email → Forwarders |
| Domain Forwarder | The entire domain | cPanel → Email → Forwarders |
| Catch-All | Every non-existent address on the domain | cPanel → Email → Default Address |
| .forward (SSH) | One system mailbox | A file in the home directory |
Forwarding via the .forward file (SSH)
# Create a .forward file in the home directory
echo "your@gmail.com" > ~/.forward
# Forward while keeping a local copy
echo "\yourusername, your@gmail.com" > ~/.forward
# A backslash before the username means "also keep it locally"
The Forwarders form in cPanel essentially creates a similar file on the server under the hood — direct access to .forward over SSH gives more flexibility, for example routing the message through procmail for extra filtering before forwarding, something the graphical interface does not allow.
When forwarding breaks deliverability
- A forwarded message keeps the original sender's envelope — on the final server (Gmail), the SPF check for the forwarding domain can fail because the forwarding server's real IP is not in the original sender's SPF record
- The original message's DKIM signature is usually preserved and passes verification, but if the forwarding server changes the subject or adds a prefix, the signature breaks
- Large mail providers (Gmail, Outlook) flag forwarded messages as suspicious more often, especially at high volume — this is a limitation of the forwarding protocol itself, not your SPF/DKIM configuration
- For critical business correspondence, a real mailbox with IMAP is more reliable than a forwarder — then SPF and DKIM are checked against the real sender with no distortion
Verifying it works
# Send a message to the forwarded address, then open the
# received message in the target mailbox and check the headers:
# Received: from mail.example.com ...
# This confirms the message really passed through the forwarder,
# rather than being delivered directly.
Also check the Spam folder — the first messages after setting up a new forwarder sometimes land there until the mail provider "gets used to" the new source. More on configuring SPF and DKIM for the main domain is in cPanel Email: configuring DKIM, SPF, and DMARC.