⏰ Save Yourself Time

Want to make the entire FAQ below tailored for you and easier to read?

Read our Privacy Policy and Terms

Not interested? Click here to keep reading

Frequently Asked Questions

Table of Contents

How do I get started and set up email forwarding

Estimated Setup Time: Less than 10 minutes
Enhanced Privacy Protection: If you would like to hide your information from being publicly searchable over the Internet, then please go to My Account Domains and upgrade your domain to a paid plan before starting this guide. Publicly searchable information on free plans includes, but is not limited to: aliases, forwarded addresses, recipients, and advanced settings such as custom port forwarding. If you would like to learn more about paid plans see our Pricing page – otherwise keep reading! All plans abide by our Privacy policy of strictly not storing logs, metadata, nor emails. We don't track you like other services do.
Getting Started: Carefully read and follow steps one through eight listed below. Be sure to replace the email address of user@gmail.com with the email address you want to forward emails to (if it isn't already accurate). Similarly be sure to replace example.com with your custom domain name (if it isn't already accurate).
  1. If you have already registered your domain name somewhere, then you must completely skip this step and go to step two! Otherwise you can click here to register your domain name.
  2. Do you remember where you registered your domain? Once you remember this, then follow the instructions below:
    Important: You must open a new tab and log in to your domain registrar. You can easily click on your "Registrar" below to automatically do this. In this new tab, you must navigate to the DNS management page at your registrar – and we have provided the step by step navigation steps below under the "Steps to Configure DNS" column. Once you've navigated to this page in the new tab, you can return to this tab and proceed to step three below. Do not close the opened tab yet; you will need it for future steps!
    Registrar Steps to Configure DNS
    1&1 Sign in Domain Center (Select your domain) Edit DNS Settings
    Amazon Route 53 Sign in Hosted Zones (Select your domain)
    Aplus.net Sign in My Servers Domain Management DNS Manager
    Cloudflare Sign in DNS
    DNS Made Easy Sign in DNS (Select your domain)
    DNSimple Sign in (Select your domain) DNS Manage
    Digital Ocean Sign in Networking Domains (Select your domain) More Manage Domain
    Domains.com
    Watch
    Sign in (Select your domain) Manage (click gear icon) Click on DNS & Nameservers in left-hand menu
    DreamHost Sign in Panel Domains Manage Domains DNS
    Dyn Sign in Overview Manage Simple Editor Records
    Gandi Sign in (Select your domain) Management Edit the zone
    GoDaddy
    Watch
    Sign in Manage My Domains (Select your domain) Manage DNS
    Google Domains
    Watch
    Sign in (Select your domain) Configure DNS
    Namecheap
    Watch
    Sign in Domain List (Select your domain) Manage Advanced DNS
    Netlify Sign in (Select your domain) Setup Netlify DNS
    Network Solutions Sign in Account Manager My Domain Names (Select your domain) Manage Change Where Domain Points Advanced DNS
    Shopify
    Watch
    Sign in Managed Domains (Select your domain) DNS Settings
    Vercel's Now Using now CLI now dns add [domain] '@' MX [record-value] [priority]
    eNom Sign in Domains My Domains
    Other
    Important: Don't see your registrar name listed here? Simply search on the Internet for "how to change DNS records on $REGISTRAR" (replacing $REGISTRAR with the name of your registrar – e.g. "how to change DNS records on GoDaddy" if you're using GoDaddy).
  3. Using your registrar's DNS management page (the other tab you have opened), set the following "MX" records:
    Important: Note that there should be NO other MX records set. Both records shown below MUST exist. Be sure there are no typos; and you have both mx1 and mx2 spelled correctly. If there were already MX records that existed, please delete them completely. The "TTL" value does not need to be 3600, it could be a lower or higher value if necessary.
    Name/Host/Alias TTL Record Type Priority Value/Answer/Destination
    @ or leave blank 3600 MX 10 mx1.forwardemail.net
    @ or leave blank 3600 MX 20 mx2.forwardemail.net
  4. Using your registrar's DNS management page (the other tab you have opened), set the following "TXT" record(s):
    Important: If you are on a paid plan, then you must completely skip this step and go to step five! If you are not on a paid plan, then your forwarded addresses will be publicly searchable – go to My Account Domains and upgrade your domain to a paid plan if desired. If you would like to learn more about paid plans see our Pricing page. Otherwise you can continue to choose one or more combinations from Option A to Option F listed below.

    Option A: If you are forwarding all emails from your domain, (e.g. "all@example.com", "hello@example.com", etc) to a specific address "user@gmail.com":
    Name/Host/Alias TTL Record Type Value/Answer/Destination
    @ or leave blank 3600 TXT forward-email=user@gmail.com
    Tip: Make sure to replace the values above in the "Value/Answer/Destination" column with your own email address. The "TTL" value does not need to be 3600, it could be a lower or higher value if necessary. A lower time to live ("TTL") value will ensure any future changes made to your DNS records are propagated throughout the Internet quicker – think of this as how long it will be cached in-memory (in seconds). You can learn more about TTL on Wikipedia.

    Option B: If you just need to forward a single email address (e.g. "hello@example.com" to "user@gmail.com"; this will also forward "hello+test@example.com" to "user+test@gmail.com" automatically):
    Name/Host/Alias TTL Record Type Value/Answer/Destination
    @ or leave blank 3600 TXT forward-email=hello:user@gmail.com

    Option C: If you are forwarding multiple emails, then you'll want to separate them with a comma:
    Name/Host/Alias TTL Record Type Value/Answer/Destination
    @ or leave blank 3600 TXT forward-email=hello:user@gmail.com,support:user@gmail.com

    Option D: You can have an infinite amount of forwarding emails setup – just make sure to not wrap over 255 characters in a single-line and start each line with "forward-email=". An example is provided below:
    Name/Host/Alias TTL Record Type Value/Answer/Destination
    @ or leave blank 3600 TXT forward-email=hello:user@gmail.com,support:user@gmail.com
    @ or leave blank 3600 TXT forward-email=help:user@gmail.com,foo:user@gmail.com
    @ or leave blank 3600 TXT forward-email=orders:user@gmail.com,baz:user@gmail.com
    @ or leave blank 3600 TXT forward-email=info:user@gmail.com,beep:user@gmail.com
    @ or leave blank 3600 TXT forward-email=errors:user@gmail.com,boop:user@gmail.com

    Option E: You can also specify a domain name in your TXT record to have global alias forwarding (e.g. "user@example.com" will get forwarded to "user@example.net"):
    Name/Host/Alias TTL Record Type Value/Answer/Destination
    @ or leave blank 3600 TXT forward-email=example.net

    Option F: You can even use webhooks as a global or individual alias to forward emails to. See the example and full section on webhooks titled Do you support webhooks below.
    Name/Host/Alias TTL Record Type Value/Answer/Destination
    @ or leave blank 3600 TXT forward-email=alias:https://requestbin.com/r/en8pfhdgcculn

  5. Using your registrar's DNS management page (the other tab you have opened), additionally set the following "TXT" record:
    Name/Host/Alias TTL Record Type Value/Answer/Destination
    @ or leave blank 3600 TXT v=spf1 a mx include:spf.forwardemail.net -all
    Important: If you are using G Suite, you'll need to append include:_spf.google.com to the value above, for example:

    v=spf1 a mx include:spf.forwardemail.net include:_spf.google.com -all
    Tip: If you already have a similar line with "v=spf1", then you'll need to append include:spf.forwardemail.net right before any existing "include:host.com" records and before the "-all" in the same line, for example:

    v=spf1 a mx include:spf.forwardemail.net include:host.com -all

    Note that there is a difference between "-all" and "~all". The "-" indicates that the SPF check should FAIL if it does not match, and "~" indicates that the SPF check should SOFTFAIL. We recommend to use the "-all" approach to prevent domain forgery.
  6. Verify your DNS records using our "Verify Records" tool available at My Account Domains Setup.
  7. Send a test email to confirm it works. Note that it might take some time for your DNS records to propagate.
    Tip: If you are not receiving test emails, or receive a test email that says "Be careful with this message", then see the answers for Why am I not receiving my test emails and Why are my test emails sent to myself in Gmail showing as "suspicious" respectively.
  8. If you wish to "Send Mail As" from Gmail, then you will need to watch this video, or follow the steps under How to Send Mail As Using Gmail below.
Congratulations! You've successfully completed all steps.
Now you can start dancing, sing a song, and start forwarding emails! If you have enjoyed these instructions, then please consider upgrading to a paid plan or sending us a donation. Additional tips and optional add-ons are described below:
Tip: Optional add-ons are listed below. Note that these add-ons are completely optional and may not be necessary. We wanted to at least provide you with additional information if necessary.
Optional Add-on: Add a DMARC record for your domain name by following the instructions at https://dmarc.postmarkapp.com (this will allow DMARC verification to pass and help to prevent people from forging emails as if they were from you). If you intend to use How to Send Mail As using Gmail, you can only set the DMARC policy to "p=none", for example:

v=DMARC1; p=none; pct=100; rua=mailto:re+random-key@dmarc.postmarkapp.com;

Setting other policies, "quarantine" or "reject", may cause sent mails to respectively end up in recipient's spam folder or not delivered at all. DMARC requires both "From" and "Return-Path" to match the same domain. When you use "Send Mail As", your Gmail address would be used as the "Return-Path", instead of your custom domain in "From".
Optional Add-on: If you're the How to Send Mail As using Gmail feature, then you may want to whitelist yourself. To do this, simply follow these instructions by Gmail on this topic.

How to Send Mail As using Gmail

Estimated Setup Time: Less than 10 minutes
Getting Started: After you've followed the steps above in How do I get started and set up email forwarding you can follow the video above or the steps below – in order to "Send Mail As" using your custom domain.
  1. You need to have Gmail's Two-Factor Authentication enabled for this to work. Visit https://www.google.com/landing/2step/ if you do not have it enabled.

  2. Once Two-Factor Authentication is enabled (or if you already had it enabled), then visit https://myaccount.google.com/apppasswords.

  3. When prompted for "Select the app and device you want to generate the app password for":

    • Select "Mail" under the drop-down for "Select app"
    • Select "Other" under the drop-down for "Select device"
    • When prompted for text input, enter your custom domain's email address you're forwarding from (e.g. "hello@example.com" - this will help you keep track in case you use this service for multiple accounts)
  4. Copy the password to your clipboard that is automatically generated

    Important: If you are using G Suite, visit your admin panel Apps G Suite Settings for Gmail Advanced settings and make sure to check "Allow users to send mail through an external SMTP server...". There will be some delay for this change to be activated, so please wait a few minutes.
  5. Go to Gmail and under Settings Accounts and Import Send mail as, click "Add another email address"

  6. When prompted for "Name", enter the name that you want your email to be seen as "From" (e.g. "Elon Musk")

  7. When prompted for "Email address", enter the email address with the custom domain you used above (e.g. "hello@example.com")

  8. Uncheck "Treat as an alias"

    Tip: If you prefer the recipient to reply directly to your Gmail address, then leave this checked. To learn more, follow these instructions by Gmail on this topic.
  9. Click "Next Step" to proceed

  10. When prompted for "SMTP Server", enter smtp.gmail.com and leave the port as 587

  11. When prompted for "Username", enter the portion of your Gmail address without the gmail.com part (e.g. just "user" if my email is user@gmail.com)

    Important: If the "Username" portion is autofilled, then you will need to change this to the username portion of your Gmail address instead.
  12. When prompted for "Password", paste from your clipboard the password you generated in step 2 above

  13. Leave the radio button checked to "Secured connection using TLS"

  14. Click "Add Account" to proceed

  15. Open a new tab to Gmail and wait for your verification email to arrive (you will receive a verification code that confirms you are the owner of the email address you are attempting to "Send Mail As")

  16. Once it arrives, copy and paste the verification code at the prompt you received in the previous step

  17. Once you've done that, go back to the email and click the link to "confirm the request". You need to do this step and the previous step for the email to be correctly configured.

Congratulations! You've successfully completed all steps.

Why am I not receiving my test emails

If you're sending a test email to yourself using the "Send Mail As" feature, then it will not show up in your inbox due to this widely known official Gmail answer.

If you continue to have issues, then it is most likely to be an issue with DNS propagation. You will need to wait a bit longer and try again (or try setting a lower TTL value on your TXT records).

Still having issues? Please file a Help request so we can help investigate the issue and find a quick resolution.

Can I remove the via forwardemail dot net in Gmail

Not yet! We plan to release our very own SMTP service (not just forwarding, but email in general), which would alleviate this. Gmail automatically adds this and there is no current workaround. Other email forwarding services with similar features to ours will still incur this same issue too (and other email forwarding solutions simply do not offer the level of privacy we do).

Can I forward emails to ports other than 25 (e.g. if my ISP has blocked port 25)

Yes, as of May 5, 2020 we have added this feature. Right now the feature is domain-specific, as opposed to alias-specific. If you require it to be alias-specific, please contact us to let us know of your needs.

Enhanced Privacy Protection: If you are on a paid plan (which features enhanced privacy protection), then please go to My Account Domains, click on "Setup" next to your domain, and then click on "Advanced Settings". If you would like to learn more about paid plans see our Pricing page. Otherwise you can continue to follow the instructions below.

If you are on the free plan, then simply add a new DNS TXT record as shown below, but change the port from 25 to the port of your choosing.

For example, if I want all emails that go to example.com to forward to alias recipients' SMTP port of 1337 instead of 25:

Name/Host/Alias TTL Record Type Value/Answer/Destination
@ or leave blank 3600 TXT forward-email-port=1337
Tip: The most common scenario for custom port forwarding setup is when you want to forward all emails that go to example.com to a different port at example.com, other than the SMTP standard of port 25. To set this up, simply add the following TXT catch-all record.
Name/Host/Alias TTL Record Type Value/Answer/Destination
@ or leave blank 3600 TXT forward-email=example.com

Do you offer a money back guarantee on paid plans

Yes! We offer a 30-day money back guarantee on all paids plans if you are not satisfied with our service.

We do not ask any questions and simply process the refund within 5-7 business days.

To request a refund, please send an email from the email address verified on your account to: refunds@forwardemail.net

Do you support webhooks

Yes, as of May 15, 2020 we have added this feature. You can simply add webhook(s) exactly like you would with any recipient! Please ensure that you have the "http" or "https" protocol prefixed in the webhook's URL.

Enhanced Privacy Protection: If you are on a paid plan (which features enhanced privacy protection), then please go to My Account Domains and click on "Aliases" next to your domain to configure your webhooks. If you would like to learn more about paid plans see our Pricing page. Otherwise you can continue to follow the instructions below.

If you are on the free plan, then simply add a new DNS TXT record as shown below:

For example, if I want all emails that go to alias@example.com to forward to a new request bin test endpoint:

Name/Host/Alias TTL Record Type Value/Answer/Destination
@ or leave blank 3600 TXT forward-email=alias:https://requestbin.com/r/en8pfhdgcculn

Or perhaps you want all emails that go to example.com to forward to this endpoint:

Name/Host/Alias TTL Record Type Value/Answer/Destination
@ or leave blank 3600 TXT forward-email=https://requestbin.com/r/en8pfhdgcculn
Tip: Curious what the webhook request looks like from forwarded emails? We've included an example below for you!
{
  "attachments": [],
  "headers": {},
  "headerLines": [
    {
      "key": "dkim-signature",
      "line": "DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=forwardemail.net;\r\n q=dns/txt; s=default; bh=fdkeB/A0FkbVP2k4J4pNPoeWH6vqBm9+b0C3OY87Cw8=;\r\n h=from:subject:date:message-id:to:mime-version:content-type:content-transfer-encoding;\r\n b=KJZp0q0u/cQhcjwilKMainmlystwHgCZ7/ncK1uBmmdGoaXlQcMHsfenLyn/uribhMVrdfWw6\r\n YhQ5AIOAGoft/fwpGhl3zP1b5qrPwYu0kLMPr2MSwkLo0YVdbHB6xF+VGeg2vaduJk6CipXjMW7\r\n Mlohmvjw0m1tnN6dAYGOkwQ="
    },
    {
      "key": "message-id",
      "line": "Message-ID: <123.abc@test>"
    },
    {
      "key": "date",
      "line": "Date: Thu, 9 Nov 2000 10:44:00 -0800 (PST)"
    },
    {
      "key": "to",
      "line": "To: webhook@example.com"
    },
    {
      "key": "from",
      "line": "From: Test <test@user.com>"
    },
    {
      "key": "subject",
      "line": "Subject: testing webhooks"
    },
    {
      "key": "mime-version",
      "line": "Mime-Version: 1.0"
    },
    {
      "key": "content-type",
      "line": "Content-Type: text/plain; charset=us-ascii"
    },
    {
      "key": "content-transfer-encoding",
      "line": "Content-Transfer-Encoding: 7bit"
    }
  ],
  "text": "Test\n",
  "textAsHtml": "<p>Test</p>",
  "subject": "testing webhooks",
  "date": "2000-11-09T18:44:00.000Z",
  "to": {
    "value": [
      {
        "address": "webhook@example.com",
        "name": ""
      }
    ],
    "html": "<span class=\"mp_address_group\"><a href=\"mailto:webhook@example.com\" class=\"mp_address_email\">webhook@example.com</a></span>",
    "text": "webhook@example.com"
  },
  "from": {
    "value": [
      {
        "address": "test@example.com",
        "name": "Test"
      }
    ],
    "html": "<span class=\"mp_address_group\"><span class=\"mp_address_name\">Test</span> &lt;<a href=\"mailto:test@example.com\" class=\"mp_address_email\">test@example.com</a>&gt;</span>",
    "text": "Test <test@examplecom>"
  },
  "messageId": "<123.abc@test>",
  "html": false,
  "raw": "DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=forwardemail.net;\r\n q=dns/txt; s=default; bh=fdkeB/A0FkbVP2k4J4pNPoeWH6vqBm9+b0C3OY87Cw8=;\r\n h=from:subject:date:message-id:to:mime-version:content-type:content-transfer-encoding;\r\n b=KJZp0q0u/cQhcjwilKMainmlystwHgCZ7/ncK1uBmmdGoaXlQcMHsfenLyn/uribhMVrdfWw6\r\n YhQ5AIOAGoft/fwpGhl3zP1b5qrPwYu0kLMPr2MSwkLo0YVdbHB6xF+VGeg2vaduJk6CipXjMW7\r\n Mlohmvjw0m1tnN6dAYGOkwQ=\r\nMessage-ID: <123.abc@test>\r\nDate: Thu, 9 Nov 2000 10:44:00 -0800 (PST)\r\nTo: webhook@example.com\r\nFrom: Test <test@example.com>\r\nSubject: testing webhooks\r\nMime-Version: 1.0\r\nContent-Type: text/plain; charset=us-ascii\r\nContent-Transfer-Encoding: 7bit\r\n\r\nTest\r\n"
}

Note that we use the mailparser library's "simpleParser" method to parse the message into a JSON friendly object, and also append the "raw" property with the raw email message as a String.

Webhook HTTP requests will retry up to 10 times (the exact same number of retries we permit for normal SMTP), with 20 seconds max timeout per endpoint POST request. We will retry automatically based off the default status and error codes used in superagent's retry method (this package is also maintained by the creator of Forward Email).

Can I just use this email forwarding service as a "fallback" or "fallover" MX server

Yes, but this is NOT recommended as this is an incredibly rare edge case.

If you use Google Business for email, and want to use our server as a fallback so your mail still gets delivered, then just specify the Google mail servers with a lower priority than our mail servers. An example is provided below:

Name/Host/Alias TTL Record Type Priority Value/Answer/Destination
@ or leave blank 3600 MX 1 ASPMX.L.GOOGLE.COM
@ or leave blank 3600 MX 5 ALT1.ASPMX.L.GOOGLE.COM
@ or leave blank 3600 MX 5 ALT2.ASPMX.L.GOOGLE.COM
@ or leave blank 3600 MX 10 ALT3.ASPMX.L.GOOGLE.COM
@ or leave blank 3600 MX 10 ALT4.ASPMX.L.GOOGLE.COM
@ or leave blank 3600 MX 20 mx1.forwardemail.net
@ or leave blank 3600 MX 30 mx2.forwardemail.net

Can I disable specific aliases

Yes! As of February 6, 2020 we have added this feature. Simply edit your DNS TXT record and prefix the alias with an exclamation mark. Note that you must preserve the ":" mapping, as this is required if you ever decide to toggle this off (and it's also used for importing in our paid plans).

If you prefix an alias with "!" (exclamation mark) then it will still return successful respond codes to senders attempting to send to this address, but the emails themselves will go nowhere; to a blackhole.

Emails sent to disabled addresses will respond with a 250 (message queued) status code, but the emails will not actually be delivered to the recipient(s).

For example, if I want all emails that go to alias@example.com to stop flowing through to user@gmail.com:

Name/Host/Alias TTL Record Type Value/Answer/Destination
@ or leave blank 3600 TXT forward-email=!alias:user@gmail.com
Tip: You can also rewrite the forwarded recipient's address to simply "nobody@forwardemail.net", which will route it to nobody as in the example below.
Name/Host/Alias TTL Record Type Value/Answer/Destination
@ or leave blank 3600 TXT forward-email=!alias:nobody@forwardemail.net
Tip: If you want increased security, then you can also remove the ":user@gmail.com" (or ":nobody@forwardemail.net") part, leaving just "!alias" as in the example below.
Name/Host/Alias TTL Record Type Value/Answer/Destination
@ or leave blank 3600 TXT forward-email=!alias

Can I forward emails to multiple recipients

Yes, absolutely. Just specify multiple recipients in your TXT records.

For example, if I want an email that goes to hello@example.com to get forwarded to user+a@gmail.com and user+b@gmail.com, then my TXT record would look like this:

Name/Host/Alias TTL Record Type Value/Answer/Destination
@ or leave blank 3600 TXT forward-email=hello:user+a@gmail.com,hello:user+b@gmail.com

Or, you could specify them in two separate lines, such as this:

Name/Host/Alias TTL Record Type Value/Answer/Destination
@ or leave blank 3600 TXT forward-email=hello:user+a@gmail.com
@ or leave blank 3600 TXT forward-email=hello:user+b@gmail.com

It's up to you!

Can I have multiple global catch-all recipients

Yes, you can. Just specify multiple global catch-all recipients in your TXT records.

For example, if I want every email that goes to *@example.com (the asterisk meaning its a wildcard aka catch-all) to get forwarded to user+a@gmail.com and user+b@gmail.com, then my TXT record would look like this:

Name/Host/Alias TTL Record Type Value/Answer/Destination
@ or leave blank 3600 TXT forward-email=user+a@gmail.com,user+b@gmail.com

Or, you could specify them in two separate lines, such as this:

Name/Host/Alias TTL Record Type Value/Answer/Destination
@ or leave blank 3600 TXT forward-email=user+a@gmail.com
@ or leave blank 3600 TXT forward-email=user+b@gmail.com

It's up to you!

Is there a maximum limit on the number of email addresses I can forward to per alias

Yes, the default limit is 10. This does NOT mean that you can only have 10 aliases on your domain name. You can have as many aliases as you want (an unlimited amount). It means that you can only forward one alias to 10 unique email addresses. You could have hello:user+1@gmail.com, hello:user+2@gmail.com, hello:user+3@gmail.com, … (from 1-10) – and any emails to hello@example.com would get forwarded to user+1@gmail.com, user+2@gmail.com, user+3@gmail.com, … (from 1-10).

Tip: Need more than 10 recipients per alias? Send us an email and we would be happy to increase your accounts limit.

Can I recursively forward emails

Yes, you can, however you still must adhere to the maximum limit. If you have hello:elon@example.com and elon:user@gmail.com, then emails to hello@example.com would get forwarded to elon@example.com and user@gmail.com. Note that an error will be thrown if you attempt to recursively forward emails.

Can people unregister or register my email forwarding without my permission

We use MX and TXT record verification, therefore if you add this service's respective MX and TXT records, then you're registered. If you remove them, then you're unregistered. You have ownership of your domain and DNS management, so if someone has access to that then that's a problem.

How is it free

The service continues to run thanks to donations and users that upgraded to paid plans. We want to provide a free alternative (since we feel bad) for people that are using closed-source forwarding services (and subsequently risking their privacy and security).

What is the max email size limit

We default to a 50MB size limit, which includes content, headers, and attachments. Note that services such as Gmail and Outlook allow only 25MB size limit, and if you exceed the limit when sending to addresses at those providers you will receive an error message.

An error with the proper response code is returned if the file size limit is exceeded.

Do you store emails and their contents

No, absolutely not. See our Privacy Policy.

Do you store logs of emails

No, absolutely not. See our Privacy Policy.

Do you read my emails

No, absolutely not. We do not store logs. See our Privacy Policy.

Many other email forwarding services unethically read your email. This is not in alignment with our principles and philosophy on software.

We believe you should have a right to privacy and we strictly respect it.

The code that is deployed to the server is open-source software on GitHub for transparency and to build trust.

Does it support the plus + symbol for Gmail aliases

Yes, absolutely.

Does this forward my email's headers

Yes, absolutely.

Is this well-tested

Yes, it has tests written with ava and also has code coverage.

Do you pass along SMTP response messages and codes

Yes, absolutely. For example if you're sending an email to hello@example.com and it's registered to forward to user@gmail.com, then the SMTP response message and code from the "gmail.com" SMTP server will be returned instead of the proxy server at "mx1.forwardemail.net" or "mx2.forwardemail.net".

How do you prevent spammers and ensure good email forwarding reputation

Per documentation and suggestions from Google at https://support.google.com/a/answer/175365?hl=en, along with best practice, including:

  1. DNS Blacklists: we test senders IP's against the Spamhaus DNS blacklists, if any fail, then the sender is not permitted to send the message and is returned a detailed error message with instructions on how to de-list themselves from the specific blacklists they're listed under.

  2. Anti-Spam and Anti-Phishing Scanner: we built from scratch and use Spam Scanner for anti-spam prevention (it uses a Naive Bayes classifier under the hood). We built this because we were not happy with rspamd nor SpamAssassin, nor were we happy with their lack of privacy-focused policies and public corpus datasets. Spam Scanner checks a message for spam, phishing, executables, viruses, and more, while completely respecting your privacy.

  3. SPF and DKIM: through checking if an SPF record exists for a sender, and if so, we reverse-lookup the SMTP connection's remote address to validate it matches the SPF record, otherwise it's rejected. If an SPF record does not exist, then we require DKIM verification. If DKIM headers are passed and fail, then it is rejected as well. If no DKIM headers are passed, then we assume that DKIM validation passes.

  4. MX Record Test: through checking if the sender's from address domain has MX records (so it's actually coming from a mail exchange/SMTP server), otherwise it's rejected.

  5. Fully Qualified Domain Name Test: validates that senders SMTP connections are from a fully qualified domain name ("FQDN"), meaning no IP addresses, they must have a valid domain name resolved.

  6. TXT Record Test: through checking if the email address the sender is trying to send to has a TXT DNS record with a valid email forwarding setup. The SSL certificates (main domain name or alternative names) of all MX servers of the forwarding destination must match the MX entry.

  7. ARC: we use the Authentication-Results header and validate it against the sending domain's DMARC policy.

Can I "send mail as" in Gmail with this

Yes! As of October 2, 2018 we have added this feature. See How to Send Mail As using Gmail above!

Can I "send mail as" in Outlook with this

Yes! As of October 2, 2018 we have added this feature. Simply view these two links from Microsoft below:

You should also set the SPF record for Outlook in your DNS configuration TXT record.

Important: If you are using Microsoft Outlook or Live.com, you'll need to append include:spf.protection.outlook.com to your SPF TXT record, for example:

v=spf1 a mx include:spf.forwardemail.net include:spf.protection.outlook.com -all

Can I "send mail as" in Apple Mail and iCloud Mail with this

Unfortunately Apple does not allow this, regardless of which service you use. However you can use the Mail app along with your domain's email account.

Can I forward unlimited emails with this

Practically yes - the only current restriction is that senders by unique email address are limited to sending (300) emails per hour through the system.

If this limit is exceeded we send a "451" response code which tells the senders mail server to retry later.

How do I add a profile picture to my email address

If you're using Gmail, then follow these steps below:

  1. Go to https://google.com and sign out of all email accounts
  2. Click "Sign In" and on the drop-down click on "other account"
  3. Select "Use another account"
  4. Select "Create account"
  5. Select "Use my current email address instead"
  6. Enter your custom domain name email address
  7. Retrieve the verification email sent to your email address
  8. Enter the verification code from this email
  9. Complete profile information for your new Google account
  10. Agree to all Privacy and Terms of Use policies
  11. Go to https://google.com and in the top right corner, click on your profile icon, and click on the "change" button
  12. Upload a new photo or avatar for your account
  13. Changes will take approximately 1-2 hours to propagate, but sometimes may be very quick.
  14. Send a test email and the profile photo should appear.

What is the difference between Free and Enhanced Protection

The Free plan requires you to use public DNS records to store your forwarding configuration. Anyone with a computer can lookup your forwarding configuration in a terminal if you are on the Free plan. Unlike the Free plan, the Enhanced Protection plan uses a cryptographically generated random string to store your forwarding configuration privately.

Free Plan Enhanced Protection Plan
forward-email=user@gmail.com forward-email-site-verification=m8d7o8K4Il

Do you support email best practices

Yes. We have built-in support for SPF, DKIM, DMARC, ARC, and SRS across all plans. We have also worked extensively with the original authors of these specifications and other email experts to ensure perfection and high deliverability.

Do you offer unlimited domains for one price

Yes. Regardless of which plan you are on, you will pay only one monthly rate – which covers all of your domains.

Which payment methods do you accept

We accept credit cards using Stripe and payment with PayPal – for one-time payments and monthly or yearly subscriptions.

Will you ever increase prices

No. Prices will never increase. Unlike other companies, we will never shutdown our service either.

How do you perform DNS lookups on domain names

We use CloudFlare's privacy-first consumer DNS service (see announcement here). We set 1.1.1.3 and 1.0.0.3 as the DNS servers (see https://developers.cloudflare.com/1.1.1.1/1.1.1.1-for-families/) using /etc/resolv.conf on our servers and test environments.

How fast is this service

The latest version, v2 (released on May 6, 2019) was a major rewrite from v1 and focuses on performance through streams. Nodemailer's prolific author Andris Reinman (@andris9) helped us switch off using the mailparser library and use mailsplit instead with some custom transform logic to split the header and the body of the message without affecting the body. This allows us to perform operations on headers very fast (such as security checks and for SPF/DKIM/DMARC compliance).

In other words, the latest version of this service uses streams purely now and is lightning fast. The older version v1 also had some logic not in the most optimal order of operations – but now v2 does less memory/network intense operations first (and returns early if possible to send a response as quickly as possible to the SMTP client). We plan to continue to optimize speed, enhance features, and improve this service over time.

At no point in time do we write to disk or store emails – everything is done in-memory thanks to Node.js's streams and transforms! 🎉