PR
SERVER

How to Solve Troublesome Email Issues During a VPS Migration Using Cloudflare and SMTP2GO: Separating Incoming Email for Your Custom Domain from Outgoing Email for WordPress

When migrating WordPress from a shared server to a VPS, one of the first issues people tend to struggle with is “what to do about the mail server.” This is because while you can move the website itself to the VPS, whether you should move the email system as well is a separate matter. In practice, you have several options: setting up a mail server on the VPS, keeping only the email functionality of the shared server, using a dedicated email service like Sakura Mailbox, or utilizing sending services such as SMTP2GO, Brevo, or Amazon SES.

My conclusion is that I don’t particularly recommend setting up a full-fledged mail server using Postfix or Dovecot on the VPS when migrating WordPress. This is because designing the system with separate incoming and outgoing mail components offers advantages in terms of delivery rates, maintainability, and ease of troubleshooting. While there are several options available, including Google Workspace and Microsoft 365, it’s easier to organize things if you first separate “inboxes for human readers” from “notification emails sent by WordPress.”

  • You can sort out your email options first.
  • It becomes easier to decide which option to choose based on the number of outgoing emails and incoming accounts.
  • You’ll understand how to differentiate between Cloudflare Email Routing and SMTP2GO.
  • You can organize how to use SMTP2GO, Brevo, Sakura Mailbox, and Amazon SES.
  • You’ll learn how to test sending and receiving before switching, as well as common pitfalls to avoid.

Conclusion First

When migrating WordPress to a VPS, the basic principle of email design is to separate incoming and outgoing mail. For incoming mail, [email protected] where [email protected] —where incoming emails are received—and sending—which SMTP server is used to send WordPress notifications and form submissions—are separate issues.

If you try to handle both of these on a single VPS, you’ll have to manage Postfix, Dovecot, reverse DNS, spam protection, certificate renewals, and queue monitoring. In that case, managing email operations tends to become more burdensome than migrating the website itself.For typical corporate sites, blogs, landing pages, or WordPress sites with few registered users, a manageable configuration would be to use Cloudflare Email Routing for incoming mail, SMTP2GO for outgoing mail, and—if necessary—keep your primary inbox on Gmail, Outlook, or another email service.

  • Cloudflare Email Routing is designed for incoming email forwarding.
  • Cloudflare is not an SMTP server for sending emails.
  • SMTP2GO is for sending and does not support IMAP or POP for receiving.
  • If your team wants to use actual inboxes, it’s clearer to set up a separate email service.
  • For WordPress notification emails, it’s more reliable to send them via an SMTP plugin rather than relying on PHP’s mail() but rather via an SMTP plugin.

First, let’s sort out the options

Broadly speaking, email setup can be categorized into the following six patterns. By sorting these out first, it becomes easier to determine whether you need an inbox or if stability for WordPress notification emails alone is sufficient.

OptionsInboxSendingEstimated CostMaintainabilityIdeal for
Setting up a mail server on a VPSPossibleYesVPS cost + operational effortLowIf you want to manage the email infrastructure yourself
Keep only the email functionality of a shared serverPossiblePossibleOften included in existing contractsExpensiveFor temporary operations immediately after migration, or when retaining only email under the current contract
Cloudflare Email Routing + SMTP2GO, etc.Handled via forwardingPossibleCloudflare Free + SMTP2GO Free–ExpensiveIf you want to separate WordPress notifications from incoming emails for a small number of accounts
Sakura MailboxAvailableAvailableStarting at 88 yen per monthExpensiveIf you want to manage a real inbox with multiple people
Google WorkspaceAvailableAvailableStarting at 800 yen per user per month with Business StarterExpensiveIf you want to run your organization primarily using Gmail
Microsoft 365AvailableYesStarting at 899 yen per user per month with Business BasicExpensiveIf you want to run your organization primarily using Outlook and Teams

*Prices are estimates based on official listings as of March 29, 2026. They may vary depending on contract terms, exchange rates, and service updates.

When migrating WordPress to a VPS, it’s easier to organize your setup if you choose separate solutions for incoming and outgoing mail. For example, you could use Cloudflare Email Routing for incoming mail and SMTP2GO for outgoing mail. Conversely, if multiple people will be using the same inbox, it’s easier to manage if you choose a mailbox service or Google Workspace / Microsoft 365 from the start.

Why Email Becomes an Issue During VPS Migration

On shared servers, web and email services are often bundled together from the start. As a result, while your WordPress site is running, services like SMTP, POP, IMAP, spam filtering, and even DKIM are automatically supported under the same contract. However, when you migrate to a VPS, you’ll likely set up a configuration where you manage only the web server yourself, and email sending and receiving aren’t automatically carried over.

A common source of trouble is that while site form notifications and user registration emails rely on “sending,”[email protected] and “receiving” for customer inquiries—meaning the system cannot function properly if only one of these functions is active. Since this is difficult to detect during web functionality testing, email-related issues are often noticed only after the DNS switch.

WordPress notification emails and your everyday inbox are separate

What’s truly essential for WordPress is, first and foremost, wp_mail() is the ability to send emails reliably. This includes password resets, form notifications, order confirmations, and membership registration confirmations. On the other hand, if [email protected] in Outlook or Gmail, that’s a matter of your mailbox setup, including IMAP or POP.

Mixing these two tends to result in maintaining a full-featured mail server just for WordPress notifications. By first separating “emails sent from the site” from “inboxes people read,” it becomes easier to see what’s truly necessary.

Running your own mail server on a VPS drastically increases your management workload

  • MTA configuration (e.g., Postfix)
  • Configuring the mail server (e.g., Dovecot)
  • Port configuration for ports 25, 465, 587, 993, etc.
  • Ensuring consistency with SPF, DKIM, DMARC, and reverse DNS lookups
  • Spam detection and blacklist countermeasures
  • Certificate renewal, log monitoring, queue monitoring, and incident response
  • Email data backup and capacity management

These tasks are unavoidable if you maintain your own email infrastructure. Conversely, if your primary goal is to migrate a WordPress site, it’s more practical to opt for a configuration that doesn’t require you to handle all of this.

Recommended Configuration: Incoming via Cloudflare, Outgoing via SMTP2GO

受信
example.com の MX
  ↓
Cloudflare Email Routing
  ↓
Gmail / Outlook / 既存の受信箱 / 別メールボックスサービス

送信
WordPress
  ↓
Fluent SMTP などのSMTPプラグイン
  ↓
SMTP2GO
  ↓
ユーザーや管理者の受信箱

The advantage of this setup is that it separates incoming and outgoing mail. Cloudflare Email Routing handles forwarding incoming emails, while SMTP2GO is used for sending emails from WordPress or email clients. Since you don’t need to host the mailboxes themselves on a VPS, this avoids increasing the operational load on IMAP or POP.

RolesRecommendedNotes
IncomingCloudflare Email RoutingDesigned for configurations that forward emails sent to your custom domain to an existing inbox.
SendingSMTP2GOThis makes it easy to ensure the stability of WordPress notifications and form notifications using SMTP relay.
Actual InboxGmail, Outlook, Sakura Mailbox, etc.Cloudflare Email Routing itself is not an IMAP/POP inbox.
Self-hosted mail serverNot recommendedThis assumes you will manage everything yourself, including Postfix, Dovecot, reverse DNS, and monitoring.

Cloudflare is for incoming mail forwarding only

According to Cloudflare’s official documentation, Email Routing is described as a mechanism for forwarding emails addressed to your custom domain to another inbox; Cloudflare itself does not provide an SMTP server for sending emails. Additionally, it is intended for use with domains managed via Cloudflare DNS.

Therefore, you cannot handle both sending and receiving entirely within Cloudflare. It’s easier to understand Cloudflare Email Routing as a “mechanism for forwarding incoming mail to another inbox.”

SMTP2GO is for sending only

Even in SMTP2GO’s official support documentation, SMTP2GO is described as a service that provides SMTP settings for sending emails, with the assumption that you will use your own mailbox for incoming IMAP or POP. In other words, the combination of forwarding incoming emails via Cloudflare and sending emails from WordPress via SMTP2GO creates a clear division of roles.

Key Points to Note When Configuring Cloudflare Email Routing

  • Configure this for domains managed via Cloudflare DNS
  • Enabling Email Routing automatically adds the necessary MX and TXT records
  • The forwarding destination address must be verified in advance
  • By default, each custom address can only have one forwarding destination
  • You cannot enable this feature if existing MX records remain in place
  • There is a limit on attachment size, so this feature is not suitable for forwarding large emails

According to Cloudflare’s official documentation, enabling Email Routing adds the necessary MX is TXT are automatically added. However, if other email services MX , you cannot enable it. In other words, for domains using Cloudflare Email Routing, you must give Cloudflare control over incoming mail.

Additionally, by default, the standard feature allows only one forwarding destination per custom address. If you want to forward to multiple destinations simultaneously, you’ll need to use Workers to implement branching. Furthermore, since the message size limit for Cloudflare Email Routing is 25 MiB, a forwarding-based configuration may not be suitable for use cases that frequently handle large attachments.

Approach to Creating Addresses on the Cloudflare Side

In Cloudflare Email Routing, you create forwarding rules for each address associated with your custom domain. For example, dividing roles as follows makes it easier to review the setup later:

  • [email protected] : The main point of contact for the company or website. Handles general inquiries
  • [email protected] : Reply address for contact forms and general contact point. Route all form-related communications here
  • [email protected] : Dedicated to WordPress automated notifications. Sends membership registration confirmations, password resets, order notifications, etc.
  • [email protected] : For receiving DMARC reports. Keeping this separate from your regular email address makes it easier to manage

For example, user registration emails and order notifications should be sent from [email protected] , while the reply-to address for the contact form is [email protected] . This setup makes it easier to determine whether an issue lies with the sending configuration or with the manual verification process. This separation is particularly useful for sites that handle user registrations and e-commerce notifications.

SMTP2GO and WordPress Setup Process

On the SMTP2GO side, first register the sending domain as a Verified Sender. According to official support, registering as a Verified Sender will be required for sending emails starting April 11, 2025. Once you register the sending domain, three CNAME records to add to your DNS will be displayed, and this assumes that SMTP2GO will handle SPF and DKIM.

  • Create an account on SMTP2GO
  • Sending > Verified Senders > Sender domains Add the domain
  • Add the three displayed CNAME records to your DNS
  • Sending > SMTP Users Create an SMTP user
  • Install an SMTP plugin in WordPress and connect
  • Perform a send test and verify delivery

Example of SMTP settings in WordPress

The SMTP plugin WP Mail SMTP , but personally, I Fluent SMTP . This is because it allows you to view email logs for free, supports multiple SMTP configurations, and runs relatively smoothly. Of course, WP Mail SMTP is fine too, but if you’re just trying it out, Fluent SMTP is probably easier to use.

SMTP Host: mail.smtp2go.com
SMTP Port: 587
Encryption: TLS / STARTTLS
Authentication: On
SMTP Username: SMTP2GO の SMTP User
SMTP Password: SMTP2GO の SMTP Password
From Email: [email protected]
Force From Email: On

According to SMTP2GO’s official support, recommended SMTP servers mail.smtp2go.comrecommends TLS-based ports such as 587, 2525, and 8025. With WordPress, it’s safest to start by trying STARTTLS on port 587. If you design your setup to send directly from a VPS using port 25, you’re likely to run into restrictions or reputation issues depending on your environment, so using an SMTP relay is generally more stable.

Considerations when sending from an email client

If you [email protected] , you can configure SMTP2GO within your regular email client or use Gmail’s “Compose as” feature. However, if you plan to use this for daily email operations, it’s less confusing to designate SMTP2GO exclusively for sending and use Google Workspace Gmail, Outlook, or another email service for your inbox.

Understanding MX, SPF, DKIM, and DMARC

You don’t need to memorize every detail of email-related DNS. When migrating to a VPS, the minimum you need to understand is thatMX is the recipient,SPF authorization to send,DKIM is for digital signatures,DMARC and the rules for determining the recipient. If you separate incoming and outgoing mail into different services, this division of roles becomes clearer.

RecordsRoleConcept behind this configuration
MXIndicates the destinationUse the settings on the Cloudflare Email Routing side.
SPFSpecifies the senders permitted to sendFollows the Verified Sender settings in SMTP2GO.
DKIMSign outgoing emailsThis assumes that the SMTP2GO CNAME settings have been configured.
DMARCSpecifies how to handle emails that fail SPF/DKIMIt is safer to add the TXT record yourself and start with a lenient monitoring policy at first.

Example of Initial DMARC Configuration

Host: _dmarc.example.com
Type: TXT
Value: v=DMARC1; p=none; rua=mailto:[email protected]; fo=1; adkim=s; aspf=s

If you set it p=reject , you may end up blocking legitimate emails that don’t match the records. It’s safer to p=none to receive reports, verify the actual delivery path, and then gradually tighten the rules.

It is safer not to duplicate SPF records

Since splitting SPF into multiple TXT records can easily lead to inconsistencies, the basic rule is to consolidate and manage them as a single record. Since Cloudflare Email Routing handles SPF and DKIM via email forwarding, and SMTP2GO handles them via Verified Sender, please be careful not to manually add too many separate SPF records. When migrating from an existing service, check to ensure no SPF records from the old sending service remain and clean them up.

How to Choose Between Outbound and Inbound Services

Here, we’ll organize the options based on delivery rates, maintainability, the number of outgoing messages, and the number of recipient accounts. Note that the projected delivery rates are not figures guaranteed by the provider, but rather practical benchmarks based on the assumption that SPF, DKIM, and DMARC are properly configured.

How to Choose a Sending Service

ServiceEstimated Monthly Send VolumeEstimated CostEstimated Delivery RateEase of MaintenanceIdeal Use Cases
SMTP2GOUp to 1,000 emails per monthFree (1,000 emails/month) / Starter $10/month and upHighExpensiveIf you want to stabilize WordPress notifications or form notifications on a small scale
BrevoUp to 300 messages per dayFree (300 messages per day)On the higher sideHighIf you want to try it with the free plan or consolidate your email delivery infrastructure
Sakura MailboxSmall-scale operations targeting around 100 emails every 15 minutesFrom 88 yen/monthMedium to HighHighFor those who want to maintain an inbox while also consolidating a moderate volume of notifications
Amazon SESFor higher sending volumes or bulk distribution to a large number of subscribersSending: $0.10 per 1,000 emailsOn the higher sideModerateWhen the number of emails increases or you want to prioritize cost efficiency
VPS or self-hosted email serverNot recommendedVPS cost + operational effortDepends on the configurationLowOnly if you want to manage the email infrastructure yourself

Looking at the free tiers, SMTP2GO offers up to 1,000 emails per month for free, while Brevo offers up to 300 emails per day for free.Sakura Mailbox lets you have your own inbox starting at 88 yen per month, making it an easy-to-budget option for small-scale projects. If your volume increases—such as for member newsletters or bulk notifications—it’s better to plan based on Amazon SES, which costs $0.10 per 1,000 emails, as this will allow for easier scalability.

How I Use Them

Personally, I use SMTP2GO, Sakura Mailbox, and Amazon SES for sending emails. I use SMTP2GO for small-scale WordPress notifications, Sakura Mailbox for projects where I want to consolidate everything including the inbox, and SES for projects with a large number of members or where the volume is likely to increase. While Brevo is easy to try for free, the free plan includes a footer logo, so I choose which service to use based on the nature of the project.

Choosing an Incoming Mail Solution

Receiving MethodsSuitable CasesEstimated CostEase of MaintenanceAdditional Notes
Cloudflare Email RoutingWhen there are only a few email accounts, or when used by just one person or a small groupFreeHighInitial verification of the forwarding address is required.
Sakura MailboxFor cases with many email accounts or use across multiple clientsFrom 88 yen per monthExpensiveSince you have an actual inbox, guidance and management are straightforward.
Google WorkspaceOrganizations or client projects that want to use GmailStarting at 800 yen per user per month with Business StarterExpensiveYou can use Gmail, Drive, and Meet all together.
Microsoft 365Organizations or client projects that want to use Outlook or TeamsBusiness Basic starting at 899 yen per user per monthExpensiveYou can use Outlook, Teams, and OneDrive all together.
Keep only the email functionality of the shared serverFor temporary operations immediately after migration, or when you don’t want to move existing email suddenlyOften included in existing contractsMedium to HighBe aware that web and email contracts are separate

For incoming mail, if you have few email accounts or are using them solely for personal use, Cloudflare Email Routing forwarding is often sufficient. Conversely, if you have many email accounts, find it burdensome to explain initial authentication to each client, or want a clear setup process that includes email client configuration, a service like Sakura Mailbox is easier to manage.Additionally, if clients already use Gmail, Outlook, or Teams as their standard email clients, choosing Google Workspace or Microsoft 365 can sometimes reduce the effort required to explain the setup.

In short, it’s easier to make a decision by considering the number of outgoing emails for sending and the number of accounts and operational workload for receiving. This distinction is often a source of confusion during WordPress migrations, so deciding on this upfront will help ensure your DNS settings remain consistent later on.

Send/Receive Tests to Perform Before the Switch

  • [email protected] Send an email from an external source to the destination and verify that it arrives
  • Send a test email using a WordPress SMTP plugin
  • Test workflows that closely resemble actual operations, such as contact form notifications, password resets, and WooCommerce order notifications
  • Send an email to your own Gmail account and check the inbox; use “View Message Source” or “View Original” to dkim=pass、spf=pass、dmarc=pass to verify that the
  • Verify that the reply-to address is as expected
  • Review whether there are any conflicts with the old email configuration before and after the DNS switch

The overall site migration process is outlined in “Complete Steps for WordPress Server Migration,” and the domain switchover procedure is detailed in “How to Safely Switch Domains Without Changing the Domain Name.” It is safest to treat email as a separate step and verify it independently.

Common Issues and Solutions

Emails aren’t arriving even though Cloudflare is configured

In many cases, the “Destination address” in Cloudflare Email Routing has not been verified, or existing MX records remain. Please check the status of the rules and DNS records in the Cloudflare settings screen. If MX records for another email service remain on the same domain, Cloudflare will not take effect.

Only WordPress test emails won’t send

Mismatches in the SMTP host, port, encryption method, username, or password are common. On the SMTP2GO side, mail.smtp2go.com , and testing with TLS on port 587 first makes it easier to troubleshoot. Since some plugins may still be using PHP mail, also check if your settings are configured to force the use of SMTP.

Emails are received in Gmail but end up in the spam folder

Possible causes include inconsistent authentication for the “From” domain, weak DMARC alignment, or a body or sender name that looks too automated. First, review the SPF, DKIM, and DMARC results and verify that the sender address matches the actual transmission path.

Large attachments are not being forwarded properly

Cloudflare Email Routing has a message size limit. For operations involving large attachments, a dedicated email service may be more suitable than a relay-based solution. If your contact form allows large attachments, you’ll want to verify this point in advance.

You may want to switch to your own Postfix

Internal requirements or operational needs may necessitate a self-hosted email infrastructure. However, in such cases, it is safer to prepare a separate operational design—covering Postfix, Dovecot, reverse DNS, monitoring, backups, and incident response—as distinct from the website migration. This is a bit too complex to handle casually as an extension of a WordPress migration.

Frequently Asked Questions

Are the POP and SMTP servers the same?

No, they are not the same. SMTP is for sending, while POP and IMAP are for receiving. If you just want to ensure stable delivery of WordPress notification emails, the first thing you need is an SMTP server.

Do I have to set up a mail server on a VPS to send emails from my own domain?

That is not necessary. By using an SMTP relay service, you can easily set up a configuration to send emails using your custom domain as the sender. Setting up a full-fledged mail server on a VPS is merely another option.

Can I handle both sending and receiving with Cloudflare alone?

No, you cannot. Cloudflare Email Routing is designed for receiving and forwarding emails and does not provide an SMTP server for sending. For sending, you’ll need a separate SMTP service such as SMTP2GO, Brevo, or Amazon SES.

When is a service like Sakura Mailbox suitable?

It’s suitable when multiple people need to use the same inbox, when you want to sync via POP or IMAP, or when you also want to use webmail. If forwarding alone isn’t enough and you want to use email itself as a core part of your business operations, a mailbox service is easier to manage.

Summary

The reason email seems complicated when migrating to a VPS is that people tend to think of web and email as a single integrated system. For WordPress-centric sites, separating incoming mail (using Cloudflare Email Routing) from outgoing mail (using SMTP2GO) can significantly simplify both setup and maintenance.

If you only need WordPress notification emails, consider whether an SMTP relay would suffice before setting up a full email server on your VPS.Conversely, if you need actual inboxes, IMAP, POP, or team management, it will be easier to operate if you set up a separate service like Sakura Mailbox or Google Workspace. For the entire server migration process, please also refer to the complete steps for migrating a WordPress server; for domain switching, see How to Safely Switch Domains Without Changing Them; and for DNS verification, check How to Confirm If DNS Has Been Updated.

Comment

Copied title and URL