diff --git a/app/mailers/emails/issues.rb b/app/mailers/emails/issues.rb
index d684e3544529aebb76fbfb870298bf3a11da6299..a096df9dc0de3e9ac5befabfe186e610a568f6f3 100644
--- a/app/mailers/emails/issues.rb
+++ b/app/mailers/emails/issues.rb
@@ -4,6 +4,7 @@ module Emails
       @issue = Issue.find(issue_id)
       @project = @issue.project
       @target_url = project_issue_url(@project, @issue)
+      set_message_id("issue_#{issue_id}")
       mail(from: sender(@issue.author_id),
            to: recipient(recipient_id),
            subject: subject("#{@issue.title} (##{@issue.iid})"))
@@ -14,6 +15,7 @@ module Emails
       @previous_assignee = User.find_by(id: previous_assignee_id) if previous_assignee_id
       @project = @issue.project
       @target_url = project_issue_url(@project, @issue)
+      set_reference("issue_#{issue_id}")
       mail(from: sender(updated_by_user_id),
            to: recipient(recipient_id),
            subject: subject("#{@issue.title} (##{@issue.iid})"))
@@ -24,6 +26,7 @@ module Emails
       @project = @issue.project
       @updated_by = User.find updated_by_user_id
       @target_url = project_issue_url(@project, @issue)
+      set_reference("issue_#{issue_id}")
       mail(from: sender(updated_by_user_id),
            to: recipient(recipient_id),
            subject: subject("#{@issue.title} (##{@issue.iid})"))
@@ -35,6 +38,7 @@ module Emails
       @project = @issue.project
       @updated_by = User.find updated_by_user_id
       @target_url = project_issue_url(@project, @issue)
+      set_reference("issue_#{issue_id}")
       mail(from: sender(updated_by_user_id),
            to: recipient(recipient_id),
            subject: subject("#{@issue.title} (##{@issue.iid})"))
diff --git a/app/mailers/emails/merge_requests.rb b/app/mailers/emails/merge_requests.rb
index a97d55f1b505040b84b1fc47fab8ff4e3ee52710..994ce692a0ff75b24e4aeca8602a6b6c7934da52 100644
--- a/app/mailers/emails/merge_requests.rb
+++ b/app/mailers/emails/merge_requests.rb
@@ -4,6 +4,7 @@ module Emails
       @merge_request = MergeRequest.find(merge_request_id)
       @project = @merge_request.project
       @target_url = project_merge_request_url(@project, @merge_request)
+      set_message_id("merge_request_#{merge_request_id}")
       mail(from: sender(@merge_request.author_id),
            to: recipient(recipient_id),
            subject: subject("#{@merge_request.title} (!#{@merge_request.iid})"))
@@ -14,6 +15,7 @@ module Emails
       @previous_assignee = User.find_by(id: previous_assignee_id) if previous_assignee_id
       @project = @merge_request.project
       @target_url = project_merge_request_url(@project, @merge_request)
+      set_reference("merge_request_#{merge_request_id}")
       mail(from: sender(updated_by_user_id),
            to: recipient(recipient_id),
            subject: subject("#{@merge_request.title} (!#{@merge_request.iid})"))
@@ -24,6 +26,7 @@ module Emails
       @updated_by = User.find updated_by_user_id
       @project = @merge_request.project
       @target_url = project_merge_request_url(@project, @merge_request)
+      set_reference("merge_request_#{merge_request_id}")
       mail(from: sender(updated_by_user_id),
            to: recipient(recipient_id),
            subject: subject("#{@merge_request.title} (!#{@merge_request.iid})"))
@@ -33,6 +36,7 @@ module Emails
       @merge_request = MergeRequest.find(merge_request_id)
       @project = @merge_request.project
       @target_url = project_merge_request_url(@project, @merge_request)
+      set_reference("merge_request_#{merge_request_id}")
       mail(from: sender(updated_by_user_id),
            to: recipient(recipient_id),
            subject: subject("#{@merge_request.title} (!#{@merge_request.iid})"))
diff --git a/app/mailers/emails/notes.rb b/app/mailers/emails/notes.rb
index ccbdadf010ff6cea082318be92d3c08c7f00caea..43858ea0245583a0d49b69e898a0d1ddc65b9681 100644
--- a/app/mailers/emails/notes.rb
+++ b/app/mailers/emails/notes.rb
@@ -15,6 +15,7 @@ module Emails
       @issue = @note.noteable
       @project = @note.project
       @target_url = project_issue_url(@project, @issue, anchor: "note_#{@note.id}")
+      set_reference("issue_#{@issue.iid}")
       mail(from: sender(@note.author_id),
            to: recipient(recipient_id),
            subject: subject("#{@issue.title} (##{@issue.iid})"))
@@ -25,6 +26,7 @@ module Emails
       @merge_request = @note.noteable
       @project = @note.project
       @target_url = project_merge_request_url(@project, @merge_request, anchor: "note_#{@note.id}")
+      set_reference("merge_request_#{@merge_request.iid}")
       mail(from: sender(@note.author_id),
            to: recipient(recipient_id),
            subject: subject("#{@merge_request.title} (!#{@merge_request.iid})"))
diff --git a/app/mailers/notify.rb b/app/mailers/notify.rb
index 554f53cf1487606c776113895f10a14bc364a2ea..84a0da0129db0c8c49d1db9a31e1eca95d2856dc 100644
--- a/app/mailers/notify.rb
+++ b/app/mailers/notify.rb
@@ -53,6 +53,22 @@ class Notify < ActionMailer::Base
     end
   end
 
+  # Set the Message-ID header field
+  #
+  # local_part - The local part of the message ID
+  #
+  def set_message_id(local_part)
+    headers["Message-ID"] = "<#{local_part}@#{Gitlab.config.gitlab.host}>"
+  end
+
+  # Set the References header field
+  #
+  # local_part - The local part of the referenced message ID
+  #
+  def set_reference(local_part)
+    headers["References"] = "<#{local_part}@#{Gitlab.config.gitlab.host}>"
+  end
+
   # Formats arguments into a String suitable for use as an email subject
   #
   # extra - Extra Strings to be inserted into the subject