====== Mailing in Nextcloud ====== ===== Mailparameter überprüfen ===== **für Docker** docker compose exec -u www-data app php occ config:list system --private | grep -E 'mail_smtpmode|mail_smtpauth|mail_smtpname|mail_smtphost|mail_smtpport|mail_smtpsecure|mail_from_address|mail_domain|mail_sendmailmode' Nestcloud liefert im config Ordner eine smtp.config.php aus, die möglicherweise deine in docker.compose.yml bzw in den secrets deine Anmeldung überschreibt.\\ Ich habe sie vorsichtshalber umbenannt, damit sie nicht wirksam wird. ===== 2FA Ablauf über E-Mail ===== Das Mail wird über das Systemkonto an die primäre Benutzeradresse geschixckt. Dafür muss Nextcloud eine funktionierende Mailserver-Konfiguration haben. Für den **Two-Factor email provider** steht ausdrücklich, dass der Code an die primäre E-Mail-Adresse des Benutzers gesendet wird und dass Nextcloud dafür einen funktionierenden E-Mail-Server konfiguriert haben muss.\\ Wenn man 2FA zuverlässig betreiben will, ist es für den produktiven Betriebn sinnvoller, eine **TOTP + Backup-Codes** zu empfehlen. **2FA per E-Mail** ist besser als gar kein 2FA, aber schwächer als TOTP, weil Mailzugang und Nextcloud-Zugang oft miteinander verknüpft sind. ==== Probleme beim Versand ==== Wenn **2FA per E-Mail bei manchen Adressen funktioniert und bei anderen nicht**, ist die Nextcloud-SMTP-Grundkonfiguration sehr wahrscheinlich **grundsätzlich in Ordnung**. Der Fehler liegt dann meistens bei **Benutzer-E-Mailadresse, Empfängerdomain, Spam/DMARC/SPF oder SMTP-Relay-Regeln**. Der 2FA-E-Mail-Provider sendet den Code an die **primäre E-Mail-Adresse des Benutzers**; zusätzlich muss Nextcloud einen funktionierenden Mailserver konfiguriert haben. Nextcloud selbst benötigt für ausgehende Mails ein funktionierendes SMTP-/Sendmail-Setup; die Admin-Grundeinstellungen schreiben diese Werte in die ''config.php''.\\ Wenn manche Adressen funktionieren, andere nicht: **mögliche Ursachen** 1. Falsche oder fehlende primäre E-Mail-Adresse beim Benutzer\\ 2. Empfänger-Mailserver blockiert die Nachricht\\ 3. Wenn **einige 2FA-Mails ankommen**, dann ist deine Nextcloud-Mailkonfiguration nicht grundsätzlich kaputt. Am wahrscheinlichsten ist:\\ - betroffene Benutzeradresse falsch / nicht primär / nicht erreichbar\\ - Empfängerdomain blockiert oder verzögert die Mail\\ - SPF/DKIM/DMARC/Reputation für webmaster@waldhofer.com nicht sauber\\ - SMTP-Provider lehnt bestimmte Empfänger ab oder limitiert ===== SMPT Server des Mailprovieders meckert ===== **bei den Grundeinstellungen gebe ich alle Parameter des smtp Servers an. Warum ist es möglich, dass bei gleichbleibender Konfiguration ein Mailversand manchmal funktioniert, manchmal nicht** Die SMTP-Konfiguration in den **Grundeinstellungen** ist nur die statische Vorgabe: Server, Port, Verschlüsselung, Benutzer, Passwort, Absender. Jeder einzelne Versand ist aber eine neue Verbindung über Netzwerk, DNS, TLS und den SMTP-Server. Nextcloud ist dabei kein eigener Mailserver, sondern verbindet sich mit einem vorhandenen Mailserver. ==== Mögliche Ursachen (viele siehst du im Nextcloud Log) ==== === 1. SMTP-Timeout zu knapp === Wenn der SMTP-Server gerade langsam reagiert, ein Spam-/Virenscanner auf dem Mailserver prüft oder TLS länger dauert, kann ein Versand abbrechen, obwohl dieselben Daten beim nächsten Versuch funktionieren. Parameter in der Config.php 'mail_smtptimeout' => 30, === 2. Verschlüsselung === Wenn der Mailanbieter **Port 465 **anbietet, ist das oft stabiler, weil die TLS-Verbindung sofort aufgebaut wird. === 3. SMTP Server limitiert oder drosselt: === Anzahl Mails pro Minute\\ Anzahl Logins pro Zeitfenster\\ Anzahl Verbindungen pro IP\\ Versand an externe Domains\\ Versand mit abweichender Absenderadresse Dann sieht es in Nextcloud so aus, als wäre die Konfiguration fehlerhaft, obwohl der SMTP-Server nur zeitweise ablehnt. Das betrifft besonders 2FA per Mail, weil beim Login mehrere Codes in kurzer Zeit angefordert werden können. === 4. Der Test-Mailversand ist nicht dasselbe wie jeder echte Versand === Der Button **E-Mail senden** in den Grundeinstellungen sendet laut Nextcloud eine Testmail an die E-Mail-Adresse, die im persönlichen Profil des angemeldeten Benutzers eingetragen ist. Bei 2FA-Mails kann aber ein anderer Benutzer betroffen sein. Dann kann es an dessen hinterlegter Mailadresse, Empfänger-Server, Spamfilter oder Zustellbarkeit liegen. === 5. Spamfilter prüfen === Es soll vorkommen, das 2FA Mails im Spamfilter landen **6. Dem Zertifikat wird nicht vertraut** docker compose exec app sh -c "openssl s_client -starttls smtp -connect aspmail.bmd.at:587 -servername SERVERNAMe -showcerts wichtig ist der Output, z.B.\\ Timeout : 7200 (sec)\\ Verify return code: 0 (ok) In der config.php ist folgendes einzutragen (hat bei mir geholfen, allerdings werden einige Zertifikatwsicherheitschecks ausgeschaltet.) 'mail_smtpstreamoptions' => array ( 'ssl' => array ( 'allow_self_signed' => true, 'verify_peer' => false, 'verify_peer_name' => false, ), ), ==== erweitertes SMTP Logging kurzfristig einschalten ==== Aktivierung des Debug Logs in config.php 'mail_smtpdebug' => true, 'loglevel' => 0, Nach dem Test unbedingt wieder ausschalten! 'mail_smtpdebug' => false, 'loglevel' => 2, Logs werden in das Nextcloud.log geschrieben, ansehen z.B. mit docker exec -it nextcloud tail -f /var/www/html/data/nextcloud.log | grep -i mail Wenn nextcloud.log a**usserhalb des Containers liegt,** kannst du das Log folgendermaßen ansehen: tail -n 50 /directora/data/nextcloud.log | jq . Manchmal kann es sinnvoll sein, Nextcloud neu zu starten. docker compose up -d --force-recreate app ===== Administrative Einstellungen beim Versand der E-Mails ===== Bei den administrative Einstellungen des E-Mail Versandes ist zu beachten, **über welches Absender-/SMTP-Konto ****Nextcloud bestimmte ausgehende E-Mails verschickt**. ==== 1. System E-Mailkonto ==== Das ist der klassische und meist empfohlene Weg.\\ Nextcloud verwendet dabei das zentrale SMTP-Konto aus den Admin-Grundeinstellungen beziehungsweise aus ''config.php. '' \\ Damit sendet Nextcloud Systemmails wie Passwort-Zurücksetzen, Benachrichtigungen, Freigaben, Aktivitätsmails und ähnliche Nachrichten über ein zentrales Konto. Laut Nextcloud-Doku kann Nextcloud selbst keine vollständige Mailserver-Funktion übernehmen, sondern verbindet sich mit einem vorhandenen Mailserver; die Grundeinstellungen schreiben die Werte in ''config/config.php''. ==== 2. E-Mailkonto des Benutzers ==== Diese Option nutzt nicht primär das zentrale Systemkonto, sondern versucht, über ein **persönlich eingerichtetes Mailkonto ****des jeweiligen Nextcloud-Benutzers** zu senden. Das ist eine neuere Mail-Provider-Funktion. Laut Nextcloud-Dokumentation wurde sie ab Version 30 eingeführt. Sie erlaubt, System-E-Mails direkt über ein vom Benutzer konfiguriertes persönliches Mailkonto zu senden, ist derzeit aber auf **Kalendereinladungen** beschränkt. Außerdem wird aktuell die **Nextcloud Mail App ab Version 4.1** benötigt, und der Benutzer muss dort ein passendes Mailkonto eingerichtet haben. ==== Empfehlung für deine Umgebung ==== Für die Docker-Nextcloud mit zentralem SMTP für Passwort-Reset und 2FA in den Grundeinstellungen **System E-Mailkonto** verwenden.