A stuck Postfix mail queue causes email delivery failures and can fill your disk. This guide covers diagnosing and resolving all common queue issues.
Step 1 — Check Queue Status
postqueue -p | head -30
postqueue -p | wc -l # Total queued messages
# Check queue by type
mailq | grep "^[A-F0-9]" | wc -l
Step 2 — View Queue Details
# View specific message
postcat -vq MESSAGE_ID
# See why messages are deferred
postqueue -p | grep "deferred" | head -20
# Check mail log for errors
tail -100 /var/log/mail.log | grep -E "error|warning|deferred"
Step 3 — Fix Deferred Messages
# Force retry all deferred
postqueue -f
# Retry specific message
postqueue -i MESSAGE_ID
# Flush entire queue
postfix flush
Step 4 — Delete Stuck Messages
# Delete all deferred messages
postsuper -d ALL deferred
# Delete ALL queued messages (use carefully)
postsuper -d ALL
# Delete messages to specific domain
postqueue -p | awk '/^[A-F0-9]/{id=$1} /[email protected]/{print id}' | postsuper -d -
Step 5 — Fix Common Causes
# Check if Postfix is running
sudo systemctl status postfix
# Test SMTP connection to recipient
telnet mail.recipient.com 25
# Check if your IP is blacklisted
# https://mxtoolbox.com/blacklists.aspx
# Fix DNS resolution issues
postconf -e "smtp_dns_support_level = enabled"
Step 6 — Monitor Queue Size
# Alert if queue over 100 messages
QUEUE=$(postqueue -p | grep -c "^[A-F0-9]")
if [ $QUEUE -gt 100 ]; then
echo "Mail queue: $QUEUE messages" | mail -s "Queue Alert $(hostname)" [email protected]
fi
Conclusion
Mail queue issues need prompt attention to prevent email loss. Our team manages Postfix mail servers with proactive queue monitoring.
Comments