{"id":144,"date":"2026-10-27T17:50:31","date_gmt":"2026-10-27T16:50:31","guid":{"rendered":"https:\/\/blog.maxglas.de\/?p=144"},"modified":"2026-10-27T17:51:43","modified_gmt":"2026-10-27T16:51:43","slug":"rufpass-wer-von-mir-angerufen-wird-darf-zurueckrufen","status":"publish","type":"post","link":"https:\/\/blog.maxglas.de\/?p=144","title":{"rendered":"Rufpass: Wer von mir angerufen wird, darf zur\u00fcckrufen"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Unser Festnetztelefon wurde zunehmend zum Werbekanal. Wenn es klingelte, war h\u00e4ufig jemand dran, mit dem wir \u00fcberhaupt nicht sprechen wollten.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Irgendwann habe ich deshalb in der FRITZ!Box eine konsequente Sperrregel eingerichtet: Nur Rufnummern, die im Telefonbuch stehen, d\u00fcrfen durchkommen.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Seitdem ist es deutlich ruhiger.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Die Regel hat allerdings eine L\u00fccke im Alltag: Auch erw\u00fcnschte Anrufer werden blockiert, solange ihre Nummer noch nicht gespeichert ist.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Freunde und Bekannte kann ich nachtragen. Schwieriger wird es bei einer Werkstatt, einer Arztpraxis oder einem neuen Kontakt. Ich rufe dort an, erreiche niemanden und lege wieder auf. Sp\u00e4ter ruft jemand zur\u00fcck \u2013 und kommt nicht durch.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Genau daf\u00fcr entsteht <strong>Rufpass<\/strong>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Die Idee: Eigene Anrufe erm\u00f6glichen R\u00fcckrufe<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Der Grundgedanke ist einfach:<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">Wer von mir angerufen wird, bekommt automatisch eine zeitlich begrenzte R\u00fcckruf-Freigabe.<\/p>\n<\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\">Dazu verwendet Rufpass ein zus\u00e4tzliches lokales Telefonbuch in der FRITZ!Box. Das pers\u00f6nliche Telefonbuch bleibt bestehen.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Der Ablauf sieht so aus:<\/p>\n\n\n\n<ol start=\"1\" class=\"wp-block-list\">\n<li>Ich w\u00e4hle eine externe Rufnummer \u00fcber die FRITZ!Box.<\/li>\n\n\n\n<li>Rufpass pr\u00fcft, ob diese Nummer bereits in einem Telefonbuch steht.<\/li>\n\n\n\n<li>Eine bislang unbekannte Nummer wird im zus\u00e4tzlichen Rufpass-Telefonbuch eingetragen.<\/li>\n\n\n\n<li>Die vorhandene Sperrregel l\u00e4sst den R\u00fcckruf dadurch zu.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">Standardm\u00e4\u00dfig gilt diese Freigabe f\u00fcr <strong>365 Tage ab dem letzten eigenen W\u00e4hlversuch<\/strong>. Rufe ich die Nummer erneut an, verl\u00e4ngert sich die G\u00fcltigkeit. Es entsteht kein zus\u00e4tzlicher Eintrag.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Die Gegenstelle muss daf\u00fcr nicht abnehmen. Gerade nach einem erfolglosen Anruf soll der sp\u00e4tere R\u00fcckruf schlie\u00dflich m\u00f6glich sein.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Was daf\u00fcr im Hintergrund l\u00e4uft<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Rufpass ist eine Python-Anwendung auf einem Rechner im Heimnetz. Auf der FRITZ!Box selbst wird keine zus\u00e4tzliche Software installiert.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Die Box stellt zwei Funktionen bereit, die Rufpass nutzt:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Der <strong>Callmonitor<\/strong> meldet Telefonie-Ereignisse, darunter den W\u00e4hlbeginn. So erf\u00e4hrt Rufpass, welche Nummer gerade angerufen wird.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u00dcber <strong>TR-064<\/strong>, die Programmierschnittstelle der FRITZ!Box, liest die Anwendung die vorhandenen Telefonb\u00fccher und verwaltet ihre eigenen Freigabeeintr\u00e4ge.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Dazwischen speichert Rufpass seinen Zustand lokal in SQLite. Das hilft auch dann, wenn eine Verbindung abbricht oder die Antwort auf einen Schreibzugriff ausbleibt: Vor einer erneuten Anlage wird gepr\u00fcft, ob der Kontakt bereits vorhanden ist.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">F\u00fcr Ubuntu gibt es einen Installer, der Rufpass als systemd-Dienst einrichtet. Voraussetzung auf dem Rechner ist Python ab Version 3.12 samt Projektabh\u00e4ngigkeiten. Auch Windows kann den Python-Prozess ausf\u00fchren. Ein Raspberry Pi mit passender Laufzeit ist ebenfalls als Plattform vorgesehen, bisher aber noch nicht am Ger\u00e4t gepr\u00fcft.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Ein kleines Detail mit gro\u00dfer Wirkung: der Kontaktname<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">W\u00e4hrend der Entwicklung fiel mir etwas auf, das bei der ersten Idee leicht untergeht: Der Name im Telefonbuch wird beim R\u00fcckruf auf dem Telefon angezeigt.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u201eName unbekannt\u201c w\u00e4re dort wenig hilfreich. Wenn mehrere Eintr\u00e4ge so hei\u00dfen, wei\u00df ich beim Klingeln weiterhin nicht, wer zur\u00fcckruft.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Deshalb verwendet Rufpass ohne aufgel\u00f6sten Namen die <strong>Rufnummer selbst als Anzeigename<\/strong>. Auch ein Rufpass- oder Datumspr\u00e4fix entf\u00e4llt bei neuen Kontakten, damit die wichtige Information auf dem Display Platz hat.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Das Anlegedatum bleibt intern gespeichert.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Optional versucht Rufpass, einen Namen \u00fcber Wikidata zu ermitteln. Die Abdeckung ist begrenzt. Bei einem fehlenden oder mehrdeutigen Treffer bleibt es bei der Nummer.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Diese Suche ist standardm\u00e4\u00dfig aktiv und \u00fcbertr\u00e4gt unbekannte W\u00e4hlziele an Wikidata. Wer das nicht m\u00f6chte, kann sie mit <code>reverse_lookup = false<\/code> abschalten. Die eigentliche Freigabeverwaltung arbeitet lokal.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Die Router-Freigaben sollen verst\u00e4ndlich bleiben<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">F\u00fcr Rufpass werden ein zus\u00e4tzliches Telefonbuch und ein eigener FRITZ!Box-Benutzer mit Telefonie-Rechten vorbereitet. Das Kennwort dieses Benutzers wird bei der Einrichtung abgefragt.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Der Anwendungszugriff \u00fcber TR-064 ist normalerweise bereits eingeschaltet. Funktioniert der Telefonbuchzugriff, ist daf\u00fcr kein zus\u00e4tzlicher Einrichtungsschritt n\u00f6tig.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Der Callmonitor wird dagegen gezielt aktiviert. Dabei ist wichtig zu wissen: Er stellt Anrufmetadaten \u00fcber einen separaten Zugang ohne eigene Benutzeranmeldung bereit. Rechner, die diesen Zugang erreichen k\u00f6nnen, k\u00f6nnen die Ereignisse empfangen.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Deshalb geh\u00f6rt diese Funktion in ein vertrauensw\u00fcrdiges Heimnetz. Eine Portweiterleitung ins Internet ist daf\u00fcr weder erforderlich noch vorgesehen.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Wo das Projekt aktuell steht<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Die grundlegenden Funktionen wurden mit einer <strong>FRITZ!Box 7690 und FRITZ!OS 8.25<\/strong> sowie <strong>Ubuntu 24.04.4 LTS und Python 3.12.3<\/strong> gepr\u00fcft: Telefonbuchzugriff, Erkennen ausgehender W\u00e4hlversuche und gezielte Kontakt\u00e4nderungen.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Automatisierte Tests pr\u00fcfen unter anderem Dublettenvermeidung, Verl\u00e4ngerung, Ablaufbereinigung und den Erhalt manuell ver\u00e4nderter Kontakte.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Der vollst\u00e4ndige Dienstbetrieb und l\u00e4ngere Betriebserfahrungen stehen noch aus. Rufpass ist deshalb ein fr\u00fcher Teststand. Andere FRITZ!Box-Modelle sind nicht automatisch durch diese Tests abgedeckt.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Rufpass ben\u00f6tigt weiterhin eine passende Sperrregel in der Box. Es erkennt au\u00dferdem keine abweichende R\u00fcckrufnummer: Wenn eine Praxis \u00fcber ihre Zentrale zur\u00fcckruft, obwohl ich zuvor eine andere Durchwahl gew\u00e4hlt habe, bleibt das eine andere Nummer.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Quellcode und Einrichtung<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Den Quellcode, eine Installationsanleitung und den Changelog gibt es im Repository:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong><a href=\"https:\/\/github.com\/maxglas\/Rufpass\">Rufpass auf GitHub<\/a><\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Die Lizenz erlaubt Nutzung und Anpassung auch innerhalb eines eigenen Betriebs. Die entgeltliche Weiterverwertung von Rufpass selbst wird durch die Kombination aus Apache-2.0 und Commons Clause eingeschr\u00e4nkt.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Entstanden ist das Projekt aus einem sehr konkreten Wunsch: Die Ruhe vor Werbeanrufen behalten und trotzdem f\u00fcr Menschen erreichbar sein, die ich gerade selbst angerufen habe.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Unser Festnetztelefon wurde zunehmend zum Werbekanal. Wenn es klingelte, war h\u00e4ufig jemand dran, mit dem wir \u00fcberhaupt nicht sprechen wollten. Irgendwann habe ich deshalb in der FRITZ!Box eine konsequente Sperrregel eingerichtet: Nur Rufnummern, die&#46;&#46;&#46;<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[50],"tags":[93,18,94],"class_list":["post-144","post","type-post","status-publish","format-standard","hentry","category-haustechnik","tag-fritzbox","tag-ip-telefonie","tag-telefonbuch"],"_links":{"self":[{"href":"https:\/\/blog.maxglas.de\/index.php?rest_route=\/wp\/v2\/posts\/144","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.maxglas.de\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.maxglas.de\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.maxglas.de\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.maxglas.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=144"}],"version-history":[{"count":2,"href":"https:\/\/blog.maxglas.de\/index.php?rest_route=\/wp\/v2\/posts\/144\/revisions"}],"predecessor-version":[{"id":147,"href":"https:\/\/blog.maxglas.de\/index.php?rest_route=\/wp\/v2\/posts\/144\/revisions\/147"}],"wp:attachment":[{"href":"https:\/\/blog.maxglas.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=144"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.maxglas.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=144"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.maxglas.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=144"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}