diff --git a/utils.py b/utils.py
index 5923bd2f109dfe7e0f150c75e71c55fbb29c14db..2154c22ffeb06ff22c1d2ec8489927b0f64047e3 100644
--- a/utils.py
+++ b/utils.py
@@ -7,12 +7,11 @@ import smtplib
 from email.mime.multipart import MIMEMultipart
 from email.mime.text import MIMEText
 from email.mime.application import MIMEApplication
+from email.utils import make_msgid
 from datetime import datetime
 import requests
 from io import BytesIO
 import ipaddress
-from socket import getfqdn
-from uuid import uuid4
 import subprocess
 import contextlib
 
@@ -59,6 +58,8 @@ class MailManager:
         self.password = getattr(config, "MAIL_PASSWORD", "")
         self.use_tls = getattr(config, "MAIL_USE_TLS", True)
         self.use_starttls = getattr(config, "MAIL_USE_STARTTLS", False)
+        # if SERVER_NAME is empty, we already have problems elsewhere
+        self.msgid_domain = getattr(config, "SERVER_NAME")
 
     def _get_smtp(self):
         if self.use_tls:
@@ -88,7 +89,7 @@ class MailManager:
         msg["From"] = self.from_addr
         msg["To"] = to_addr
         msg["Subject"] = subject
-        msg["Message-ID"] = "<{}@{}>".format(uuid4(), getfqdn())
+        msg["Message-ID"] = make_msgid(idstring="proto3", domain=self.msgid_domain)
         if reply_to is not None:
             msg["Reply-To"] = reply_to
         msg.attach(MIMEText(content, _charset="utf-8"))