Where outbound email is configured#
Outbound email servers live at Settings → Technical → Email → Outbound Mail Servers (developer mode required for direct access, or navigate via Settings → Discuss → Outgoing Mail Server).
Each server record captures SMTP host, port, encryption (None / StartTLS / SSL/TLS), and credentials. Odoo supports multiple outbound servers and routes email based on the Priority field - lower number means higher priority.
SMTP configuration walkthrough#
Required fields#
| Field | Typical values |
|---|---|
| SMTP Server | smtp.gmail.com, email-smtp.us-east-1.amazonaws.com, your own MTA |
| SMTP Port | 587 (StartTLS) or 465 (SSL/TLS) - avoid port 25 on cloud VMs |
| Connection Security | SSL/TLS for port 465, StartTLS for port 587 |
| Username | Full email address or SMTP API username |
| Password | Account password or SMTP API key |
After saving, click Test Connection to verify credentials before going live.
Priority and multi-server routing#
If you have multiple outbound servers, use the priority field to control routing. Add a From Filter (a domain like @mycompany.com) to pin specific senders to specific servers.
Odoo evaluates servers in this order:
- Servers with a matching From Filter (domain of the sending address matches)
- Among those, the one with the lowest priority number
- If no From Filter matches, fall back to the lowest-priority server overall
From address masking#
Navigate to Settings → General Settings → Discuss and set:
- Alias Domain: your sending domain (e.g.,
mail.mycompany.com) - Default From: the address to use when no other from is specified
With an alias domain set, Odoo constructs reply-to addresses like catchall@mail.mycompany.com and routes responses back through the inbound mail gateway.
SPF and DKIM requirements#
SPF#
Add a TXT record on your sending domain that includes your SMTP relay:
v=spf1 include:sendgrid.net include:amazonses.com ~allReplace the include: values with whatever relay you are using. If sending directly from your own server, use ip4:your.server.ip instead.
DKIM#
DKIM requires your email provider to give you a public key to publish as a DNS TXT record. The record name is typically selector._domainkey.yourdomain.com. The exact selector and key value come from your SMTP provider's setup documentation.
Odoo itself does not generate or manage DKIM keys. Key signing happens at the SMTP relay level - configure DKIM on the relay, not in Odoo.
DMARC (recommended)#
Once SPF and DKIM are passing, add a DMARC policy:
_dmarc.yourdomain.com TXT "v=DMARC1; p=quarantine; rua=mailto:dmarc-reports@yourdomain.com"Start with p=none (monitoring only) and move to p=quarantine after confirming your legitimate senders are aligned.
Bounce address (return-path) configuration#
In Settings → General Settings → Discuss, set the Catchall Email field. This is the address that receives bounce notifications and auto-replies. It must be a real mailbox that Odoo can read via an inbound mail gateway.
Odoo sets the Return-Path SMTP header to bounce+token@youraliasdomain.com. The token encodes the original message ID so Odoo can match bounce notifications to specific sent messages and update the partner's email validity flag.
Testing deliverability#
After configuration:
- Send a test email from Settings → Outgoing Mail Server → Test Connection
- Send an actual email to a mail-tester.com address and review the score
- Check your SMTP relay's dashboard for delivery rates and bounces
- Review Odoo's Settings → Technical → Email → Emails list to see queued and sent messages and their status
Common failure modes#
"Mail server not found" error - no outbound server is configured, or all configured servers have a From Filter that does not match the sending address.
Emails stuck in "Outgoing" state - the mail queue worker is not running. Check Settings → Technical → Automation → Scheduled Actions → Email Queue Manager.
Delivered but landing in spam - SPF or DKIM is missing or misaligned. Run your domain through MXToolbox to diagnose.
Bounces not processed - the catchall mailbox is not connected to an inbound mail gateway, or the alias domain is not set.

