Email is central to Odoo — sales confirmations, invoices, automated reminders, CRM activities — and it's also one of the most commonly misconfigured parts of a new Odoo setup. This guide walks through configuring both outgoing SMTP and incoming IMAP/POP3, with specific steps for Gmail, Outlook, and custom mail servers.
Outgoing Mail (SMTP)
Step 1: Configure the Outgoing Mail Server
Go to Settings → Technical → Email → Outgoing Mail Servers and click New.
Fill in the fields:
- Name: descriptive label (e.g., "Gmail SMTP")
- SMTP Server: your SMTP hostname
- SMTP Port: 587 (STARTTLS) or 465 (SSL/TLS)
- Connection Security: TLS (STARTTLS) or SSL/TLS
- Username: your email address
- Password: your password or app password
Gmail SMTP Configuration
SMTP Server: smtp.gmail.com
SMTP Port: 587
Connection Security: TLS (STARTTLS)
Username: [email protected]
Password: [App Password — NOT your Gmail password]
Gmail requires an App Password if 2-factor authentication is enabled (and it should be). Generate one at myaccount.google.com/apppasswords. Select "Mail" and "Other" as the device.
If you use Google Workspace (formerly G Suite), the process is the same but you may need to enable SMTP relay in the Google Admin console for bulk sending.
Microsoft Outlook / Office 365 SMTP Configuration
SMTP Server: smtp.office365.com
SMTP Port: 587
Connection Security: TLS (STARTTLS)
Username: [email protected]
Password: [App Password if MFA is enabled]
For Office 365, Microsoft has been phasing out Basic Authentication. If your connection fails, check that SMTP AUTH is enabled for your account in the Microsoft 365 admin center under Users → Active Users → [user] → Mail → Manage email apps → Authenticated SMTP.
Custom SMTP Server
SMTP Server: mail.yourhost.com
SMTP Port: 587 or 465
Connection Security: TLS (STARTTLS) or SSL/TLS
Username: [email protected]
Password: your_mail_password
For transactional email at scale, consider a dedicated service like Mailgun, SendGrid, or Amazon SES. These provide delivery analytics, bounce handling, and much higher sending limits than shared SMTP servers.
Step 2: Test the Connection
Click Test Connection on the outgoing mail server form. If it succeeds, send a test email. If it fails:
- Verify port and security settings
- Check firewall rules (port 587 must be open outbound from your server)
- Confirm the username/password is correct
- Check Odoo logs:
tail -f /var/log/odoo/odoo.log | grep mail
Step 3: Set the Default From Address
Go to Settings → Technical → Parameters → System Parameters and set:
Key: mail.default.from
Value: [email protected]
Also set mail.default.from.filter to control which "From" addresses are allowed. Without this, Odoo may try to send from individual user email addresses, which may be rejected by your SMTP server.
Incoming Mail (IMAP/POP3)
Odoo can fetch incoming emails and convert them into CRM leads, helpdesk tickets, or replies to existing threads. This requires configuring an incoming mail server.
Step 1: Create an Incoming Mail Server
Go to Settings → Technical → Email → Incoming Mail Servers and click New.
; Gmail IMAP
Server Type: IMAP
Server Name: imap.gmail.com
Port: 993
SSL/TLS: enabled
Username: [email protected]
Password: [App Password]
; Outlook IMAP
Server Name: outlook.office365.com
Port: 993
SSL/TLS: enabled
Username: [email protected]
; POP3 (if IMAP not available)
Server Type: POP3
Port: 995
SSL/TLS: enabled
Use a dedicated mailbox for Odoo incoming mail — not a shared inbox. Odoo marks emails as read and may move or delete them, which would be confusing in a shared mailbox.
Step 2: Configure the Catchall Alias
The catchall address receives replies to Odoo-sent emails and routes them to the correct record (e.g., a reply to a sales order email goes back to that sales order's chatter).
Configure these system parameters (Settings → Technical → Parameters → System Parameters):
mail.catchall.domain = yourcompany.com
mail.catchall.alias = catchall
This tells Odoo that emails sent to [email protected] (and any alias like [email protected]) should be fetched via the incoming mail server. The catchall domain must match your email domain.
Step 3: Set Up Email Aliases
Each Odoo application can have its own alias:
- CRM:
[email protected]→ creates leads - Helpdesk:
[email protected]→ creates tickets - Project:
[email protected]→ creates tasks
Configure aliases in Settings → Technical → Email → Aliases, or within each application's settings (e.g., CRM → Configuration → Settings → Alias Domain).
Your DNS MX record must point to a mail server that routes these aliases to the mailbox Odoo is fetching from. Either:
- Create actual mailboxes for each alias and configure separate incoming servers
- Set up a catch-all mailbox on your mail server and use wildcard routing
DNS Records for Deliverability
Configure these DNS records to prevent your emails from being marked as spam:
; SPF — authorize your SMTP server to send for your domain
yourcompany.com. TXT "v=spf1 include:_spf.google.com ~all"
; DKIM — sign outgoing mail (configure in your mail server or ESS provider)
; DMARC — policy for SPF/DKIM failures
_dmarc.yourcompany.com. TXT "v=DMARC1; p=quarantine; rua=mailto:[email protected]"
Without SPF at minimum, Odoo emails frequently land in spam folders. Gmail and Outlook now require SPF, DKIM, and DMARC alignment for bulk senders.
Troubleshooting Common Email Issues
| Problem | Likely Cause | Fix |
|---|---|---|
| Emails going to spam | Missing SPF/DKIM/DMARC | Configure DNS records, use a reputable SMTP relay |
| SMTP connection refused | Port 587 blocked by firewall | Check server firewall rules, use port 465 as alternative |
| Authentication failed | Wrong password or app password needed | Generate app password if 2FA is enabled |
| Replies not threading correctly | mail.catchall.domain not set | Set the system parameter, verify alias routing |
| Incoming mail not fetching | Scheduled action not running | Check Settings → Technical → Automation → Scheduled Actions for "Fetch Emails" |
How DeployMonkey Handles Email
DeployMonkey instances are pre-configured with a working SMTP connection — you just add your credentials. Our infrastructure ensures port 587 is open outbound (a common issue with cloud providers that block SMTP ports by default).
For high-volume transactional email, we recommend connecting your instance to a dedicated ESP like Mailgun or SendGrid through the standard outgoing mail server configuration above. DeployMonkey instances support any SMTP provider.
Try DeployMonkey free and get email working in minutes.
Frequently Asked Questions
Can I use multiple outgoing mail servers in Odoo?
Yes. You can configure multiple outgoing mail servers and assign them to specific companies or use them as fallbacks. Go to Settings → Technical → Email → Outgoing Mail Servers and create additional entries. The priority field determines which server is used when multiple servers match.
Why does Odoo show "Mail server not set up" even after configuration?
Check that the mail server is set to Active (toggle on the form view). Also verify the connection with the "Test Connection" button — a server that can't connect is effectively inactive. Check Odoo logs for the specific error.
How often does Odoo fetch incoming emails?
By default, the "Fetch Emails" scheduled action runs every 5 minutes. You can adjust this in Settings → Technical → Automation → Scheduled Actions. Search for "Fetch Emails" and modify the interval.
Can Odoo receive emails without setting up an incoming mail server?
Yes, via the Odoo mail gateway script, which pipes incoming emails directly to Odoo's API. This requires server-level configuration of your MTA (Postfix, etc.) but avoids the polling latency of IMAP fetching. Most deployments use IMAP fetching for simplicity.