When Plesk email stops sending, the diagnostic path matters more than the fix. The same symptom — "email not sending" — can be caused by a blocked SMTP port, a blacklisted IP, a misconfigured DKIM record, or a broken Postfix queue. Each has a completely different fix. This guide covers every major cause of Plesk email delivery failure, with the exact commands and Plesk panel settings to resolve each one.
Step 1: Identify Where the Failure Is Happening
Before changing any settings, determine which layer of the email stack is failing. Plesk email delivery involves four stages, and the fix depends on which stage breaks:
- Stage 1: Application to mail server — PHP mail(), SMTP authentication from a web app, or Plesk webmail
- Stage 2: Postfix/Qmail queue — the local mail server accepts the message and attempts delivery
- Stage 3: Remote delivery — your server connects to the recipient's mail server on port 25
- Stage 4: Authentication and reputation — SPF, DKIM, DMARC checks at the recipient end
Check the mail log first to see exactly where messages are stopping:
# Plesk uses Postfix — check the mail log
tail -100 /var/log/maillog | grep -E "status=|reject:|warning:"
# Or on Ubuntu-based Plesk servers
tail -100 /var/log/mail.log | grep -E "status=|reject:|warning:"
The log entry for each message will show status=sent, status=deferred, or status=bounced along with the exact error reason.
💡 None of these worked? Skip the guesswork.
Get Expert Help →Fix 1: Port 25 Blocked — Switch to Submission Port 587
Most VPS and cloud providers block outbound port 25 by default to prevent spam. This is the most common cause of Plesk email not reaching recipients.
telnet smtp.gmail.com 25
If this hangs or returns "Connection refused," your provider blocks port 25.
In Plesk → Tools and Settings → Mail Server Settings, enable Use SMTP relay and enter your SMTP relay provider details (SendGrid, Mailgun, Amazon SES, or your ISP's relay). This routes outbound mail through an allowed relay server instead of direct port 25.
# Edit /etc/postfix/main.cf
relayhost = [smtp.sendgrid.net]:587
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous
smtp_tls_security_level = encrypt
# Create /etc/postfix/sasl_passwd
[smtp.sendgrid.net]:587 apikey:YOUR_SENDGRID_API_KEY
# Apply
postmap /etc/postfix/sasl_passwd
systemctl reload postfix
Run your server's outbound IP through:
- MXToolbox Blacklist Check:
mxtoolbox.com/blacklists.aspx - Spamhaus Lookup:
check.spamhaus.org - Barracuda Reputation:
www.barracudacentral.org/lookups
Your server IP is found with: curl -s ifconfig.me
Each blacklist has a delisting form. For Spamhaus, visit their delisting portal. For Barracuda, submit a request at barracudacentral.org. Delist from all blacklists before changing anything else — or the problem will recur.
# Check mail queue for abnormal volume
postqueue -p | wc -l
# See which accounts are sending the most mail
postqueue -p | grep "^[A-Z0-9]" | awk '{print $7}' | sort | uniq -c | sort -rn | head -20
# Find PHP scripts generating mail
grep "X-PHP-Originating-Script" /var/log/maillog | awk '{print $NF}' | sort | uniq -c | sort -rn | head -10
dig TXT yourdomain.com | grep spf
A correct SPF record looks like: v=spf1 ip4:YOUR_SERVER_IP include:sendgrid.net ~all
In Plesk → Domains → your domain → DNS Settings, add a TXT record:
Name: @
Type: TXT
Value: v=spf1 ip4:YOUR_SERVER_IP mx ~all
Replace YOUR_SERVER_IP with your server's outbound IP. The ~all (softfail) is recommended over -all (hardfail) during initial setup to avoid blocking legitimate mail.
In Plesk → Tools and Settings → Mail Server Settings → SPF, enable SPF checking for incoming mail to protect your server from being used as a relay for forged sender addresses.
In Plesk → Tools and Settings → Mail Server Settings, enable Use DKIM spam protection system to sign outgoing email messages. Plesk will generate DKIM keys automatically.
dig TXT default._domainkey.yourdomain.com
You should see a long p= public key string. If nothing returns, add the DKIM record manually in Plesk → Domains → DNS Settings.
Send a test email to [email protected] — you will receive an automated reply showing whether DKIM pass, SPF pass, and DMARC pass.
postqueue -p | tail -5
If you see hundreds of deferred messages, the queue is stuck.
postqueue -f
systemctl restart postfix
postqueue -p # Check queue again
# Delete all deferred messages (use with caution)
postsuper -d ALL deferred
# Delete messages from a specific sender
postqueue -p | grep "[email protected]" | awk '{print $1}' | tr -d '!' | xargs -I{} postsuper -d {}
In Plesk → Domains → your domain → PHP Settings, ensure disable_functions does not include mail.
php -r "mail('[email protected]','Test','Body','From: [email protected]'); echo 'sent';"
tail -20 /var/log/maillog # Check if it hit Postfix
PHP mail() has no authentication and is increasingly blocked by receiving servers. Use a plugin like WP Mail SMTP with your mail server's SMTP credentials:
- SMTP Host: your-plesk-server-ip or mail.yourdomain.com
- SMTP Port: 587
- Encryption: TLS
- Username: full email address (e.g., [email protected])
- Password: the email account password in Plesk
dig -x YOUR_SERVER_IP +short
The result should resolve to a hostname that forward-resolves back to your IP.
PTR records are set by whoever controls your IP block — your VPS provider or data centre, not your domain registrar. Log in to your provider's control panel (Vultr, DigitalOcean, Linode, etc.) and set the Reverse DNS / PTR to match your server's main hostname (e.g., mail.yourdomain.com).
When Plesk Email Needs Professional Intervention
Some Plesk email delivery problems require infrastructure-level fixes that go beyond panel settings:
- Persistent IP blacklisting — means a compromised account is still sending spam; requires server-wide audit and account isolation
- DMARC enforcement failures — require coordinating SPF, DKIM, and DNS across multiple sending sources
- Mail server performance issues — high queue volumes, slow delivery, or memory exhaustion from Postfix require kernel and Postfix tuning
- Migrating from Qmail to Postfix in Plesk — a major configuration change that needs careful execution to avoid data loss
Our managed Plesk support team at CloudHouse Technologies diagnoses and fixes email delivery issues for hosting companies running Plesk servers worldwide. If your clients are reporting emails going to spam or not arriving at all, we can audit your entire email stack and get delivery working reliably.
Plesk email delivery failures almost always leave a clear trace in the mail log — the key is knowing which log entry to look for and matching it to the right fix. Start with port 25 availability, check for IP blacklisting, and verify SPF and DKIM are properly configured. These three fixes resolve over 80% of Plesk email delivery issues. For the remaining cases involving infrastructure-level problems, CloudHouse's Plesk support specialists are available to step in.
