When Django's mail subsystem generates an email, it creates a unique Message-ID. This is a requirement specified in
RFC2822.
The domain part of that Message-ID is generated by the Python network utilities. It defacto is the domain name determined by a reverse DNS lookup.
This can cause some problems:
- Django web services often run on private networks and its DNS resolution could make that name quite common, such as 1.0.0.10.in-addr.arpa. This reduces the entropy to the generated Message-IDs.
- It may expose some details of the internal network setup. Not every sysadmin wants that.
Current state
The Message-ID is generated by:
django.core.mail.message.EmailMessage.message()
Currently there is no way to configure the domain part inside this method.
Proposed state
Therefore I would suggest to add a new configuration directive to Django, say EMAIL_MESSAGEID_FQDN. Another possibility would be to allow to replace the hard-coded Message-ID generator email.utils.make_msgid() with a self-written callable.