When you configure a tenant-to-tenant migration, your Tenant Migration mail server (mx1.mailhop.org) needs to accept and queue mail for your domain before you update your public MX records. This lets you confirm everything is working without affecting production mail flow.
The idea is simple: connect directly to mx1.mailhop.org on port 25 and inject a test message, bypassing DNS entirely. If the server accepts and queues the message, you can confidently change your MX record knowing mail will be held safely during the migration window.
Prerequisites — Before You Test
Before sending a test message you will need to make two configuration changes in the TenantMigration.com portal.
1. Disable SPF Checking for Your Domain
Because you are sending directly to the mail server from your workstation (or a server that is not listed in your domain's SPF record), the message will fail SPF validation. To prevent it from being rejected, temporarily disable SPF enforcement for your domain in the TenantMigration.com dashboard before testing.
⚠ Important: Remember to re-enable SPF checking after you complete your testing and migration. Leaving it disabled in production reduces your protection against spoofed mail.
2. Whitelist Your Sending IP (If Required)
If you are sending from a network or IP address that is not already trusted by the system, you may need to add it to your domain's IP whitelist. This is common when testing from a corporate office, VPN endpoint, or cloud VM.
To find your current public IP, visit whatismyipaddress.com and add that address in the portal under your domain's whitelist settings.
Note: If your ISP or network blocks outbound port 25, you will not be able to test from that location. Try from a cloud server or ask your network administrator to allow outbound SMTP.
Option A: Test with Swaks (Linux / macOS)
Swaks (Swiss Army Knife for SMTP) is the easiest way to send a test message from the command line. Install it with your package manager (apt install swaks, brew install swaks, etc.).
swaks --to user@exampledomain.com \ --from test@exampledomain.com \ --server mx1.mailhop.org \ --port 25 \ --helo test.exampledomain.com \ --header "Subject: Tenant Migration Queue Test" \ --body "This is a test to confirm mail is queuing on mx1.mailhop.org before the MX cutover."
Swaks will print the full SMTP conversation. Look for a 250 OK response after the DATA phase, which confirms the server accepted and queued the message.
Option B: Test with Bash (No Extra Tools)
If you don't have Swaks installed, you can use a raw SMTP conversation with netcat or Bash's built-in /dev/tcp.
Using netcat
{
sleep 1; echo "EHLO test.exampledomain.com"
sleep 1; echo "MAIL FROM:<test@exampledomain.com>"
sleep 1; echo "RCPT TO:<user@exampledomain.com>"
sleep 1; echo "DATA"
sleep 1
echo "From: test@exampledomain.com"
echo "To: user@exampledomain.com"
echo "Subject: Tenant Migration Queue Test"
echo ""
echo "This is a test to confirm mail is queuing before the MX cutover."
echo "."
sleep 1; echo "QUIT"
} | nc mx1.mailhop.org 25Using /dev/tcp (interactive — see server responses)
exec 3<>/dev/tcp/mx1.mailhop.org/25 cat <&3 & echo -e "EHLO test.exampledomain.com\r" >&3; sleep 1 echo -e "MAIL FROM:<test@exampledomain.com>\r" >&3; sleep 1 echo -e "RCPT TO:<user@exampledomain.com>\r" >&3; sleep 1 echo -e "DATA\r" >&3; sleep 1 echo -e "From: test@exampledomain.com\r\nTo: user@exampledomain.com\r\nSubject: Tenant Migration Queue Test\r\n\r\nThis is a test to confirm mail is queuing.\r\n.\r" >&3; sleep 1 echo -e "QUIT\r" >&3; sleep 1 exec 3>&-
Tip: The /dev/tcp method prints the full SMTP dialogue to your terminal, making it easier to diagnose issues. Look for 250 responses at each step.
Option C: Test with PowerShell (Windows)
Use the .NET SmtpClient class, which works on all versions of PowerShell.
$smtp = New-Object System.Net.Mail.SmtpClient("mx1.mailhop.org", 25)
$mail = New-Object System.Net.Mail.MailMessage
$mail.From = "test@exampledomain.com"
$mail.To.Add("user@exampledomain.com")
$mail.Subject = "Tenant Migration Queue Test"
$mail.Body = "This is a test to confirm mail is queuing on mx1.mailhop.org before the MX cutover."
try {
$smtp.Send($mail)
Write-Host "Message sent successfully." -ForegroundColor Green
} catch {
Write-Host "Send failed: $_" -ForegroundColor Red
} finally {
$smtp.Dispose()
}Note: If you see Send-MailMessage referenced elsewhere, be aware it is deprecated in PowerShell 7+. The SmtpClient approach above works on both Windows PowerShell 5.1 and PowerShell 7.
Verifying the Message Queued
1. Check the SMTP Response
In the output of your test command, look for a 250 response after the message data. A response like 250 2.0.0 Ok: queued confirms the mail server accepted the message.
2. Check the TenantMigration.com Dashboard
Log in to the TenantMigration.com portal and navigate to the mail queue for your domain. You should see your test message listed with a queued status, waiting for delivery to the destination tenant.
3. Proceed with Your MX Cutover
Once you have confirmed that messages are queuing correctly, you can confidently update your domain's MX record to point to mx1.mailhop.org. All incoming mail will be queued and delivered according to your migration schedule.
Tip: Send test messages to more than one recipient address at your domain to verify that the system is accepting mail for all users, not just a single mailbox.
Troubleshooting
Connection timed out or refused
Your network or ISP may be blocking outbound traffic on port 25. This is common on residential connections and some corporate networks. Try testing from a cloud VM (AWS, Azure, etc.) or ask your network administrator to permit outbound SMTP.
550 — Relay denied or recipient rejected
The domain may not be fully provisioned in the TenantMigration.com system yet. Verify that your domain appears in the portal and that the service is active.
SPF failure or 550 authentication error
You likely haven't disabled SPF checking yet. Go to your domain settings in the TenantMigration.com portal and turn off SPF enforcement for testing. See Prerequisites above.
Message accepted but not visible in queue
Allow a minute for the dashboard to refresh. If the message still doesn't appear, check that you sent to the correct domain and that the domain is configured for queuing (not pass-through delivery).
⚠ Don't forget: After completing your migration and verifying mail flow, re-enable SPF checking and remove any temporary IP whitelist entries you added for testing.
Still need help? Contact us at support@tenantmigration.com or open a ticket in the portal.