greylite mit MySQL

Im Rahmen unserer Arbeiten mit qmail-tauglichen Greylisting-Implementierungen sind wir auf greylite gestoßen, das zu einem der am einfachsten zu installierenden und zu benutzenden Tools gehört. Es unterstützt MySQL als Backend, was insbesondere deshalb für uns wichtig ist, weil wir mehrere Filterserver einsetzen, die sich eine Greylisting-Datenbank teilen sollen.

Auch wenn alles von Anfang an prima klappte, eins haute nicht hin: Das automatische Aufräumen von veralteten Einträgen. Zwar war in der Dokumentation nichts davon erwähnt; aus dem Sourcecode ging aber klar …

MySQL, localhost, 127.0.0.1

Mein Kollege Christopher hatte sich in seinem Artikel über MySQL-Replikation ja bereits über die etwas gewöhnungsbedürfte Behandlung von localhost vs. 127.0.0.1 bei MySQL ausgelassen. Wir konfigurieren bei uns laufende MySQL-Server in der Regel mit skip-networking oder, wenn z.B. (lokale) Replikation benötigt wird, zumindest mit bind-address = 127.0.0.1.

Auf einem Server, den wir nur während einer Übergangsphase ausnahmsweise betreuen, musste ich nun dennoch erstmal Rätselraten: Die Verbindung über 127.0.0.1 klappte nämlich nicht, obwohl MySQL sich durchaus an das Loopback-Interface gebunden …

Hardware-Lieferzeiten

Unsere Serverhardware bestellen wir inzwischen fast ausschließlich bei der Thomas-Krenn.AG. Nicht zuletzt, seit wir Ende letzten Jahres dort eine Betriebsführung mitmachen konnten, haben wir noch mehr Argumente dafür: Es geht einfach sauschnell, und das ist nicht zuletzt den hervorragend integrierten Prozessen bei Krenn geschuldet, die den Webshop, das Warenwirtschaftssystem und das RMA-System „aus einem Guss“ realisieren, mit hausintern entwickelter Software. Kurz gesagt: Was im Shop bestellt wird (und dort als „sofort lieferbar“ gekennzeichnet ist), kann typischerweise nach zwei Stunden …

„Sicherheitsmethode“ beim Domaintransfer

Aus der guten alten Zeit haben wir noch einige wenige Domains bei einem Domainregistrar, von dem wir uns schrittweise trennen, in dem wir die letzten Domains sukzessive kurz vor Ablauf zu InternetX transferieren. Das ist insofern eine ziemliche Arbeit, als dass es mit jenem Domainregistrar keinen Rahmenvertrag gibt, der uns davon befreite, für jeden Vorgang unterschriebene Faxe einzureichen. Als muss es hier Papierkram sein.

Nun sind wir praktischerweise für die restlichen Domains auch immer als admin-c eingetragen, denn bei einem …

IPv6-Tunnel mit 6in4 unter CentOS

Ich hab mir vor einer Weile bei tunnelbroker.net von Hurricane Electric einen Account geklickt und mir darüber einen IPv6-Tunnel zugelegt. IPv6-Tunnel sind derzeit leider noch ein notwendiges Übel, da bisher bei nahezu keinem DSL-Anbieter in Deutschland IPv6 verfügbar ist. Die wenigen die überhaupt IPv6 anbieten verlangen dafür meines Wissens unabhängig von der normalen Grundgebür eine Extra-Gebühr, außerdem sind es soweit ich es bisher mitbekommen habe ausnahmslos Reseller des ehemaligen Fernmeldeamtes der Bundespost.

Bei Hurricane Electric bekommt man kostenlos einen Account …

MySQL-Replikation

Dieser Artikel ist der zweite Teil einer kleinen Gruppe von Artikeln über MySQL-Backups. Die weiteren Artikel werden hier verlinkt, sobald sie erscheinen:

Hier ist der erste Artikel: MySQL-Backups, aber wie?

Hier ist der dritte Artikel: Hinter der MySQL-Replikation aufräumen

Hier ist der vierte und letzte Artikel: MySQL mit daemontools

Wie im ersten Teil erläutert, nutzen wir gerne eine zweite MySQL-Instanz mit Replikation (einen sogenannten Slave), um MySQL-Backups zu realisieren. In diesem Teil geht es um die Einrichtung dieser Replikation.

Vorab …

Levenshtein mit DBIx::Class

Da ich mittlerweile verstärkt mit Catalyst als Framework arbeite und hier als Model-Integration typischerweise DBIx::Class verwendet wird, komme ich nicht umhin, mich weitergehend mit der entsprechenden Syntax auseinanderzusetzen. Dabei mache ich fast jeden Tag die gleiche Erfahrung: DBIx::Class macht die einfachen Anwendungsfälle von SQL noch einfacher, aber die schwierigeren Anwendungsfälle noch viel schwieriger, denn die Klimmzüge, die hier bisweilen in der kruden SQL::Abstract-Syntax zu vollziehen sind, haben es wirklich in sich.

Als Beispiel erstmal der einfache Fall:

my $contact = 

Levenshtein-Distanz mit MySQL

Für ein Projekt benötigte ich eine Möglichkeit, eine Duplikatsprüfung durchzuführen. Anforderung war, nicht nur identische, sondern auch „ähnliche“ Datenbank-Einträge wiederfinden können. Dabei stieß ich auf den Algorithmus der Levenshtein-Distanz. MySQL kennt von Haus aus keine Funktion hierfür. Nach einigem Suchen bin ich allerdings auf ein kleines Plugin gestoßen, dass diesen Algorithmus als user-defined function nachrüstet.

Um es kurz zu machen – für die Installation auf einem CentOS 5 auf einer 64-Bit-Plattform habe ich folgende Schritte benötigt:

mkdir /usr/local/src/mysql_levenshtein_udf-1.0
cd 

Unvorhergesehene Ereignisse

Aufgrund eines unvorhergesehenen Ereignisses sind wir momentan telefonisch nicht erreichbar. Bitte versuchen Sie es zu einem späteren Zeitpunkt erneut.

Von wem möchte man diese Ansage nun wirklich nicht hören? Richtig: Von der Störungshotline des eigenen Telefonanbieters. Versatel routet nämlich gerade meine IP-Pakete zwar noch so ein bisschen von meinem DSL-Zugang in sein eigenes Netz, wo sie dann aber schließlich versanden. Rufe ich mein Handy an, verrät mir eine Ansage, die gewählte Nummer sei „unvollständig“. Anrufe zu anderen Festnetzanschlüssen funktionieren manchmal, …

„Wir werden nicht eine Plage“

Ist man schon je unterhaltsamer von einem – an sich englischsprachigen – Shop, der sich 2010 erstmalig auch über den großen Teich wagt, über den Umgang mit seinen persönlichen Daten informiert worden?

Wir werden niemals verkauft oder vermietet Ihre Informationen. Wir speichern keine Ihrer finanziellen Daten. Wir verkaufen nur Kalender! Wenn Sie bei uns kaufen, können wir uns mit Ihnen im nächsten Jahr wieder sehen, wenn Sie interessiert sind. Wir werden nicht eine Plage.

Schreiben die mit den lustigen Kalendern