In einer Ubiquiti UniFi-WLAN-Umgebung gab es Schwierigkeiten mit dem Netz und man wunderte sich, das die Benachrichtigungs-Mails ausblieben.

Seinerzeit bei der Einrichtung hatte alles funktioniert, die Software (inkl. der Firmware auf den APs) ist aktuell. Beim Versuch eine Test-Mail zu versenden erschien nur kurz eine Info, das es einen Fehler gegeben hat, leider ohne weitere Infos. Im Mailserver-Log war noch nicht mal ein Zustellversuch protokolliert. Bei Betrachtung des Netzwerkverkehrs mit SmartSniff konnte festgestellt werden, das der Controller noch nicht mal versucht eine Verbindung zum Mailserver aufzubauen. Im Log des Controllers fand sich folgendes:

Hier klicken um das Log anzuzeigen
[2020-06-10T10:56:11,664]  WARN  sanitize - Invalid key exists in Setting payload, key=analytics_disapproved_for
[2020-06-10T10:56:13,760]  ERROR [ApiServlet] - Servlet.service() for servlet [ApiServlet] in context with path [] threw exception [Servlet execution threw an exception] with root cause
java.lang.ClassNotFoundException: javax.activation.DataSource
	at jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:583) ~[?:?]
	at jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178) ~[?:?]
	at java.lang.ClassLoader.loadClass(ClassLoader.java:521) ~[?:?]
	at com.ubnt.service.b.ooOo.super(Unknown Source) ~[ace.jar:?]
	at com.ubnt.ace.api.L.o00000(Unknown Source) ~[ace.jar:?]
	at com.ubnt.ace.api.ApiServlet.service(Unknown Source) ~[ace.jar:?]
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:742) ~[tomcat-embed-core-8.5.34.jar:8.5.34]
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) ~[tomcat-embed-core-8.5.34.jar:8.5.34]
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-8.5.34.jar:8.5.34]
	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) ~[tomcat-embed-websocket-8.5.34.jar:8.5.34]
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-8.5.34.jar:8.5.34]
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-8.5.34.jar:8.5.34]
	at com.ubnt.ace.view.AuthFilter.doFilter(Unknown Source) ~[ace.jar:?]
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-8.5.34.jar:8.5.34]
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-8.5.34.jar:8.5.34]
	at org.apache.catalina.filters.CorsFilter.handleNonCORS(CorsFilter.java:364) ~[tomcat-embed-core-8.5.34.jar:8.5.34]
	at org.apache.catalina.filters.CorsFilter.doFilter(CorsFilter.java:170) ~[tomcat-embed-core-8.5.34.jar:8.5.34]
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-8.5.34.jar:8.5.34]
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-8.5.34.jar:8.5.34]
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:198) [tomcat-embed-core-8.5.34.jar:8.5.34]
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96) [tomcat-embed-core-8.5.34.jar:8.5.34]
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:610) [tomcat-embed-core-8.5.34.jar:8.5.34]
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140) [tomcat-embed-core-8.5.34.jar:8.5.34]
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81) [tomcat-embed-core-8.5.34.jar:8.5.34]
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87) [tomcat-embed-core-8.5.34.jar:8.5.34]
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) [tomcat-embed-core-8.5.34.jar:8.5.34]
	at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:800) [tomcat-embed-core-8.5.34.jar:8.5.34]
	at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66) [tomcat-embed-core-8.5.34.jar:8.5.34]
	at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:806) [tomcat-embed-core-8.5.34.jar:8.5.34]
	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1498) [tomcat-embed-core-8.5.34.jar:8.5.34]
	at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) [tomcat-embed-core-8.5.34.jar:8.5.34]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) [?:?]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) [?:?]
	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) [tomcat-embed-core-8.5.34.jar:8.5.34]
	at java.lang.Thread.run(Thread.java:835) [?:?]

Es musste also etwas mit der Java-Umgebung nicht stimmen. Nach einem Blick mit dem Process Explorer war klar woran es hapert:

Auf dem System war noch ein Java SE 12 installiert, damit ist der Ubiquiti UniFi Network Controller nicht kompatibel, dieser benötigt Java SE oder Java JRE in der Version 8. Eine passende JRE war auch installiert, wurde allerdings nicht verwendet.

Nachdem abgeklärt war, das Java SE nicht mehr benötigt ist, wurde dieses kurzerhand deinstalliert und siehe da, der Controller kann wieder mailen.

Update 03.12.2021

Es kann ein Dauerbrenner sein, das die Benachrichtigung per E-Mail nicht funktioniert. Damit es grundsätzlich überhaupt funktionieren kann müssen mehrere Punkte konfiguriert bzw. aktiviert sein:

  • Beim jeweiligen Benutzer bzw. Admin muss eine E-Mail-Adresse hinterlegt sein:
    Rechts oben auf den Benutzernamen klicken und “Profil bearbeiten” auswählen.
  • Unter “Einstellungen – Site/Standort” muss der Haken gesetzt sein bei “Alarm E-Mail aktivieren”.
  • Unter “Einstellungen – Notifications” (zu finden im “New User Interface”) müssen Benachrichtigungen generell aktiviert und ggf. via “Custom” wie gewünscht eingestellt werden.
  • Last but not least muss unter “Einstellungen – Controller” im Abschnitt “E-Mail-Server” entweder “Cloud E-Mail” aktiviert sein oder manuell ein eigener E-Mail-Server eingetragen werden.

Zu diesem Zeitpunkt macht es einem Ubiquiti durch die Umstellung der GUI nicht unbedingt einfach. Teilweise muss man immer mal wieder zwischen der alten und neuen Oberfläche umschalten, um den einen oder anderen Dialog zu finden.

Troubleshooting bei STARTTLS

Bei der Verwendung von SSL bzw. STARTTLS, selbst wenn man SSL explizit nicht aktiviert hat, kommt es bei E-Mail-Servern mit nicht öffentlichem vertrauenswürdigem Zertifikat zu einem Fehler und die Nachricht kann nicht versendet werden. An dieser Stelle gibt es zwei Möglichkeiten:

STARTTLS im Controller deaktivieren

Die Datei “system.properties” editieren und

smtp.checkserveridentity=false

einfügen bzw. entsprechend abändern.

Ausnahme im E-Mail-Server erstellen

Am Beispiel vom MDaemon Email Server kann man unter

Sicherheit - Sicherheits-Manager - SSL & TLS

bei

Weiße Liste für STARTTLS

Hosts und IPs eintragen, die von STARTTLS ausgenommen sind.

Quellen

UI – Community – Own mail server certificate | Controller 6.1.x | starttls mail problem

Ubiquiti Support and Help Center – UniFi – Explaining the system.properties File – SMTP Related Settings

UI – Community – Controller 6.1.x email notification settings | alert type | where?