Ghost Email Not Sending? Here's What Fixed It for Me

Setting up a fresh Ghost installation is exciting until you realize your emails aren't going anywhere. Whether it's member invitations, password resets, or newsletter campaigns, non-functioning email can kill your publishing momentum fast.
After wrestling with this issue across multiple Ghost installations, I've compiled every solution that actually works. Here's your complete troubleshooting roadmap.
The Root Cause: Ghost Needs SMTP Configuration
Fresh Ghost installations don't come with email configured out of the box. Unlike hosted platforms, self-hosted Ghost requires you to set up your own email delivery system through SMTP (Simple Mail Transfer Protocol).
Step 1: Choose Your Email Service Provider
Before diving into configuration, pick a reliable email service. Here are the best options:
Mailgun (Recommended)
- Ghost's official recommendation
- 3000 free emails per month
- Excellent deliverability
- Easy integration
SendGrid
- 100 free emails per day
- Robust analytics
- Good for newsletters
Amazon SES
- Very cost-effective for high volume
- Requires AWS account
- More complex setup
Gmail SMTP
- Quick setup for testing
- Not recommended for production
- Daily sending limits
Step 2: Configure Your config.production.json File
Navigate to your Ghost installation directory and edit the config.production.json
file. Here's how to configure each service:
sudo naon config.production.json
Mailgun Configuration
{
"mail": {
"transport": "SMTP",
"options": {
"service": "Mailgun",
"host": "smtp.mailgun.org",
"port": 587,
"auth": {
"user": "[email protected]",
"pass": "your-mailgun-smtp-password"
}
}
}
}
SendGrid Configuration
{
"mail": {
"transport": "SMTP",
"options": {
"host": "smtp.sendgrid.net",
"port": 587,
"auth": {
"user": "apikey",
"pass": "your-sendgrid-api-key"
}
}
}
}
Gmail Configuration (Testing Only)
{
"mail": {
"transport": "SMTP",
"options": {
"service": "Gmail",
"auth": {
"user": "[email protected]",
"pass": "your-app-password"
}
}
}
}
Step 3: Restart Ghost
After updating your configuration:
ghost restart
Or if you're using PM2:
pm2 restart ghost
Common Issues and Fixes
Issue 1: Authentication Failed
Symptoms: "Authentication failed" errors in logs Solution:
- Double-check your SMTP credentials
- For Gmail, use App Passwords, not your regular password
- Ensure your email service account is active
Issue 2: Connection Timeout
Symptoms: Emails stuck in queue, timeout errors Solutions:
- Try different ports (587, 465, 25)
- Check if your hosting provider blocks SMTP ports
- Switch to a different email service
Issue 3: Emails Going to Spam
Symptoms: Emails deliver but land in spam folders Solutions:
- Set up SPF, DKIM, and DMARC records
- Use a custom domain for your "from" address
- Start with low sending volumes
Issue 4: SSL/TLS Errors
Symptoms: Certificate or encryption errors Solution: Add SSL configuration to your mail settings:
{
"mail": {
"transport": "SMTP",
"options": {
"host": "smtp.mailgun.org",
"port": 587,
"secure": false,
"auth": {
"user": "your-username",
"pass": "your-password"
}
}
}
}
Step 4: Test Your Configuration
- Go to Ghost Admin → Settings → Members
- Try inviting yourself with a test email
- Check both inbox and spam folders
- Monitor Ghost logs for error messages
Advanced Troubleshooting
Check Ghost Logs
ghost log
Look for email-related error messages that can point to specific issues.
Verify DNS Settings
If using a custom domain, ensure your MX records are properly configured:
dig MX yourdomain.com
Test SMTP Connection
Use a tool like telnet to test your SMTP connection:
telnet smtp.mailgun.org 587
Production Best Practices
1. Use Dedicated Email Services
Never rely on shared hosting email or basic SMTP for production Ghost sites. Dedicated services offer better deliverability and analytics.
2. Configure DNS Records
Set up proper SPF, DKIM, and DMARC records:
SPF Record:
v=spf1 include:mailgun.org ~all
DMARC Record:
v=DMARC1; p=none; rua=mailto:[email protected]
3. Monitor Email Performance
- Track bounce rates
- Monitor spam complaints
- Keep your email list clean
4. Warm Up Your Domain
Start with small sending volumes and gradually increase to build reputation with email providers.
What Fixed It for Me
In my case, the issue was a combination of factors:
- Wrong port configuration - I was using 465 instead of 587
- Firewall blocking - My VPS provider was blocking SMTP ports
- Missing DNS records - No SPF record caused deliverability issues
After switching to Mailgun, configuring port 587, and adding proper DNS records, emails started flowing perfectly.
Final Checklist
Before considering your Ghost email setup complete:
- SMTP credentials are correct and active
- Ghost has been restarted after configuration changes
- Test emails are being received (check spam folders)
- DNS records are properly configured
- Email service account has sufficient credits/quota
- Firewall/hosting provider allows SMTP traffic
Ghost email issues can be frustrating, but they're almost always configuration problems with straightforward solutions. Follow this guide systematically, and you'll have reliable email delivery in no time.
The key is patience and methodical troubleshooting. Start with the basics, test thoroughly, and don't skip the DNS configuration – it makes a huge difference in deliverability.