Microsoft Exchange Online auf Cryptshare-Appliances
Einleitung
Die Cryptshare-Appliance versendet Benachrichtigungs-E-Mails, wenn Updates für die zugrundeliegenden OpenSUSE-Komponenten verfügbar sind. Zu diesem Zweck ist ein lokaler Postfix-Server installiert, der in der Regel vom Cryptshare-Server konfiguriert wird. Dies geschieht jedoch nur automatisch, wenn ein regulärer SMTP-Server als Ziel für den lokalen Postfix verwendet wird. Falls Microsoft Exchange Online zusammen mit der OAuth-2.0-Authentifizierung genutzt wird, muss die Konfiguration von Postfix manuell vorgenommen werden.
Einrichtung
Postfix installieren
-
Laden Sie das Paket
sasl-xoauth2für Ihre Version von openSUSE herunter und laden Sie es auf Ihre virtuelle Maschine hoch.-
OpenSUSE 15.6: Herunterladen
-
OpenSUSE 16.0: Herunterladen
-
-
Installieren Sie Postfix.
zypper install postfix -
Konfigurieren Sie die E-Mail-Domäne.
echo "<your-domain.com>" > /etc/mailname -
Installieren Sie das SASL-XOAUTH2-Paket:
zypper install sasl-xoauth2-0.25-0.x86_64.rpm
Erstellen eines Dummy-Zertifikats für Postfix
Postfix benötigt ein Dummy-Zertifikat für die Verbindung zu Exchange.
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/ssl-cert-snakeoil.key -out /etc/ssl/certs/ssl-cert-snakeoil.pem
Sie können dieses Zertifikat mit beliebigen Dummy-Werten erstellen.
Postfix konfigurieren
Öffnen Sie die Datei /etc/postfix/main.cf
vim /etc/postfix/main.cf
Konfigurieren Sie die Datei main.cf so, dass sie auf die richtige Domäne und die richtigen Hostnamen verweist, z. B.:
myorigin = /etc/mailname
biff = no
append_dot_mydomain = no
delay_warning_time = 0h
# TLS parameters
smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
smtpd_tls_security_level=may
smtp_tls_CApath=/etc/ssl/certs
smtp_always_send_ehlo = yes
smtp_tls_security_level=encrypt
smtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crt
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination
myhostname = <hostname>
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
mydestination = $myhostname, , <hostname>, localhost.localhost, localhost
relayhost = [smtp.office365.com]:587
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
inet_interfaces = all
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
inet_protocols = all
smtp_use_tls = yes
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous
smtp_sasl_tls_security_options =
smtp_sasl_mechanism_filter = xoauth2
smtp_tls_security_level = encrypt
smtp_generic_maps = hash:/etc/postfix/generic
-
Richten Sie die Postfix-Datei generic.de ein
touch /etc/postfix/generic
postmap /etc/postfix/generic
-
Erstellen Sie das Verzeichnis, in dem das OAuth-Token gespeichert wird:
mkdir -p /var/spool/postfix/etc/tokens
-
Setzen Sie die Berechtigungen so, dass Postfix das Token lesen kann:
chown -R postfix:postfix /var/spool/postfix/etc/tokens
-
Starten Sie den Postfix-Dienst neu:
systemctl restart postfix
-
Kopieren Sie die CA-Zertifikate in die chroot-Umgebung (⚠️ diese Datei wird bei jedem Neustart von Postfix gelöscht):
cp /etc/ssl/certs/ca-certificates.crt /var/spool/postfix/etc/ssl/certs/ca-certificates.crt
-
Erstellen Sie die Datei
/etc/postfix/sasl_passwdmit folgendem Inhalt:[smtp.office365.com]:587 <sendermail>:/etc/tokens/<sendermail>
Beispiel:
[smtp.office365.com]:587 john.doe@domain.com:/etc/tokens/john.doe@domain.com
und setzen Sie die Berechtigungen:
chmod 600 /etc/postfix/sasl_passwd
-
Generieren Sie die gehashte SASL-Passwort-Datenbank:
postmap /etc/postfix/sasl_passwd
(Optional) Kopieren des Zertifikats mit systemd automatisieren
Wie wir gesehen haben, löscht der Postfix-Dienst bei jedem Start die
Datei /var/spool/postfix/etc/ssl/certs/ca-certificates.crt.
Anstatt die Datei jedes Mal manuell zu kopieren, können Sie den systemd
-Dienst so bearbeiten, dass dies automatisch beim Start erfolgt.
-
Bearbeiten Sie die Override-Konfiguration von
postfix.service:
root@host:~# systemctl edit postfix.service
-
Fügen Sie den folgenden Override hinzu, um das Zertifikat nach dem Start von Postfix zu kopieren:
### Bearbeiten /etc/systemd/system/postfix.service.d/override.conf ### Alles zwischen dieser Stelle und dem folgenden Kommentar wird zum neuen Inhalt der Datei [Service] ExecStart=/usr/bin/cp /etc/ssl/certs/ca-certificates.crt /var/spool/postfix/etc/ssl/certs/ca-certificates.crt ### Zeilen unterhalb dieses Kommentars werden ignoriert ### /lib/systemd/system/postfix.service # [Unit] # Description=Postfix Mail Transport Agent # Documentation=man:postfix(1) # Conflicts=sendmail.service exim4.service # ConditionPathExists=/etc/postfix/main.cf # [Service] # Type=oneshot # RemainAfterExit=yes # ExecStart=/bin/true # ExecReload=/bin/true # [Install] # WantedBy=multi-user.target
Note: Vergessen Sie nicht, nach der Bearbeitung den Befehl
systemctl daemon-reload auszuführen, falls dies nicht
automatisch geschieht.
OAuth-Token generieren
-
Bearbeiten Sie die Datei
/etc/sasl-xoauth2.confmit den folgenden Parametern:-
client_id: Anwendungs- (Client-)ID -
client_secret: Lassen Sie dieses Feld leer -
<TENANT_ID>: Tenant-ID -
log_full_trace_on_failure: (Optional) detaillierte Protokollierung bei Fehlern aktivieren -
log_to_syslog_on_failure: (Optional) Fehler in syslog protokollieren
-
Hier ist ein Beispiel für eine Konfiguration der Datei /etc/sasl-xoauth2.conf
mit Ihren Anwendungs- und Tenant-IDs:
{
„client_id“: „<CLIENT_ID>“,
„client_secret“: „“,
„log_full_trace_on_failure“: „yes“,
„log_to_syslog_on_failure“: „no“,
‚token_endpoint‘:„https://login.microsoftonline.com/<TENANT_ID>/oauth2/v2.0/token“
}
„client_id“: „2105063f-f128-4060-96fc-18d5de605999“, „client_secret“: „“, ‚log_full_trace_on_failure‘: „yes“, „log_to_syslog_on_failure“: „no“, ‚token_endpoint‘: „https://login.microsoftonline.com/365a21da-ebd9-4e7a-af3a-95844dfa91bb/oauth2/v2.0/token“
-
Generieren Sie das OAuth-Token mit dem folgenden Befehl:
-
postfix@std.rocks: Outlook 365-Konto -
--client-id: Anwendungs-ID -
--tenant: Tenant-ID
-
root@host:~# sasl-xoauth2-tool get-token outlook
/var/spool/postfix/etc/tokens/postfix@std.rocks
--client-id=„<CLIENT_ID>“ --use-device-flow
--tenant=„<TENANT_ID>“ Der Befehl fordert Sie auf,
sich über den Browser zu authentifizieren. Es wird eine Meldung wie diese angezeigt: Um
sich anzumelden, öffnen Sie die Seite
<nowiki>https://microsoft.com/devicelogin</nowiki> in einem Webbrowser und geben Sie den Code
XXXXXXXXX ein, um sich zu authentifizieren.
-
Befolgen Sie die Anweisungen: Öffnen Sie <nowiki>https://microsoft.com/devicelogin</nowiki> in Ihrem Browser und geben Sie den angegebenen Code ein. Melden Sie sich mit dem dafür vorgesehenen Postfix-Konto an. Ein Administrator muss die Berechtigungsanfrage genehmigen. (⚠️Stellen Sie sicher, dass Sie sich mit Ihrem Office 365 Postfix-Konto anmelden, da Sie sonst mit dem Token, das Sie erhalten, keine E-Mails versenden können.⚠️)
-
Wenn alles erfolgreich verläuft, gibt das Tool Folgendes zurück:
Token erhalten.-
Sie sollten nun eine Token-Datei sehen, die im konfigurierten Verzeichnis erstellt wurde:
root@host:~# ls -lh /var/spool/postfix/etc/tokens/``total 4,0K-rw-r—r-- 1 root root 3,5K 13. Juli 15:31 <sendermail> -
Testen Sie Ihre OAuth-Token-Datei mit der Option
test-token-refresh:root@host:~# sasl-xoauth2-tool test-token-refresh /var/spool/postfix/etc/tokens/<sendermail> -
Wenn das Token gültig und aktualisierbar ist, gibt das Tool Folgendes zurück:
Konfigurationsprüfung bestanden.``Token-Aktualisierung erfolgreich.
-
Testen und Debuggen
Testen des E-Mail-Relays mit sendmail
Ihr Relay sollte nun betriebsbereit sein. Um die Konfiguration vom Relay-
Host aus zu testen, können Sie den Befehl sendmail direkt vom
Terminal aus verwenden.
-
Erstellen Sie eine Testnachrichtendatei:
From: <Absender-E-Mail>To:
<Empfänger-E-Mail>Subject: Testnachricht
Funktioniert es?
-
Senden Sie die E-Mail mit
sendmail:root@host:~# cat /tmp/test.txt | sendmail -F <Absender-E-Mail> <Empfänger-E-Mail>