Zum Thema Fahrradbau im Bereich der Elektropostlagerung

Nach meinem Willen gibt es einen Mailserver in meiner Obhut. Klein, ~ 20 Benutzer. Es funktioniert stabil, es ist unerwünscht, Software zu ändern. Und es wäre nicht notwendig, aber sobald die Sicherungsprotokolle eindeutig angedeutet sind - wenn Sie im gleichen Sinne fortfahren, wird die ganze Nacht zu einer vollständigen Sicherung. Und die Sache ist in der Menge der Benutzerpostfächer.


Das Problem wird angezeigt, es ist notwendig zu lösen. Der Weg in die Zukunft - Eisen noch stärker zu kaufen - ist nicht mein Typ, und das Budget ist nicht aus Gummi. Die naheliegende Option: Quoten. In der Praxis hilft dies jedoch nicht viel. Die Eide von „Ich habe alles gereinigt“ werden bei näherer Betrachtung zu Siegeln, lustigen Bildern und Familienfotoarchiven (in Firmenpost, ja). Und die Anzahl der Schreie „Ich habe ein dringendes Licht funktioniert nicht, mach es sofort“ steigt um eine Größenordnung. Also nicht lange und das Vertrauen in die Menschen verlieren.

Zum Glück bin ich kein Psychologe, kein Coach oder Mentor. Mein Geschäft ist Technologie. Wir kommen also von der technischen Seite.

Das erste, was ich dachte, waren selbstzerstörende Botschaften. Grob gesagt wird alles ohne das „wichtige“ Zeichen nach N Tagen gelöscht. Für meinen Geschmack sollte es in die Standards der E-Mail-Lagerung "eingenäht" werden. Bisher ist dies jedoch nicht der Fall, und die Umsetzung schien mir zu ehrgeizig.

Der zweite Gedanke waren Kopien. Kennen Sie diese Nachrichten, wenn Sie nicht der Hauptempfänger sind. Kommt nur zur Information zu Ihnen. Einige dieser Nachrichten könnten automatisch gelöscht werden. Aber plötzlich wurden die Benutzer hier in zwei Lager aufgeteilt: "Sie alle brauchen dich was" und "was ist es". Ich habe den automatischen Sortieralgorithmus unter solchen Bedingungen nicht beherrscht.

Nun, nicht löschen, also kopieren! Nehmen Sie alle Kopien und stellen Sie symbolische Links her. Eine schnelle Analyse ergab, dass selbst die Verarbeitung von nur VOLLSTÄNDIGEN Duplikaten auf diese Weise DREI Repositorys spart. Aber, aber, aber. Leider ist dies aufgrund vieler technischer Einschränkungen eine Sackgasse.

Details für Interessierte unter dem Spoiler
- Nicht alle Archivare verstehen Symlinks.
- Die Server-Software wird stellenweise verrückt.
- Komplexität org. Charakter- und Zugriffsrechte.

Übrigens sind in meinen Mailservern Einstellungen und allgemeine Backups sowie der Archivspeicher für Benutzer sehr spärlich. Der Handlungsspielraum war also klein.

Was bleibt übrig? Mit Traurigkeit schaute ich auf die Robben


und fragte sich bereits ein einfaches neuronales Netzwerk, das E-Mails für den Benutzer bereinigen würde. Und dann ... Entschuldigung, entschuldigen Sie, aber was machen die Katzen in dem Brief? Ich erinnere mich, dass ein Brief mit einem Anhang fast ein Drittel mehr wiegt als ein Anhang! Aber kann ich den Anhang verschieben?

So begann der Weg, auf dem es "viele wunderbare Entdeckungen" gab. Wenn ich wüsste ... Nun, du verstehst. Ein Tropfen Unwissenheit und Mut führt uns zum Sieg!

Also: Wir speichern Anhänge getrennt von Briefen .

Der Hauptfehler, den Sie hier machen können, besteht darin, die eml-Datei in einem Texteditor zu öffnen und zu entscheiden, dass es sich um einfachen Text handelt. Also habe ich es getan. Und war begeistert. Im Moment schreibe ich eine Batch-Datei. Die Befehlszeilenprogramme zum Extrahieren von Anhängen sind voll: github.com/erikvdv1/eml-attachments oder github.com/maiken2051/uudeview , offhand. Es gibt Probleme mit der Codierung, aber dies ist nicht das Wichtigste.

Das Wichtigste: Die Datei herauszunehmen und einen Link zu ihr zu erstellen, ist eine Kleinigkeit. Aber um diesen Link in den Originalbrief zu verschieben ... Weil es keinen Text gibt. Da ist MIME .

Ein erfahrener Leser kichert jetzt natürlich über den unglücklichen Autor. Der Autor entdeckte jedoch die Freuden des „Standards“. Das Wichtigste, was ich verstanden habe: Fliegenpilzpilze sind nicht notwendig, um in einen Berserker zu fallen.

Beispiele und Missbrauch - unter dem Spoiler:

Zeichensatz = utf-8
charset = "UTF-8"
charset = "UTF-8"
Zeichensatz = UTF-8;
Zeichensatz = "UTF-8";
Zeichensatz = "UTF-8";
Das ist ein und dasselbe.

Zeilenumbrüche in der Mitte eines Base64-Streams. Woher sie kommen, ist mir immer noch ein Rätsel.

Und umgekehrt: das Fehlen von \ r \ n \ r \ n nach dem Header-Teil.

In der Kopfzeile selbst ist die Reihenfolge der Felder auf Anfrage der linken Ferse.

Ältere Buchstaben erlauben eine Zeilenlänge von nicht mehr als 80 Zeichen, einschließlich Dienstzeichen.

Es kann Zeilenumbrüche in Dateinamen geben (im Nachrichtentext und nicht im Namen selbst).

Im Allgemeinen können Zeilenumbrüche überall auftreten, obwohl der Standardzeilenumbruch als Ende des aktuellen Parameters deklariert ist.

Der Text des Briefes selbst ist verschlüsselt. Wie genau es verschlüsselt ist, bleibt auf dem Gewissen eines bestimmten Servers, es gibt eine Reihe von Optionen (Gestank).

Und in dem Brief gibt es fast immer einen HTML-Teil. Das heißt, wenn Sie "Hallo" senden und ein Tag br oder p vorhanden ist, enthält der Brief immer ZWEI Abschnitte: mit einfachem Text und mit Tags. Und der Text ist dupliziert. Und hier haben sie Rechenleistung "gespart" ... Nur eine Menagerie mit Frankenstein.

Der Name der Dateien lautet wie folgt: Dateiname = "=? Codierung? Typ ?; Und dies geschieht wie folgt: Dateiname * 0 * = Codierung '' (STA ?? !!). Der zweite ist ein neuerer Standard, RFC5987. Der Standard gibt dies explizit an dieser Dateiname * 0 * = ENC und Dateiname = "=? das Gleiche. An diesem Ort wurde ich schließlich überzeugt, dass sie mich verspotteten. Wie es normal gehandhabt werden kann, weiß ich nicht.

Wie üblich erzielte Apple ein Tor. Sie haben im Allgemeinen einen eigenen Standard. Mit Blick auf die Zukunft führten lange Versuche, ihren Code zu verarbeiten, zur einzig richtigen Lösung: "Fehler: Apple Mail wird nicht unterstützt."

Thunderbird macht es aber. Mit Trauer kletterte ich in seine Quellen, aber ich konnte nicht den notwendigen Abschnitt in anderthalb Gigabyte Code für eine Mischung aus Python und Dialekten von Java finden. Hat in ihrem IRC geholfen, wo sie mir freundlicherweise gesagt haben, wo ich suchen soll, konnten es aber immer noch nicht finden.

Aber er verlor nicht den Mut. Lesen Sie die Dokumentation nicht @ schreiben Sie den Code und Sie sind fertig. Nein, im Ernst, ich musste etwas tun, um das Ende von MIME näher zu bringen.

Batch-Skript war nicht genug. Das Ergebnis war ein Befehlszeilenprogramm in C # und dotNet .

Das Dienstprogramm verfügt über zwei Betriebsarten:
Erstens: extrahiert nur die Anhänge. Gleichzeitig funktioniert es korrekt mit Codierungen für Windows.

Zweitens: und hier der Hauptspaß. Jetzt können wir Mail-Anhänge immer noch getrennt von Mail speichern! Das Dienstprogramm erstellt einen neuen Buchstaben anstelle des alten : Der Anhang wird ausgeschnitten, der Buchstabe wird mit UTF-Codierung in einfaches HTML umformatiert, ohne die Länge der Zeile zu begrenzen. Der Text- / Klartextabschnitt wird als Grundlage verwendet. Wenn der HTML-Abschnitt Tabellen enthält, werden diese übertragen, während die Formatierung in der Tabelle beibehalten wird. Diese Funktion funktioniert jedoch nur mittelmäßig. Am Ende des Textes des aktuellen Briefes (wenn es sich um eine Antwort oder eine Weiterleitung handelt) werden Links zu Netzwerkressourcen mit dem Pfad zu den extrahierten Dateien in den Formaten file: /// und ftp: // eingefügt.

Bild

Das System wird an mehr als 10000 Buchstaben getestet und in der vorhandenen Infrastruktur bereitgestellt.

Identifizierte Vorteile:
+ war:
Backup
Es wurde um 01:00:08 Uhr gestartet
und erfolgreich abgeschlossen 03:26:32

wurde:
Backup
Es wurde um 01:00:09 Uhr begonnen
und erfolgreich abgeschlossen 01:40:36

+ 30 +% des Speichers gespart: Dateien werden von Heavy Base64 und anderen ähnlichen Dateien in das normale Dateisystemformat verschoben, und es wurden viele Duplikate sogar in einzelnen Postfächern gefunden.

+ Die Geschwindigkeit der Verarbeitung von Postfächern durch den Server und Mailprogramme wird erhöht.

+ Verschwindet "Ich habe einen Brief von der Post geöffnet, ihn 10 Stunden lang bearbeitet und er hat nicht überlebt."

+ Sie können Quoten ablehnen.

+ Es bleibt möglich, einen Anhang in der Mail zu finden, anstatt ihn einfach in den Dateispeicher zu übertragen.

+ Gegen Ende von MIME. Bereue, Autoren!

Nachteile der Entscheidung:

- Einige Buchstaben (aber keine Anhänge) schlagen noch. Grundsätzlich nicht intern, aber bei einigen Kunden;
- In FTP brechen ständig einige Teufel.
- Nicht alle E-Mail-Clients unterstützen das Öffnen über die Datei: ///

Kontroverse Fragen:

? Apple Mail wird nicht unterstützt. Für mich - und der Buddha ist bei ihm;
? Schlagen Sie Buchstaben mit komplexer Formatierung. In der Regel handelt es sich dabei um Flyer aus der Buchung oder Werbung;
? Wenn sich der FTP-Server an einem nicht standardmäßigen Port befindet, können Zugriffsprobleme auftreten. Von einem Mail-Bot entschieden.

Auf so dornige Weise wurde das Problem gelöst.

Vielen Dank für Ihre Aufmerksamkeit!

Source: https://habr.com/ru/post/de420371/


All Articles