GitLab eingehende E-Mails konfigurieren

In vielen DevOps-Workflows ist die Integration von E-Mail-Systemen ein essenzieller Bestandteil der automatisierten Kommunikation. GitLab bietet die Möglichkeit, eingehende E-Mails zu verarbeiten – etwa zum Erstellen von Issues oder Kommentaren direkt per E-Mail. Dies kann besonders in Umgebungen mit hoher Automatisierung oder bei der Integration bestehender Support-Systeme sinnvoll sein.

Voraussetzungen

  • GitLab Server
  • E-Mail-Subadresse (empfohlen) oder Catch-all-Postfach
  • Optional: Geschützte Domain (creoline E-Mail-Protection)



E-Mail-Subaddressing

E-Mail-Subaddressing erlaubt es, zu einer bestehenden E-Mail-Adresse zusätzliche Kennzeichnungen hinzuzufügen, ohne neue Postfächer anzulegen. Wird E-Mail-Subaddressing unterstützt, können E-Mails für incoming@mail.creoline.de beispielsweise auch über incoming+addon@mail.creoline.de  an diese versendet werden.


Es wird von Anbietern wie Gmail, Google Apps, Yahoo! Mail, Outlook.com und iCloud sowie vom Postfix-Mailserver unterstützt, den Sie vor Ort betreiben können. Microsoft Exchange Server unterstützt keine Unteradressierung und Microsoft Office 365 unterstützt standardmäßig keine Unteradressierung.




Dieser Hilfecenter-Artikel verwendet zur Vereinfachung als Beispiel-Domain mail.creoline-demo.de, welche Sie bei jedem Schritt logischerweise durch Ihre Domain ersetzen müssen.

Sicherheitshinweis zu verwendeter Domain

https://docs.gitlab.com/ee/administration/incoming_email.html#security-concerns

Vorbereitung Ihrer der DNS-Zone

Legen Sie in Ihrer DNS-Zone folgende DNS-Einträge an:

RR-Typ: A
Host: mail
Wert: <Ihre Plesk-Server IPv4>
TTL: 3600
RR-Typ: AAAA
Host: mail
Wert: <Ihre Plesk-Server IPv6>
TTL: 3600
RR-Typ: MX
Host: mail
Wert: mail.creoline-demo.de
TTL: 3600



Vorbereitung E-Mail-Domain (Beispiel: Plesk-Server)


Dieser Hilfecenter-Artikel verwendet zur Vereinfachung als Beispiel-Domain mail.creoline-demo.de, welche Sie bei jedem Schritt logischerweise durch Ihre Domain ersetzen müssen. Als Postfach für die eingehenden E-Mail wird in dieser Anleitung incoming@mail.creoline-demo.de verwendet.


Von der Verwendung der externen Domain, worüber Ihre Web UI aufgerufen wird, ist aus Sicherheitsgründen abzuraten, weswegen ein Subdomain der externen Domain als E-Mail-Domain verwendet werden sollte oder grundsätzlich eine andere.

Web UI Domain Eingehende E-Mail-Domain Sicherheit
creoline-demo.de creoline-demo.de unsicher
creoline-demo.de mail.creoline-demo.de sicher
creoline-demo.de creoline-mailing.de sicher (zwei Domains benötigt)


Plesk Domain anlegen

Legen Sie in Plesk eine Domain an, welche für eingehende E-Mails verwendet werden soll. Praktisch gibt es hier keine Einschränkt, das folgende Beispiel verwendet die Subdomain mail.creoline-demo.de.


Plesk E-Mail-Postfach anlegen

Nachdem Sie Ihre E-Mail Domain erstellt haben, legen Sie ein E-Mail-Postfach an, als Beispiel: incoming.



GitLab Konfigurationsdatei anpassen

Die Anpassungen müssen ausschließlich in der gitlab.rb vorgenommen werden, welche Sie in den Konfigurationsdateien Ihre GitLab-Server finden und bearbeiten können.


Die folgenden Einstellungen müssen in der gitlab.rb angepasst oder auskommentiert werden, wenn eine vollständig eigene Definition erfolgt.

Eingehende E-Mails aktivieren

gitlab_rails['incoming_email_enabled'] = true


Eingehende E-Mail-Adresse festlegen

Der Postfach incoming muss bei Ihrem E-Mail-Anbieter entsprechend angelegt worden sein.

gitlab_rails['incoming_email_address'] = "incoming+%{key}@gitlab.example.com"


Eingehende E-Mail-Adressen E-Mail festlegen

gitlab_rails['incoming_email_email'] = "incoming" # anpassen sofern anderes Postfach verwendet wurde


Sofern Sie hier einen externen E-Mail-Anbieter verwenden, sollte laut GitLab die vollständige E-Mail-Adresse angegeben werden. Bei Self-Hosted E-Mail-Servern ist dies normalerweise ausschließlich der Benutzername. Siehe Kommentar über der Einstellung in der gitlab.rb. Sofern wie hier das Plesk-Beispiel verwendet wird, bleibt es beim einzelnen Benutzernamen ohne E-Mail-Domain.

Eingehendes E-Mail-Adressen Passwort festlegen

gitlab_rails['incoming_email_password'] = "<postfach-passwort>"


Eingehenden E-Mail Port (verschlüsselt, empfohlen)

SSL/TLS

 gitlab_rails['incoming_email_port'] = 993
 gitlab_rails['incoming_email_ssl'] = false
 gitlab_rails['incoming_email_start_tls'] = true 

STARTTLS

 gitlab_rails['incoming_email_port'] = 143
 gitlab_rails['incoming_email_ssl'] = false
 gitlab_rails['incoming_email_start_tls'] = true


Eingehenden E-Mail Port (unverschlüsselt, nicht empfohlen)

Für SSL-Verschlüsselung sollte hier IMAP-Port 993 gewählt werden, ohne Verschlüsselung IMAP-Port 143.

 gitlab_rails['incoming_email_port'] = 143
 gitlab_rails['incoming_email_ssl'] = false
 gitlab_rails['incoming_email_start_tls'] = false 


Vollständiges Beispiel


gitlab_rails['incoming_email_enabled'] = true

# The email address including the %{key} placeholder that will be replaced to reference the
# item being replied to. This %{key} should be included in its entirety within the email
# address and not replaced by another value.
# For example: emailaddress+%{key}@gitlab.example.com.
# The placeholder must appear in the "user" part of the address (before the `@`).
gitlab_rails['incoming_email_address'] = "incoming+%{key}@gitlab.example.com"

# Email account username
# With third party providers, this is usually the full email address.
# With self-hosted email servers, this is usually the user part of the email address.
gitlab_rails['incoming_email_email'] = "incoming"
# Email account password
gitlab_rails['incoming_email_password'] = "<postfach-passwort>"

# IMAP server host
gitlab_rails['incoming_email_host'] = "gitlab.example.com"
# IMAP server port
gitlab_rails['incoming_email_port'] = 993
# Whether the IMAP server uses SSL
gitlab_rails['incoming_email_ssl'] = true
# Whether the IMAP server uses StartTLS
gitlab_rails['incoming_email_start_tls'] = false

# The mailbox where incoming mail will end up. Usually "inbox".
gitlab_rails['incoming_email_mailbox_name'] = "inbox"
# The IDLE command timeout.
gitlab_rails['incoming_email_idle_timeout'] = 60


GitLab rekonfigurieren

sudo gitlab-ctl reconfigure


Eingehende E-Mails testen

sudo gitlab-rake gitlab:incoming_email:check
Checking Incoming Email ...

Incoming Email: ... Checking Reply by email ...

IMAP server credentials are correct? ... Checking incoming@mail.creoline-demo.de
yes
Mailroom enabled? ... skipped
MailRoom running? ... skipped

Checking Reply by email ... Finished

<br>

Checking Incoming Email ... Finished