Skip to content

Commit c619a6f

Browse files
StraubCreativesamueljlieber
authored andcommitted
[IMP] email: add mail.default.from_filter
closes #3211 X-original-commit: df041b1 Signed-off-by: Victor Feyens (vfe) <vfe@odoo.com> Signed-off-by: Zachary Straub <zst@odoo.com>
1 parent 992223a commit c619a6f

File tree

1 file changed

+115
-86
lines changed

1 file changed

+115
-86
lines changed
Lines changed: 115 additions & 86 deletions
Original file line numberDiff line numberDiff line change
@@ -1,134 +1,151 @@
1-
========================
2-
Sending emails with Odoo
3-
========================
1+
=======================
2+
Send an email with Odoo
3+
=======================
44

5-
Using your email domain in Odoo
6-
===============================
5+
Use an email domain in Odoo
6+
===========================
77

8-
Documents in Odoo (a CRM opportunity, a sales order, an invoice ...) have a discussion thread,
9-
called *chatter*.
8+
Documents in Odoo (such as a CRM opportunity, a sales order, an invoice, etc.) have a discussion
9+
thread, called *chatter*.
1010

11-
When you post a message in the chatter, this message is sent by email to the followers of the
12-
document. If a follower replies to the message, the reply updates the chatter, and Odoo relays the
13-
reply to the followers.
11+
When a database user posts a message in the chatter, this message is sent by email to the followers
12+
of the document. If a follower replies to the message, the reply updates the chatter, and Odoo
13+
relays the reply to the followers as a notification.
1414

15-
Emails from your users to partners (customers, vendors) are sent from the email address of your
16-
users. Similarly, emails from partners to users are sent from the email address of the partners.
17-
This allows you to recognize at a glance who sent an email relayed by Odoo.
15+
Messages sent in the chatter from internal database users to external users (such as partners,
16+
customers, or vendors) are relayed on behalf of the database users. Messages sent back to the
17+
chatter from external users will appear in the chatter from their respective email addresses, or as
18+
they are listed in their Contacts record.
1819

19-
If your database is hosted on our cloud (Odoo Online or Odoo.sh), it is not necessary to add an
20-
outgoing email server to send emails from your custom domain. You can enjoy this feature by using
21-
the default Odoo email server.
20+
If the Odoo database is hosted on the cloud (Odoo Online or Odoo.sh), it is not necessary to add an
21+
outgoing email server to send emails from a custom domain.
2222

2323
.. important::
2424
The Odoo server is subject to a daily email limit to prevent abuse. The default limit is 200
25-
emails sent per day for databases with an Enterprise subscription. This limit can be increased
26-
under certain conditions. See our :doc:`FAQ <faq>` or contact support for more
25+
emails sent per day for databases with an **Enterprise** subscription. This limit can be
26+
increased under certain conditions. See the :doc:`FAQ <faq>` or contact support for more
2727
information.
2828

29-
However, it is recommended that you configure your domain name to ensure that emails from your
30-
users reach your partners, rather than being considered spam.
29+
To ensure that emails sent to and from the chatter reach their intended contacts, instead of being
30+
considered spam, Odoo recommends configuring the domain name.
3131

32-
For the same reason, we recommend that you always give your users an email address from a domain
33-
you manage, rather than a generic email address (gmail.com, outlook.com, etc.).
32+
For the same reason, Odoo also recommends giving each database user an email address from the
33+
configured domain, rather than a generic email address domain (such as gmail.com, outlook.com,
34+
etc.).
3435

3536
.. _email_communication/spf_compliant:
3637

3738
Be SPF compliant
3839
================
3940

4041
The Sender Policy Framework (SPF) protocol allows the owner of a domain name to specify which
41-
servers are allowed to send email from that domain. When a server receives an incoming email,
42-
it checks whether the IP address of the sending server is on the list of allowed IPs according
43-
to the SPF record of the sender.
42+
servers are allowed to send emails from that domain. When a server receives an incoming email,
43+
it checks if the IP address of the sending server is on the list of allowed IPs according to the
44+
sender's :abbr:`SPF (Sender Policy Framework)` record.
4445

4546
.. note::
46-
The SPF verification is performed on the domain mentioned in the Return-Path field of the email.
47-
In the case of an email sent by Odoo, this domain corresponds to the value of the
48-
`mail.catchall.domain` key in the database system parameters.
47+
The :abbr:`SPF (Sender Policy Framework)` verification is performed on the domain mentioned in
48+
the `Return-Path` field of the email. In the case of an email sent by Odoo, this domain
49+
corresponds to the value of the `mail.catchall.domain` key in the database system parameters.
4950

5051
See the :ref:`documentation on incoming emails <email_communication/inbound_messages>`.
5152

52-
The SPF policy of a domain is set using a TXT record. How to create or modify a TXT record depends
53-
on the provider hosting the DNS zone of your domain name. In order for the verification to work
54-
properly, each domain can only have one SPF record.
53+
The :abbr:`SPF (Sender Policy Framework)` policy of a domain is set using a TXT record. The way to
54+
create or modify a TXT record depends on the provider hosting the :abbr:`DNS (Domain Name System)`
55+
zone of the domain name. In order for the verification to work properly, each domain can only have
56+
one :abbr:`SPF (Sender Policy Framework)` record.
5557

56-
If your domain name does not yet have an SPF record, the content of the record to create is as
57-
follows:
58+
If the domain name does not yet have an :abbr:`SPF (Sender Policy Framework)` record, the content
59+
of the record to create it is as follows:
5860

59-
``v=spf1 include:_spf.odoo.com ~all``
61+
`v=spf1 include:_spf.odoo.com ~all`
6062

61-
If your domain name already has an SPF record, you need to update this record (and do not create a
62-
new one).
63+
If the domain name already has an :abbr:`SPF (Sender Policy Framework)` record, the record must be
64+
updated (and do not create a new one).
6365

6466
.. example::
6567

66-
If your TXT record is `v=spf1 include:_spf.google.com ~all`, you need to edit it to add
68+
If the TXT record is `v=spf1 include:_spf.google.com ~all`, edit it to add
6769
`include:_spf.odoo.com`: `v=spf1 include:_spf.odoo.com include:_spf.google.com ~all`
6870

69-
You can check if your SPF record is valid with a free tool like
70-
`MXToolbox SPF <https://mxtoolbox.com/spf.aspx>`_.
71+
Check if the :abbr:`SPF (Sender Policy Framework)` record is valid with a free tool like `MXToolbox
72+
SPF <https://mxtoolbox.com/spf.aspx>`_.
7173

7274
.. _email_communication/DKIM_compliant:
7375

7476
Enable DKIM
7577
===========
7678

77-
The DomainKeys Identified Mail (DKIM) allows you to authenticate your emails with a digital signature.
79+
The DomainKeys Identified Mail (DKIM) allows a user to authenticate emails with a digital
80+
signature.
7881

79-
When sending an email, the Odoo server includes a unique DKIM signature in the headers. The
80-
recipient's server decrypts this signature using the DKIM record in your domain name. If the
81-
signature and the key contained in the record match, this guarantees that your message is authentic
82-
and has not been altered during transport.
82+
When sending an email, the Odoo server includes a unique :abbr:`DKIM (DomainKeys Identified Mail)`
83+
signature in the headers. The recipient's server decrypts this signature using the :abbr:`DKIM
84+
(DomainKeys Identified Mail)` record in the database's domain name. If the signature and the key
85+
contained in the record match, this guarantees that the message is authentic and has not been
86+
altered during transport.
8387

84-
To enable DKIM, you must add a CNAME record to the DNS zone of your domain name:
88+
To enable :abbr:`DKIM (DomainKeys Identified Mail)`, add a :abbr:`CNAME (Canonical Name)` record to
89+
the :abbr:`DNS (Domain Name System)` zone of the domain name:
8590

86-
``odoo._domainkey IN CNAME odoo._domainkey.odoo.com.``
91+
`odoo._domainkey IN CNAME odoo._domainkey.odoo.com.`
8792

8893
.. tip::
89-
If your domain name is `mycompany.com`, you need to create a subdomain
94+
If the domain name is `mycompany.com`, make sure to create a subdomain
9095
`odoo._domainkey.mycompany.com` whose canonical name is `odoo._domainkey.odoo.com.`.
9196

92-
How to create or modify a CNAME record depends on the provider hosting the DNS zone of your domain
93-
name. The most common providers are list below.
97+
The way to create or modify a :abbr:`CNAME (Canonical Name)` record depends on the provider hosting
98+
the :abbr:`DNS (Domain Name System)` zone of the domain name. The most common providers are
99+
:ref:`listed below <email_communication/SPFDKIM_common_providers>`.
94100

95-
You can check if your DKIM record is valid with a free tool like
96-
`DKIM Core <https://dkimcore.org/tools/>`_. If a selector is asked, enter `odoo`.
101+
Check if the :abbr:`DKIM (DomainKeys Identified Mail)` record is valid with a free tool like `DKIM
102+
Core <https://dkimcore.org/tools/>`_. If a selector is asked, enter `odoo`.
97103

98-
Check your DMARC policy
99-
=======================
104+
Check the DMARC policy
105+
======================
106+
107+
The Domain-based Message Authentication, Reporting, & Conformance (DMARC) record is a protocol that
108+
unifies :abbr:`SPF (Sender Policy Framework)` and :abbr:`DKIM (DomainKeys Identified Mail)`. The
109+
instructions contained in the :abbr:`DMARC (Domain-based Message Authentication, Reporting, &
110+
Conformance)` record of a domain name tell the destination server what to do with an incoming email
111+
that fails the :abbr:`SPF (Sender Policy Framework)` and/or :abbr:`DKIM (DomainKeys Identified
112+
Mail)` check.
100113

101-
The Domain-based Message Authentication, Reporting & Conformance (DMARC) is a protocol that unifies SPF
102-
and DKIM. The instructions contained in the DMARC record of a domain name tell the destination
103-
server what to do with an incoming email that fails the SPF and/or DKIM check.
114+
There are three :abbr:`DMARC (Domain-based Message Authentication, Reporting, & Conformance)`
115+
policies:
104116

105-
There are three DMARC policies:
106-
- ``p=none``
107-
- ``p=quarantine``
108-
- ``p=reject``
117+
- `p=none`
118+
- `p=quarantine`
119+
- `p=reject`
109120

110-
``p=quarantine`` and ``p=reject`` instruct the server that receives an email to quarantine that
111-
email or ignore it if the SPF and/or DKIM check fails.
121+
`p=quarantine` and `p=reject` instruct the server that receives an email to quarantine that email
122+
or ignore it if the :abbr:`SPF (Sender Policy Framework)` and/or :abbr:`DKIM (DomainKeys Identified
123+
Mail)` check fails.
112124

113-
If your domain name uses DMARC and has defined one of these policies, it is therefore imperative
114-
to be SPF compliant or to enable DKIM.
125+
If the domain name uses :abbr:`DMARC (Domain-based Message Authentication, Reporting, &
126+
Conformance)` and has defined one of these policies, the domain must be :abbr:`SPF (Sender Policy
127+
Framework)` compliant or enable :abbr:`DKIM (DomainKeys Identified Mail)`.
115128

116129
.. danger::
117-
Yahoo or AOL are examples of email providers with a DMARC policy set to ``p=reject``. We
118-
strongly advise against using an *@yahoo.com* or *@aol.com* address for your users. These emails
119-
will never reach their recipient.
130+
Yahoo or AOL are examples of email providers with a :abbr:`DMARC (Domain-based Message
131+
Authentication, Reporting, & Conformance)` policy set to `p=reject`. Odoo strongly advises
132+
against using an *@yahoo.com* or *@aol.com* address for the database users. These emails will
133+
never reach their recipient.
120134

121-
``p=none`` is used for the domain owner to receive reports about entities using their domain. It
122-
should not impact the deliverability if the DMARC check fails.
135+
`p=none` is used for the domain owner to receive reports about entities using their domain. It
136+
should not impact the deliverability if the :abbr:`DMARC (Domain-based Message Authentication,
137+
Reporting, & Conformance)` check fails.
123138

124-
You can check the DMARC record of a domain name with a tool like
125-
`MXToolbox DMARC <https://mxtoolbox.com/DMARC.aspx>`_.
139+
Check the :abbr:`DMARC (Domain-based Message Authentication, Reporting, & Conformance)` record of a
140+
domain name with a tool like `MXToolbox DMARC <https://mxtoolbox.com/DMARC.aspx>`_.
126141

127-
If one of your partners, customer or vendor, uses DMARC and has defined one of these policies, the
128-
Odoo server cannot relay emails from this partner to your users.
142+
If a partner, customer, or vendor, uses :abbr:`DMARC (Domain-based Message Authentication,
143+
Reporting, & Conformance)` and has defined one of these policies, the Odoo server cannot relay
144+
emails from this partner to the database users.
129145

130-
You need to :ref:`handle user notifications in Odoo <discuss_app/notification_preferences>`, or replace the
131-
email address of the partner with a default email address.
146+
To solve this issue, :ref:`handle user notifications in Odoo
147+
<discuss_app/notification_preferences>`, or replace the email address of the partner with a default
148+
email address.
132149

133150
.. _email_communication/SPFDKIM_common_providers:
134151

@@ -140,24 +157,36 @@ SPF, DKIM & DMARC documentation of common providers
140157
- `GoDaddy TXT record <https://www.godaddy.com/help/add-a-txt-record-19232>`_
141158
- `GoDaddy SPF <https://www.godaddy.com/help/add-an-spf-record-19218>`_
142159
- `GoDaddy DKIM <https://www.godaddy.com/help/add-a-cname-record-19236>`_
143-
- `NameCheap <https://www.namecheap.com/support/knowledgebase/article.aspx/317/2237/how-do-i-add-txtspfdkimdmarc-records-for-my-domain/>`_
160+
- `NameCheap <https://www.namecheap.com/support/knowledgebase/article.aspx/317/2237/how-do-i-add-
161+
txtspfdkimdmarc-records-for-my-domain/>`_
144162
- `CloudFlare DNS <https://support.cloudflare.com/hc/en-us/articles/360019093151>`_
145163
- `Google Domains <https://support.google.com/domains/answer/3290350?hl=en>`_
146164
- `Azure DNS <https://docs.microsoft.com/en-us/azure/dns/dns-getstarted-portal>`_
147165

148-
To fully test your configuration, the tool `Mail-Tester <https://www.mail-tester.com/>`_ will give
149-
you a full overview of the content and configuration you have in one email sent! Mail-Tester can
150-
also be used for other lesser known providers.
166+
To fully test the configuration, use the `Mail-Tester <https://www.mail-tester.com/>`_ tool, which
167+
gives a full overview of the content and configuration in one sent email. Mail-Tester can also be
168+
used for other, lesser-known providers.
151169

152170
Use a default email address
153171
===========================
154172

155-
To force the email address from which emails are sent, you need to create the following key in
156-
the System Parameters of the database:
173+
Access the :guilabel:`System Parameters` by activating :ref:`developer mode <developer-mode>` and
174+
going to :menuselection:`Settings --> Technical --> Parameters --> System Parameters` menu.
175+
176+
To force the email address from which emails are sent, a combination of the following keys needs to
177+
be set in the system parameters of the database:
178+
179+
- `mail.default.from`: accepts the local part or a complete email address as value
180+
- `mail.default.from_filter`: accepts a domain name or a full email address as value
181+
182+
.. note::
183+
The `mail.default.from_filter` works only for `odoo-bin` configurations, otherwise this
184+
parameter can be set using the `from_filter` field on `ir.mail_server`.
157185

158-
- If ``mail.default.from`` is set, and contains a full email address, all outgoing emails are sent
159-
from the given address. This is a requirement to use `Outlook with Odoo
160-
<https://docs.microsoft.com/en-us/exchange/mail-flow-best-practices/how-to-set-up-a-multifunction-device-or-application-to-send-email-using-microsoft-365-or-office-365#option-1-authenticate-your-device-or-application-directly-with-a-microsoft-365-or-office-365-mailbox-and-send-mail-using-smtp-auth-client-submission>`_.
186+
If the email address of the author does not match `mail.default.from_filter`, the email address is
187+
replaced by `mail.default.from` (if it contains a full email address) or a combination of
188+
`mail.default.from` and `mail.catchall.domain`.
161189

162-
You access the **System Parameters** in :ref:`developer mode <developer-mode>` in the :menuselection:`Settings -->
163-
Technical --> Parameters --> System Parameters` menu.
190+
If the `from_filter` contains a full email address, and if the `mail.default.from` is the same as
191+
this address, then all of the email addresses that are different from `mail.default.from` will be
192+
encapsulated in `mail.default.from`.

0 commit comments

Comments
 (0)