Inhaltsverzeichnis
GitLab ArchLinux - E-Mail-Konfiguration
GitLab ist ein, in der Community Edition unter einer MIT-Lizenz zur Verfügung gestelltes System, zur Verwaltung von Git-Repositorys im Browser, was den unentgeltlichen Betrieb auf einem eigenen Server ermöglicht.
Beschreibung | Externer Link |
---|---|
Homepage | https://gitlab.com/ |
Dokumentation | https://docs.gitlab.com/ |
Versionsvergleich | https://about.gitlab.com/install/ce-or-ee/ |
Installation | https://wiki.archlinux.org/title/PostgreSQL https://wiki.archlinux.org/title/Redis https://wiki.archlinux.org/title/GitLab |
E-Mail-Dokumentation | https://docs.gitlab.com/ee/install/installation.html#mail-server https://api.rubyonrails.org/classes/ActionMailer/Base.html https://docs.gitlab.com/ee/administration/raketasks/smtp.html#secrets |
Ab hier werden root
-Rechte zur Ausführung der nachfolgenden Befehle benötigt. Um der Benutzer root
zu werden, geben Sie bitte nachfolgenden Befehl ein:
$ su - Password:
Voraussetzungen
Als Voraussetzung für die hier, nachfolgend dargestellte LDAP-Konfiguration von GitLab Version 16.x ist:
- Lauffähige Installation von GitLab
- Siehe auch den internen Link: GitLab ArchLinux
Gitlab: Konfiguration
Nachfolgende Konfigurationen ermöglichen die Nutzung eines SMTP-e-Mail-Servers zur Zustellung von e-Mails in Verbindung mit Gitlab.
Nachfolgendes Schaubild soll verdeutlichen, wie der e-Mail-Versand, hier durchgeführt werden soll:
+============================+ +==================+ +------------------+ +---------------------+ | Gitlab: | | Postfix: (lokal) | | Postfix: (relay) | | Internet: (E-Mail) | | E-Mail wird lokal erstellt | -> | relay der E-Mail | -> | sende die E-Mail | -> | empfängt die E-Mail | | https//gitlab.tachtler.net | | 127.0.0.1:25 | | mx1.tachtler.net | | im Postfach | +============================+ +==================+ +------------------+ +---------------------+
Die Konfiguration soll demnach so gestaltet werden, dass Gitlab die e-Mail nur an den lokal laufenden Postfix via SMTP abgibt und dieser dann für die weitere Zustellung verantwortlich ist.
/etc/webapps/gitlab/gitlab.yml
Die Konfigurationsdatei /etc/webapps/gitlab/gitlab.yml
ist die Haupt-Konfigurationsdatei von GitLab.
Nachfolgende Einstellungen sind für einen Betrieb mit der Möglichkeit E-Mails zu versenden erforderlich und sind im Bereich:
# # 1. GitLab app settings # ========================== ## GitLab settings gitlab:
durchzuführen:
# Tachtler # default: email_from: example@example.com email_from: gitlab@tachtler.net
Definition der absendenden E-Mail-Adresse.
# Tachtler # default: email_display_name: GitLab email_display_name: gitlab.tachtler.net
Definition des angezeigten Namens vor der E-Mail-Adresse.
# Tachtler # default: email_reply_to: noreply@example.com email_reply_to: noreply+gitlab@tachtler.net
Definition der Antwort E-Mail-Adresse. (Welche jedoch hier nicht genutzt werden soll!)
# Tachtler # default: email_subject_suffix: '' email_subject_suffix: 'GitLab - '
Definition der Voranstellung im Betreffs E-Mail.
/etc/webapps/gitlab/smtp_settings.rb
Die Konfigurationsdatei /etc/webapps/gitlab/smtp_settings.rb
ist die SMTP-Konfigurationsdatei von GitLab.
Nachfolgende Einstellungen sind für einen Betrieb mit der Authentifizierungsmethode SMTP erforderlich und wie folgt durchzuführen:
# Tachtler # default: address: "email.server.com", address: "localhost",
Setzen der Adresse oder auch FQDN des lokalen E-Mail-Servers.
# Tachtler # default: port: 465, port: 25,
Setzen des Ports des lokalen E-Mail-Servers.
# Tachtler # default: user_name: "smtp", # user_name: "smtp",
Deaktivieren der Authentifizierung mittels Benutzername.
# Tachtler # default: password: "123456", # password: "123456",
Deaktivieren der Authentifizierung mittels Passworts.
# Tachtler # default: domain: "gitlab.company.com", # domain: "gitlab.company.com",
Deaktivieren der Meldung beim (E)SMTP-Dialog mit dem E-Mail-Server mittels HELO/EHLO Namen.
# Tachtler # default: authentication: :login, # authentication: :login,
Deaktivieren der Authentifizierung im allgemeinen bei Verwendung eines lokalen E-Mail-Servers.
# Tachtler # default: enable_starttls_auto: true, enable_starttls_auto: false
Deaktivieren von STARTTLS beim Verbindungsaufbau zum lokalen E-Mail-Server.
# Tachtler # default: openssl_verify_mode: 'peer' # See ActionMailer documentation for other possible options # openssl_verify_mode: 'peer' # See ActionMailer documentation for other possible options
Deaktivieren der Verifikation des Server-Zertifikats beim Verbindungsaufbau zum lokalen E-Mail-Server.
GitLab: Dienste/Daemons stoppen
Nachdem GitLab wahrscheinlich bereits lauffähig gestartet wurde, ist es erforderlich GitLab zu stoppen.
Da ein systemd-Target - hier in diesem Fall gitlab.target
nicht einfach gestoppt werden kann, ist es sinnvoll sich den Inhalt von gitlab.target
mit nachfolgendem Befehl anzeigen zu lassen:
# systemctl cat gitlab.target # /usr/lib/systemd/system/gitlab.target [Unit] Description=GitLab - Self Hosted Git Management Requires=gitlab-puma.service gitlab-workhorse.service Wants=gitlab-sidekiq.service gitlab-backup.timer gitlab-gitaly.service gitlab-mailroom.service [Install] WantedBy=multi-user.target
Hier sind alle Dienste/Daemons welche ebenfalls mittels systemd gestartet werden aus dem gitlab.target
in den Bereichen
Requires
Wants
aufgelistet
Diese können dann mit nachfolgendem Befehl gestoppt werden:
# systemctl stop gitlab-puma.service gitlab-workhorse.service gitlab-sidekiq.service gitlab-backup.timer gitlab-gitaly.service gitlab-mailroom.service
GitLab: Dienste/Daemons starten
Mit nachfolgendem Befehl wird GitLab wieder gestartet.
Dieser systemd-Start beinhaltet auch den Start alle anderen benötigten Komponenten bzw. Dienste/Daemons von GitLab.
# systemctl start gitlab.target
Eine Überprüfung, ob der Start des Ziel/Target erfolgreich war, kann mit nachfolgendem Befehl überprüft werden:
● gitlab.target - GitLab - Self Hosted Git Management Loaded: loaded (/usr/lib/systemd/system/gitlab.target; enabled; preset: disabled) Active: active since Fri 2024-05-30 06:07:15 CET; 30min ago Mar 22 06:07:15 server systemd[1]: Reached target GitLab - Self Hosted Git Management.
GitLab: E-Mail Überprüfung
Nach erfolgreichem Start von GitLab kann mit nachfolgendem Befehl überprüft werden, ob die E-Mail/SMTP-Konfiguration erfolgreich war.
Mit dem nachfolgendem Befehl muss zuerst in das Verzeichnis /usr/share/webapps/gitlab
gewechselt werden:
# cd /usr/share/webapps/gitlab
Der nachfolgende Befehl, führt in die rails console von GitLab: ( Der Aufruf kann erwartungsgemäss ein wenig länger dauern!)
# sudo -u gitlab $(cat environment | xargs) bundle exec rails console -e production -------------------------------------------------------------------------------- Ruby: ruby 3.0.6p216 (2023-03-30 revision 23a532679b) [x86_64-linux] GitLab: 17.0.1 (bd824d1abb2) FOSS GitLab Shell: 14.35.0 PostgreSQL: 16.2 ------------------------------------------------------------[ booted in 32.86s ] Loading production environment (Rails 7.0.8.1) irb(main):001:0>
Anschliessend kann mit nachfolgendem Befehl eine Test-Notifikation aus GitLab heraus via E-Mail versendet werden:
Notify.test_email('klaus@tachtler.net', 'Test Message Subject', 'Test Message Body').deliver_now
irb(main):001:0> Notify.test_email('klaus@tachtler.net', 'Test Message Subject', 'Test Message Body').deliver_now Delivered mail 665825e09cdb3_243c2f086254b@vml200.mail (217.7ms) => #<Mail::Message:404880, Multipart: false, Headers: <Date: Thu, 30 May 2024 09:08:16 +0200>, <From: "gitlab.tachtler.net" <gitlab@tachtler.net>>, <Reply-To: "gitlab.tachtler.net" <noreply+gitlab@tachtler.net>>, <To: klaus@tachtler.net>, <Message-ID: <665825e09cdb3_243c2f086254b@vml200.mail>>, <Subject: Test Message Subject>, <Mime-Version: 1.0>, <Content-Type: text/html; charset=UTF-8>, <Content-Transfer-Encoding: 7bit>, <Auto-Submitted: auto- generated>, <X-Auto-Response-Suppress: All>>
Der nachfolgende Befehl, beendet die rails console von GitLab
quit
irb(main):002:0> quit
HINWEIS - Wie in der oben gezeigten Konstellation, kann auch die e-Mail Zustellung an Postfix via SMTP auf localhost.localdomain
erfolgen, was nachfolgend gezeigter E-Mail-Header zeigt, anstelle die e-Mails direkt an einen weiteren (zentralen) e-Mail-SMTP-Server zuzustellen!
Die E-Mails haben dann z.B. im Header
der E-Mail als erste Received
Station folgende Angabe (smtpd
):
(Nur relevanter Ausschnitt)
... Received: from localhost.localdomain (localhost.localdomain [IPv6:::1]) by gitlab.tachtler.net (Postfix) with ESMTP id C370988 for <klaus@tachtler.net>; Thu, 30 May 2024 09:08:16 +0200 (CEST) ...