diff --git a/addons/crm/models/crm_lead.py b/addons/crm/models/crm_lead.py
index 210029dbbdd0a5fd461ae339442cf06a2430b23e..693b67ff751ebadfafba5864c0496f1ec8648db5 100644
--- a/addons/crm/models/crm_lead.py
+++ b/addons/crm/models/crm_lead.py
@@ -8,6 +8,7 @@ from datetime import date, datetime, timedelta
 from psycopg2 import sql
 
 from odoo import api, fields, models, tools, SUPERUSER_ID
+from odoo.addons.mail.tools import mail_validation
 from odoo.addons.phone_validation.tools import phone_validation
 from odoo.exceptions import UserError, AccessError
 from odoo.osv import expression
@@ -18,6 +19,8 @@ from . import crm_stage
 
 _logger = logging.getLogger(__name__)
 
+
+
 CRM_LEAD_FIELDS_TO_MERGE = [
     # UTM mixin
     'campaign_id',
@@ -451,7 +454,7 @@ class Lead(models.Model):
             if lead.email_from:
                 email_state = 'incorrect'
                 for email in email_split(lead.email_from):
-                    if tools.email_normalize(email):
+                    if mail_validation.mail_validate(email):
                         email_state = 'correct'
                         break
             lead.email_state = email_state
diff --git a/addons/mail/__init__.py b/addons/mail/__init__.py
index f2cd96d8c832a480f86ac4028ba9594e1037257a..2334d4398bec08bf329150016d031f422f2218f0 100644
--- a/addons/mail/__init__.py
+++ b/addons/mail/__init__.py
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-
 from . import models
+from . import tools
 from . import wizard
 from . import controllers
diff --git a/addons/mail/tools/__init__.py b/addons/mail/tools/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..b9c73282748e4d1aec5a009fa0b04d8ea2c256a5
--- /dev/null
+++ b/addons/mail/tools/__init__.py
@@ -0,0 +1,4 @@
+# -*- coding: utf-8 -*-
+# Part of Odoo. See LICENSE file for full copyright and licensing details.
+
+from . import mail_validation
diff --git a/addons/mail/tools/mail_validation.py b/addons/mail/tools/mail_validation.py
new file mode 100644
index 0000000000000000000000000000000000000000..937bdcd262e101fc3faa0db7cc9b173b2fd2ed86
--- /dev/null
+++ b/addons/mail/tools/mail_validation.py
@@ -0,0 +1,27 @@
+# -*- coding: utf-8 -*-
+# Part of Odoo. See LICENSE file for full copyright and licensing details.
+import logging
+
+from odoo import tools
+
+_logger = logging.getLogger(__name__)
+
+_flanker_lib_warning = False
+
+try:
+    from flanker.addresslib import address
+    # Avoid warning each time a mx server is not reachable by flanker
+    logging.getLogger("flanker.addresslib.validate").setLevel(logging.ERROR)
+
+    def mail_validate(email):
+        return bool(address.validate_address(email))
+
+except ImportError:
+
+    def mail_validate(email):
+        global _flanker_lib_warning
+        if not _flanker_lib_warning:
+            _flanker_lib_warning = True
+            _logger.info("The `flanker` Python module is not installed,"
+                           "so email validation fallback to email_normalize. Use 'pip install flanker' to install it")
+        return tools.email_normalize(email)