Skip to Content

Inbound mail in Odoo via Postmark, without IMAP and without an open SMTP port

Mail arrives over HTTPS and goes straight to Odoo's own mail router, so your existing aliases keep working. For Odoo 18 and 19.
Bojan Nišević

Odoo can turn incoming mail into tickets, tasks and leads. Getting that mail into Odoo in the first place is where things usually get stuck: your hosting blocks port 25, IMAP fetching silently stops, or the mailbox fills up and nobody notices for a week.

Postmark Inbound takes a different route and is now on the Odoo Apps Store, free and LGPL-3, for Odoo 18 and Odoo 19.

Mail arrives over HTTPS

Point your domain's MX record at a Postmark inbound stream. Postmark accepts the message and sends it to Odoo over HTTPS. No mailbox is polled, no mail server runs next to Odoo, and no SMTP port has to be open.

If your outgoing mail already goes through Postmark, incoming mail can now take the same route, with the same domain and one place for the logs.

Odoo does the routing, not the module

This is the important part. The module does not know what a helpdesk ticket or a project task is. It hands every message to Odoo's own mail router, so everything your aliases already do keeps working:

  • Aliases are resolved by Odoo, including falling back to the Delivered-To header when the visible recipient is a forwarding address.
  • Replies stay on the record they reply to. The original headers are preserved, so the References chain still points to the ticket instead of opening a duplicate.
  • Attachments arrive with the message, whether the stream sends raw MIME or JSON parsed by Postmark.

Closed until you configure it

The webhook is protected by a shared secret stored in one Odoo system parameter and compared in constant time. Until that parameter is set, the route rejects every request with 403 and writes the reason to the log. An installed but unconfigured module is never an open endpoint.

Messages that match no alias, or that reply to a record that no longer exists, get HTTP 200 and a short explanation, so Postmark stops retrying something that would fail the same way every time.

What you need

Odoo 18 or 19, Community or Enterprise, and a Postmark account. The only Odoo dependency is Discuss, which every database already has.

Download the module

The module is available on the Odoo Apps Store at apps.odoo.com/apps/modules/19.0/postmark_inbound, with a matching 18.0 branch. Questions and customisations: hello@wolfinne.com.

Odoo Partnership Demystified – What You Need to Know
What is behind the Odoo partner label and how it affects your business decisions