[gelöst] Freetz bug report: dnsmasq restart geht nicht

Das Problem mit der Uhrzeit habe ich nicht:
Code:
# strace -p 3711 -s 200
Process 3711 attached - interrupt to quit
_newselect(7, [3 4 5 6], [], [], NULL)  = ? ERESTARTNOHAND (To be restarted)
--- SIGTERM (Terminated) @ 0 (0) ---
getpid()                                = 3711
write(7, "\4\0\0\0\0\0\0\0", 8)         = 8
sigreturn(sigreturn: PTRACE_GETREGS : Input/output error
sigreturn: PTRACE_GETREGS : Input/output error
)                             = -1 EINTR (Interrupted system call)
time(NULL)                              = 1278842924
stat64(0x426078, 0x7fbfda18)            = 0
_newselect(7, [3 4 5 6], [], [], NULL)  = 1 (in [6])
time(NULL)                              = 1278842924
read(6, "\4\0\0\0\0\0\0\0", 8)          = 8
unlink("/var/run/dnsmasq/dnsmasq.pid")  = 0
getpid()                                = 3711
[COLOR="Red"]time([1278842924])                      = 1278842924
open("/etc/TZ", O_RDONLY)               = 9
read(9, "CET-1CEST-2,M3.5.0/02:00:00,M10.5.0/03:00:00\n", 68) = 45
read(9, "", 23)                         = 0
close(9)                                = 0[/COLOR]
getpid()                                = 3711
write(8, "<30>Jul 11 12:08:44 dnsmasq[3711]: exiting on receipt of SIGTERM\0", 65) = 65
close(8)                                = 0
exit(0)                                 = ?
Process 3711 detached
 
Ist das bei dir auch ein Symlink auf /var/TZ und dann auf /etc/default.049/TZ? Oder hast du die Zeitzone manuell gesetzt?
 
Ja, es ist ein symlink:
Code:
/var/mod/root # ls -la /etc/TZ
lrwxrwxrwx    1 root     root             7 Jul  9 10:43 /etc/TZ -> /var/TZ
/var/mod/root # ls -la /etc/default.049/TZ
-rwxrwxrwx    1 root     root            45 Feb 23 12:07 /etc/default.049/TZ
/var/mod/root # ls -la /var/TZ
lrwxrwxrwx    1 root     root            19 Jul 11 12:47 /var/TZ -> /etc/default.049/TZ
Habe nichts manuell gesetzt.
 
Die Frage ist wohl weniger der Symlink als die Rechte der Zieldatei. Seltsam übrigens, daß diese Datei execute Rechte hat. Bei Oliver wird die Datei vermutlich für den User nobody nicht lesbar sein.
 
Ich denke, dass es an den Verzeichnisrechten liegt!? Warum reicht ein "chmod a+r" nicht aus um in das Verzeichnis wechseln zu dürfen? Nach "chmod +x" funktioniert es.
Code:
freetz/trunk_i386$ ls -l build/original/filesystem/etc |grep 049
lrwxrwxrwx 1 oliver oliver      16 2010-07-11 14:01 default.0 -> /etc/default.049
drwxrwx--- 2 oliver oliver    4096 2010-07-06 15:33 default.049
@sf3978
Sind die Rechte bei dir anders? Im original? Auf der Box?

MfG Oliver
 
Ich denke, dass es an den Verzeichnisrechten liegt!? Warum reicht ein "chmod a+r" nicht aus um in das Verzeichnis wechseln zu dürfen?

Weil bei UNIX die Verzeichnis-Rechte so funktionieren:
- 'r' bedeutet, daß man das Verzeichnis lesen darf. Damit kann man feststellen, welche Einträge in dem Verzeichnis vorhanden sind.
- 'x' bedeutet, daß man auf diese Einträge zugreifen darf.
- 'w' bedeutet, daß man Änderungen am Verzeichnis machen darf (Anlegen, Umbenennen, Löschen)

In diesem Fall würde also das Execute-Recht beim Verzeichnis ausreichen, um auf die Datei zuzugreifen, da der Name der Datei bekannt ist und das Verzeichnis nicht gelesen werden muß, um auf einen bereits bekannten Namen zuzugreifen.
 
Schön. Dann wäre mein Problem mit der falschen Uhrzeit im Log geklärt. jetzt müsste sich aber bitte nochmal jemand bei dem das ursprüngliche Problem auftritt mit einem strace zu Wort melden? :)

MfG Oliver
 
NUR ZUR INFO:
Im trunk rev. 5242, löst "stop" und "start" von dnsmasq, das "onlinechanged"-Ereignis aus. dnsmasq funktioniert aber ohne Probleme.
 
Klar, weil der multid neu gestartet wird.

MfG Oliver

edit: Um noch mal auf das Rechte-Problem zu kommen. Spricht was gegen diesen Patch?
Code:
--- fwmod	(Revision 5242)
+++ fwmod	(Arbeitskopie)
@@ -293,10 +293,6 @@
 	echo "unpacking filesystem image"
 	modunsqfs "$FILESYSTEM_DIR" "$FILESYSTEM"
 
-	chmod -R u+w "$FILESYSTEM_DIR"
-
-	find "${FILESYSTEM_DIR}" -maxdepth 1 -type d -exec chmod +rx {} ';'
-
 	if [ -r "$AVMPLUGINS" ]; then
 		echo0 "unpacking AVM plugins"
 		mkdir -p "$AVMPLUGINS_DIR"
@@ -377,6 +373,12 @@
 	mkdir -p "$MOD_DIR"
 	"$TAR" -c -C "$ORG_DIR" --exclude=./filesystem/dev . | "$TAR" -x -C "$MOD_DIR" || exit 1
 
+	# Fix some permissions
+	chmod -R u+w "$FILESYSTEM_MOD_DIR"
+	find "${FILESYSTEM_MOD_DIR}" -maxdepth 1 -type d -exec chmod +rx {} ';'
+	# o-users should be allowed to access files in /etc/default.049
+	find "${FILESYSTEM_MOD_DIR}/etc" -maxdepth 1 -type d -name default.0* -exec chmod o+x {} ';'
+
 	if [ -d "${FILESYSTEM_MOD_DIR}/usr/www/avm" ]; then
 		echo0 "applying symlinks, deleting additional webinterfaces"
 		mv ${FILESYSTEM_MOD_DIR}/usr/www/avm ${FILESYSTEM_MOD_DIR}/usr/www/all
 
Hallo,

ich hab im Moment kein strace auf der Box. Komme auch frühestens heute abend dazu, ein neues Image mit strace zu bauen.
 
Probier mal hiermit. Das könnte gehen.

MfG Oliver
 
Hallo,

das Binary scheint zu funktionieren.

Szenario: dnsmasq läuft und arbeitet einwandfrei. Per SSH eingeloggt und dann strace gestartet. Anschließend im Freetz Webinterface in der Zeile dnsmasq auf "Stop" gedrückt:
Code:
/var/mod/root # ./strace -p 15906 -s 200
Process 15906 attached - interrupt to quit
_newselect(11, [3 5 6 7 8 9 10], [], [], NULL) = ? ERESTARTNOHAND (To be restarted)
--- SIGTERM (Terminated) @ 0 (0) ---
getpid()                                = 15906
write(11, "\4\0\0\0\0\0\0\0"..., 8)     = 8
sigreturn()                             = ? (mask now [EMT FPE SEGV PIPE ALRM WINCH STOP])
time(NULL)                              = 1278858948
stat64(0x4270d0, 0x7fd10a18)            = 0
_newselect(11, [3 5 6 7 8 9 10], [], [], NULL) = 1 (in [10])
time(NULL)                              = 1278858948
read(10, "\4\0\0\0\0\0\0\0"..., 8)      = 8
close(4)                                = 0
unlink("/var/run/dnsmasq/dnsmasq.pid")  = 0
getpid()                                = 15906
time([1278858948])                      = 1278858948
open("/etc/TZ", O_RDONLY)               = -1 EACCES (Permission denied)
getpid()                                = 15906
write(12, "<30>Jul 11 14:34:17 dnsmasq[15906]: started, version 2.55 cachesize 150\0"..., 72) = -1 ENOTCONN (Transport endpoint is not connected)
connect(12, {sa_family=AF_FILE, path="/dev/log"...}, 110) = -1 ECONNREFUSED (Connection refused)
getpid()                                = 15906
write(12, "<30>Jul 11 14:34:17 dnsmasq[15906]: started, version 2.55 cachesize 150\0"..., 72) = -1 ENOTCONN (Transport endpoint is not connected)
connect(12, {sa_family=AF_FILE, path="/dev/log"...}, 110) = -1 ECONNREFUSED (Connection refused)
nanosleep({0, 1000000}, NULL)           = 0
getpid()                                = 15906
write(12, "<30>Jul 11 14:34:17 dnsmasq[15906]: started, version 2.55 cachesize 150\0"..., 72) = -1 ENOTCONN (Transport endpoint is not connected)
connect(12, {sa_family=AF_FILE, path="/dev/log"...}, 110) = -1 ECONNREFUSED (Connection refused)
nanosleep({0, 1000000}, NULL)           = 0
getpid()                                = 15906
write(12, "<30>Jul 11 14:34:17 dnsmasq[15906]: started, version 2.55 cachesize 150\0"..., 72) = -1 ENOTCONN (Transport endpoint is not connected)
connect(12, {sa_family=AF_FILE, path="/dev/log"...}, 110) = -1 ECONNREFUSED (Connection refused)
nanosleep({0, 1000000}, NULL)           = 0
getpid()                                = 15906
write(12, "<30>Jul 11 14:34:17 dnsmasq[15906]: started, version 2.55 cachesize 150\0"..., 72) = -1 ENOTCONN (Transport endpoint is not connected)
connect(12, {sa_family=AF_FILE, path="/dev/log"...}, 110) = -1 ECONNREFUSED (Connection refused)
nanosleep({0, 1000000}, NULL)           = 0
getpid()                                = 15906
write(12, "<30>Jul 11 14:34:17 dnsmasq[15906]: started, version 2.55 cachesize 150\0"..., 72) = -1 ENOTCONN (Transport endpoint is not connected)
connect(12, {sa_family=AF_FILE, path="/dev/log"...}, 110) = -1 ECONNREFUSED (Connection refused)
nanosleep({0, 1000000}, NULL)           = 0
getpid()                                = 15906
write(12, "<30>Jul 11 14:34:17 dnsmasq[15906]: started, version 2.55 cachesize 150\0"..., 72) = -1 ENOTCONN (Transport endpoint is not connected)
connect(12, {sa_family=AF_FILE, path="/dev/log"...}, 110) = -1 ECONNREFUSED (Connection refused)
nanosleep({0, 1000000}, NULL)           = 0
getpid()                                = 15906
write(12, "<30>Jul 11 14:34:17 dnsmasq[15906]: started, version 2.55 cachesize 150\0"..., 72) = -1 ENOTCONN (Transport endpoint is not connected)
connect(12, {sa_family=AF_FILE, path="/dev/log"...}, 110) = -1 ECONNREFUSED (Connection refused)
nanosleep({0, 1000000}, NULL)           = 0
getpid()                                = 15906
write(12, "<30>Jul 11 14:34:17 dnsmasq[15906]: started, version 2.55 cachesize 150\0"..., 72) = -1 ENOTCONN (Transport endpoint is not connected)
connect(12, {sa_family=AF_FILE, path="/dev/log"...}, 110) = -1 ECONNREFUSED (Connection refused)
nanosleep({0, 1000000}, NULL)           = 0
getpid()                                = 15906
write(12, "<30>Jul 11 14:34:17 dnsmasq[15906]: started, version 2.55 cachesize 150\0"..., 72) = -1 ENOTCONN (Transport endpoint is not connected)
connect(12, {sa_family=AF_FILE, path="/dev/log"...}, 110) = -1 ECONNREFUSED (Connection refused)
nanosleep({0, 1000000}, NULL)           = 0
getpid()                                = 15906
write(12, "<30>Jul 11 14:34:17 dnsmasq[15906]: started, version 2.55 cachesize 150\0"..., 72) = -1 ENOTCONN (Transport endpoint is not connected)
connect(12, {sa_family=AF_FILE, path="/dev/log"...}, 110) = -1 ECONNREFUSED (Connection refused)
nanosleep({0, 1000000}, NULL)           = 0
getpid()                                = 15906
write(12, "<30>Jul 11 14:34:17 dnsmasq[15906]: started, version 2.55 cachesize 150\0"..., 72) = -1 ENOTCONN (Transport endpoint is not connected)
connect(12, {sa_family=AF_FILE, path="/dev/log"...}, 110) = -1 ECONNREFUSED (Connection refused)
nanosleep({0, 1000000}, NULL)           = 0
getpid()                                = 15906
write(12, "<30>Jul 11 14:34:17 dnsmasq[15906]: started, version 2.55 cachesize 150\0"..., 72) = -1 ENOTCONN (Transport endpoint is not connected)
connect(12, {sa_family=AF_FILE, path="/dev/log"...}, 110) = -1 ECONNREFUSED (Connection refused)
nanosleep({0, 1000000}, NULL)           = 0
getpid()                                = 15906
write(12, "<30>Jul 11 14:34:17 dnsmasq[15906]: started, version 2.55 cachesize 150\0"..., 72) = -1 ENOTCONN (Transport endpoint is not connected)
connect(12, {sa_family=AF_FILE, path="/dev/log"...}, 110) = -1 ECONNREFUSED (Connection refused)
nanosleep({0, 1000000}, NULL)           = 0
getpid()                                = 15906
write(12, "<30>Jul 11 14:34:17 dnsmasq[15906]: started, version 2.55 cachesize 150\0"..., 72) = -1 ENOTCONN (Transport endpoint is not connected)
connect(12, {sa_family=AF_FILE, path="/dev/log"...}, 110) = -1 ECONNREFUSED (Connection refused)
nanosleep({0, 1000000}, NULL)           = 0
getpid()                                = 15906
write(12, "<30>Jul 11 14:34:17 dnsmasq[15906]: started, version 2.55 cachesize 150\0"..., 72) = -1 ENOTCONN (Transport endpoint is not connected)
connect(12, {sa_family=AF_FILE, path="/dev/log"...}, 110) = -1 ECONNREFUSED (Connection refused)
nanosleep({0, 1000000}, NULL)           = 0
getpid()                                = 15906
write(12, "<30>Jul 11 14:34:17 dnsmasq[15906]: started, version 2.55 cachesize 150\0"..., 72) = -1 ENOTCONN (Transport endpoint is not connected)
connect(12, {sa_family=AF_FILE, path="/dev/log"...}, 110) = -1 ECONNREFUSED (Connection refused)
nanosleep({0, 1000000}, NULL)           = 0
getpid()                                = 15906
write(12, "<30>Jul 11 14:34:17 dnsmasq[15906]: started, version 2.55 cachesize 150\0"..., 72) = -1 ENOTCONN (Transport endpoint is not connected)
connect(12, {sa_family=AF_FILE, path="/dev/log"...}, 110) = -1 ECONNREFUSED (Connection refused)
nanosleep({0, 1000000}, NULL)           = 0
getpid()                                = 15906
write(12, "<30>Jul 11 14:34:17 dnsmasq[15906]: started, version 2.55 cachesize 150\0"..., 72) = -1 ENOTCONN (Transport endpoint is not connected)
connect(12, {sa_family=AF_FILE, path="/dev/log"...}, 110) = -1 ECONNREFUSED (Connection refused)
nanosleep({0, 1000000}, NULL)           = 0
getpid()                                = 15906
write(12, "<30>Jul 11 14:34:17 dnsmasq[15906]: started, version 2.55 cachesize 150\0"..., 72) = -1 ENOTCONN (Transport endpoint is not connected)
connect(12, {sa_family=AF_FILE, path="/dev/log"...}, 110) = -1 ECONNREFUSED (Connection refused)
nanosleep({0, 1000000}, NULL)           = 0
getpid()                                = 15906
write(12, "<30>Jul 11 14:34:17 dnsmasq[15906]: started, version 2.55 cachesize 150\0"..., 72) = -1 ENOTCONN (Transport endpoint is not connected)
connect(12, {sa_family=AF_FILE, path="/dev/log"...}, 110) = -1 ECONNREFUSED (Connection refused)
nanosleep({0, 1000000}, NULL)           = 0
getpid()                                = 15906
write(12, "<30>Jul 11 14:34:17 dnsmasq[15906]: started, version 2.55 cachesize 150\0"..., 72) = -1 ENOTCONN (Transport endpoint is not connected)
connect(12, {sa_family=AF_FILE, path="/dev/log"...}, 110) = -1 ECONNREFUSED (Connection refused)
nanosleep({0, 1000000}, NULL)           = 0
getpid()                                = 15906
write(12, "<30>Jul 11 14:34:17 dnsmasq[15906]: started, version 2.55 cachesize 150\0"..., 72) = -1 ENOTCONN (Transport endpoint is not connected)
connect(12, {sa_family=AF_FILE, path="/dev/log"...}, 110) = -1 ECONNREFUSED (Connection refused)
nanosleep({0, 1000000}, NULL)           = 0
getpid()                                = 15906
write(12, "<30>Jul 11 14:34:17 dnsmasq[15906]: started, version 2.55 cachesize 150\0"..., 72) = -1 ENOTCONN (Transport endpoint is not connected)
connect(12, {sa_family=AF_FILE, path="/dev/log"...}, 110) = -1 ECONNREFUSED (Connection refused)
nanosleep({0, 1000000}, NULL)           = 0
getpid()                                = 15906
write(12, "<30>Jul 11 14:34:17 dnsmasq[15906]: started, version 2.55 cachesize 150\0"..., 72) = -1 ENOTCONN (Transport endpoint is not connected)
connect(12, {sa_family=AF_FILE, path="/dev/log"...}, 110) = -1 ECONNREFUSED (Connection refused)
nanosleep({0, 1000000}, NULL)           = 0
getpid()                                = 15906
write(12, "<30>Jul 11 14:34:17 dnsmasq[15906]: started, version 2.55 cachesize 150\0"..., 72) = -1 ENOTCONN (Transport endpoint is not connected)
connect(12, {sa_family=AF_FILE, path="/dev/log"...}, 110) = -1 ECONNREFUSED (Connection refused)
nanosleep({0, 1000000}, NULL)           = 0
getpid()                                = 15906
write(12, "<30>Jul 11 14:34:17 dnsmasq[15906]: started, version 2.55 cachesize 150\0"..., 72) = -1 ENOTCONN (Transport endpoint is not connected)
connect(12, {sa_family=AF_FILE, path="/dev/log"...}, 110) = -1 ECONNREFUSED (Connection refused)
nanosleep({0, 1000000}, NULL)           = 0
getpid()                                = 15906
write(12, "<30>Jul 11 14:34:17 dnsmasq[15906]: started, version 2.55 cachesize 150\0"..., 72) = -1 ENOTCONN (Transport endpoint is not connected)
connect(12, {sa_family=AF_FILE, path="/dev/log"...}, 110) = -1 ECONNREFUSED (Connection refused)
nanosleep({0, 1000000}, NULL)           = 0
getpid()                                = 15906
write(12, "<30>Jul 11 14:34:17 dnsmasq[15906]: started, version 2.55 cachesize 150\0"..., 72) = -1 ENOTCONN (Transport endpoint is not connected)
connect(12, {sa_family=AF_FILE, path="/dev/log"...}, 110) = -1 ECONNREFUSED (Connection refused)
...
Das geht quasi endlos so weiter, bis sich irgendwann die SSH Verbindung aufhängt. Putty meldet dann "Connection terminated".
 
Zum einen hast Du das gleiche Rechte-Problem wie Oliver oben. Das hat aber keine weiteren Auswirkungen, bis auf die falsche Uhrzeit.
Seltsam, daß die SSH-Verbindung beendet wird. Startet die Box neu, oder ist nur die Verbindung weg?

Läuft bei Dir Syslog? Sind dort Meldungen vom Start von dnsmasq zu sehen? Kannst Du mal lsof für die Box erstellen? Es muß nicht mit ins Image, und vielleicht hat Oliver auch schon ein fertiges. Was sagt "lsof -nPc dnsmasq"?

Außerdem besagt die Meldung, die dnsmasq senden will, daß er gerade gestartet wurde und nicht, daß er gerade ein TERM-Signal bekommen hat.
 
Ich konnte gestern Abend das Problem bei mir nachstellen. Das Problem scheint zumindest bei mir daran zu liegen, dass dnsmasq beim Terminieren etwas (blockierend) nach syslog schreibt. Ist syslog nicht vorhanden, so wartet dnsmasq ewig, d.h. terminiert nicht. Befindet sich dnsmasq in diesem warteneden Zustand, so reicht es erstaunlicherweise syslog einfach zu starten, damit sich dnsmasq terminiert.

@oliver: das mit den Rechten, sollte OK sein. Ich korrigiere diese falschen Rechte schon seit Ewigkeiten in meinem privaten Baum, denn ohne diese Korrektur kann sich kein nonroot-User einloggen.
 
Spricht was gegen diesen Patch?

Ich denke, man könnte alle Verzeichnisse im ROM auf +rx / 755 setzen. Es gibt in dem Bereich nichts, das geheim sein muß. Auch Einträge wie /etc/shadow zeigen nur nach /var, so daß man dort sowieso die passenden Rechte setzen muß.

Befindet sich dnsmasq in diesem warteneden Zustand, so reicht es erstaunlicherweise syslog einfach zu starten, damit sich dnsmasq terminiert.

So erstaunlich ist das nicht. Wie man im strace von Frank sehen kann, versucht dnsmasq immer wieder, eine Meldung an syslog zu senden. Man sollte annehmen, daß er aufhört, sobald er das geschafft hat. Interessant wäre noch, welche Meldungen dann beim Syslog ankommen. Im strace von Frank sieht man, daß er eine Meldung vom Start und nicht vom Beenden senden will.
 
Bei mir sieht das dann so aus:
Code:
...
write(12, "<30>Jul 11 22:43:32 dnsmasq[5018]: started, version 2.55 cachesize 150\0", 71) = -1 ENOTCONN (Transport endpoint is not connected)
connect(12, {sa_family=AF_FILE, path="/dev/log"}, 110) = -1 ECONNREFUSED (Connection refused)
nanosleep({0, 1000000}, NULL)           = 0
getpid()                                = 5018
write(12, "<30>Jul 11 22:43:32 dnsmasq[5018]: started, version 2.55 cachesize 150\0", 71) = -1 ENOTCONN (Transport endpoint is not connected)
connect(12, {sa_family=AF_FILE, path="/dev/log"}, 110) = 0
getpid()                                = 5018
write(12, "<30>Jul 11 22:43:32 dnsmasq[5018]: started, version 2.55 cachesize 150\0", 71) = 71
getpid()                                = 5018
write(12, "<30>Jul 11 22:43:32 dnsmasq[5018]: compile time options: IPv6 GNU-getopt no-DBus no-I18N DHCP TFTP\0", 99) = 99
getpid()                                = 5018
write(12, "<30>Jul 11 22:43:32 dnsmasq[5018]: asynchronous logging enabled, queue limit is 10 messages\0", 92) = 92
getpid()                                = 5018
write(12, "<30>Jul 11 22:43:32 dnsmasq-dhcp[5018]: DHCP, IP range 192.168.178.20 -- 192.168.178.200, lease time 12h\0", 105) = 105
getpid()                                = 5018
write(12, "<30>Jul 11 22:43:32 dnsmasq[5018]: reading /etc/resolv.conf\0", 60) = 60
getpid()                                = 5018
write(12, "<30>Jul 11 22:43:32 dnsmasq[5018]: using nameserver 192.168.42.1#53\0", 68) = 68
getpid()                                = 5018
write(12, "<30>Jul 11 22:43:32 dnsmasq[5018]: read /etc/hosts - 3 addresses\0", 65) = 65
getpid()                                = 5018
write(12, "<30>Jul 11 22:43:32 dnsmasq-dhcp[5018]: read /etc/ethers - 1 addresses\0", 71) = 71
getpid()                                = 5018
write(12, "<30>Jul 11 22:43:54 dnsmasq[5018]: exiting on receipt of SIGTERM\0", 65) = 65
close(12)                               = 0
exit(0)                                 = ?
Process 5018 detached
MfG Oliver
 
Hallo,

Syslog fehlt bei mir, das hab ich vergessen zu aktivieren. Mittlerweile hab ich ein Image mit Syslog gebaut, aber noch nicht geflasht. Ich komme heute wohl auch nicht mehr dazu, und damit bleibt es wahrscheinlich so bis zum kommenden Wochenende.
 
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.