Plesk email going silent is one of the most disruptive problems on a shared hosting server — every domain hosted on that server stops sending or receiving at once. The cause is almost always one of three things: a stuck Postfix queue, an Amavis/Plesk Email Security service that crashed and took port 10024 down with it, or an ISP or firewall that blocked outbound port 25. This guide walks through all three failure modes with the exact commands to diagnose and fix each one fast.
Step 1: Diagnose — Check the Mail Queue and Logs First
Before touching any configuration, establish which error you're dealing with:
# Check Postfix service status
systemctl status postfix
# View the mail queue (shows deferred message count and error codes)
mailq | head -40
# or
postqueue -p | head -40
# Count deferred messages
mailq | grep -c "^[A-F0-9]"
# Watch the mail log in real-time
tail -f /var/log/maillog # CentOS/AlmaLinux
tail -f /var/log/mail.log # Debian/Ubuntu
The error string at the end of each queue entry tells you exactly what's wrong. The three most common ones:
connect to 127.0.0.1[127.0.0.1]:10024: Connection refused— Amavis is downConnection timed out (port 25)— outbound port 25 is blocked by ISP or firewallmail transport unavailable— Postfix is misconfigured or a transport service crashed
Fix 1: Amavis "Connection Refused" on Port 10024
When Plesk Email Security (Amavis/SpamAssassin) is installed, all outgoing mail passes through Amavis on port 10024 before Postfix delivers it. If Amavis crashes, the entire mail queue stalls with connect to 127.0.0.1:10024: Connection refused.
Check and restart Amavis:
# Check status
systemctl status amavisd
# or
/usr/local/psa/admin/sbin/mailmng --check-mail
# Restart
systemctl restart amavisd
systemctl restart postfix
# Verify port 10024 is now listening
ss -tlnp | grep 10024
If Amavis fails to start, the most common cause is an invalid hostname configuration:
# Check hostname resolves to an FQDN
hostname -f
# Should return something like: server1.yourdomain.com (not just "localhost")
# Fix in Plesk GUI: Tools & Settings → Server Settings → Full Hostname → set FQDN
# Fix via CLI:
hostnamectl set-hostname server1.yourdomain.com
plesk repair mail
If Amavis was recently removed but mail is still routing through it (stale Postfix config), clean up the leftover transport:
# Remove amavis transport reference from Postfix master.cf
grep -n "amavis\|smtp-amavis" /etc/postfix/master.cf
# If found, remove those lines, then:
postfix reload
# Flush the deferred queue to retry delivery
postqueue -f
Fix 2: Port 25 Blocked (Connection Timed Out Errors)
Many cloud providers (AWS, GCP, Azure, Hetzner, DigitalOcean) and residential ISPs block outbound port 25 by default to prevent spam. The symptom is mail staying in the deferred queue with Connection timed out errors after several minutes.
Verify whether port 25 is blocked:
# Test outbound port 25 to an external mail server
telnet smtp.gmail.com 25
# If the connection hangs (no banner), port 25 is blocked
# Alternative test using nc
nc -zv smtp.gmail.com 25 2>&1
Option A — Request port 25 unblock: Most cloud providers have a form to request port 25 be unblocked for legitimate mail servers (AWS EC2 → Service Quotas → Email sending limit, Hetzner → support ticket). This is the cleanest solution but may take 24-48 hours.
Option B — Route mail through port 587 via a smart relay host: Configure Postfix to relay all outbound mail through a transactional email service (Mailgun, SendGrid, Amazon SES) using STARTTLS on port 587:
# In Plesk GUI: Tools & Settings → Mail Server Settings → Relay options → Smart host
# Set: relay host = [smtp.mailgun.org]:587, add SASL credentials
# Or configure directly in /etc/postfix/main.cf:
relayhost = [smtp.mailgun.org]: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 the credentials file:
echo "[smtp.mailgun.org]:587 username@domain:PASSWORD" > /etc/postfix/sasl_passwd
postmap /etc/postfix/sasl_passwd
chmod 600 /etc/postfix/sasl_passwd
postfix reload
Fix 3: "Mail Transport Unavailable" Error
This generic Postfix error means a configured transport service (Dovecot, pipe delivery, or a custom transport) isn't responding. The quickest fix in Plesk is to run the built-in mail repair utility:
# Repair Plesk mail configuration (safe to run — resets Postfix to Plesk defaults)
plesk repair mail
# If the above doesn't help, also repair DNS and the web stack:
plesk repair all
# Restart all mail-related services
systemctl restart postfix dovecot
plesk bin mailmng --restart
If plesk repair mail reports errors, check for a full disk — Postfix stops delivering if the mail spool directory (/var/spool/postfix/) is on a full filesystem:
df -h /var/spool/postfix/
# If at 100%, free space first:
find /var/spool/postfix/deferred/ -mtime +7 -exec rm {} \;
postsuper -d ALL deferred # Remove ALL deferred mail (use only if acceptable to discard)
Fix 4: Postfix Service Crashing (postfix-srs Process Timeout)
A bug in certain Plesk versions causes the postfix-srs (Sender Rewriting Scheme) process to exceed its time limit and kill the entire Postfix service. The symptom is periodic mail service interruptions with log entries like postfix-srs: process id XXXXX: command time limit exceeded.
# Check if SRS is involved
grep "postfix-srs\|command time limit" /var/log/maillog | tail -20
# Temporary fix — increase the SRS time limit in master.cf:
# Find the srsfilter line and add a timeout parameter
grep -n "srsfilter\|postfix-srs" /etc/postfix/master.cf
# Permanent fix — update Plesk to the latest release, which patches this bug:
plesk installer --select-release-current --upgrade-installed-components
Fix 5: Flush Stuck Deferred Queue After Fixing the Root Cause
After resolving the underlying issue, the messages sitting in the deferred queue won't retry immediately — Postfix backs off exponentially. Force an immediate retry:
# Retry all deferred messages now
postqueue -f
# Monitor delivery progress
watch -n 5 "mailq | tail -3"
# If specific messages are permanently broken (e.g., invalid recipient), remove them:
postsuper -d QUEUE_ID # Replace QUEUE_ID with the message ID from mailq output
postsuper -d ALL deferred # Nuclear option — clears everything
Preventing Plesk Email Outages
- Monitor Amavis health: add a simple cron check —
ss -tlnp | grep 10024 || systemctl restart amavisd postfix - Set up WHM/Plesk email alerts: Plesk → Tools & Settings → Notifications → Mail system alerts
- Use a dedicated transactional email service for high-volume sends (Mailgun, SES) — keeps your server IP reputation clean
- Watch queue depth: alert if
mailq | grep -c "^[A-F0-9]"exceeds 500 - Keep Plesk and components updated: run
plesk installer --select-release-current --upgrade-installed-componentsmonthly
Most Plesk email outages are fixed in under 15 minutes once you know which of the three root causes you're dealing with. For managed Plesk hosting with proactive email monitoring, CloudHouse Technologies' server management service monitors your Postfix queue and Amavis health around the clock.
