Naja ich hab halt ext-4 keine Ahnung, da gab es doch immer diese Ordnerlimits, die Inodes passen aber die werden nicht voll
Beiträge von Denny
-
-
Das Listing reicht aber nicht, versuch mal in den Stream zu kommen, bringt bei mir gar nichts
-
Moin, danke erstmal. Dann lasse ich es so – anders geht’s halt nicht. Dumm ist nur das Dateisystem mit so vielen kleinen Dateien und Ordnern, das macht mir etwas Sorge für die Zukunft, irgendwann in den nächsten Jahren sind die 100.000.000 Datein voll, ist schon bisschen naja
-
Moin, nene die hatte ich nur beiläufig gesehen wo ich nach fehlern gesucht hatte. Es wird keine Fehlermeldung geworfen, hab das System nochmal neu aufgesetzt gleiches Problem bei den PHP Datein also email.php. organizer.php - hier mal an bsp email.php
Code<-index.tpl-> {foreach from=$_jsFiles.li item=_file} <script type="text/javascript" src="{$_file}"></script> {/foreach}
Code<-email.php-> $tpl->addJSFile('li', 'clientlib/selectable.js'); $tpl->addJSFile('li', $tpl->tplDir . 'js/email.js');
$tpl->tplDir ist laut email.php das Standard-Template nicht das Premium-Template - also bekomme ich alle Scripte die clientseitig inkludiere /modern3/script.js aber /modern/script.js bei den serverseitig importierten.
Kannst du das Problem reproduzieren oder ist da bei mir was falsch?
Zudem sei gesagt, dass der Fehler auch schon bei der alten Version von b1gmail also vor open_source bestanden, konnte ich gerade sehen, ist scheinbar auch nie jemanden aufgefallen weil vermutlich immer alle die selben themes verwenden, wenn man aber jetzt ein Theme hat welches eine andere email.js benötigt macht das Theme nicht das was es soll
-
bei mir läuft clamav auch nicht
(filters.inc.php:169) Connection to ClamAV at <127.0.0.1:3310> failed (111, Verbindungsaufbau abgelehnt)
ich stosse ihn dann immer jeden tag manuel an bis es gefixt ist
in der konsole in den ordner data gehen und clamscan -r --remove eingeben
oder im haupverzeichniss der domain clamscan -r --remove einegeben dann wir der komplette domain inhalt überprüft
vor dem --remove erst clamscan -r eigeben dann entscheiden ob es gelöscht werden soll
ich übernehme keine haftung für schäden wenn ihr den befehl in der konsole ausführt.
Moin,
ja, das ist wirklich keine optimale Lösung. Besser als gar nichts, aber wenn man bedenkt, dass die Mails bei mir live reinkommen, ist das nicht wirklich sinnvoll. Mein lokaler Scanner nimmt die Sachen zwar beim POP3-Abruf raus, aber eigentlich dürften die Mails gar nicht erst bis zum Postfach durchkommen.
Werde mir daher wohl über kurz oder lang Proxmox Mail Gateway anschauen – gefühlt wird das Problem nämlich immer schlimmer.
-
sshfs scheint kein Locking zu unterstützen, daher kann das gefährlich werden. Ich würde es nicht tun.
Mein neues Setup
- Mailserver + Storage → laufen auf einer Instanz
- MariaDB + Apache2 (Webmail) → laufen auf einer separaten Instanz
- Verbindung über internes 10G-Netz
Nun meine Überlegung:
War es nicht so, dass Apache/Webmail eigentlich nichts schreibt, sondern nur liest, und die gesamte Speicherarbeit (Mails ablegen, verschieben, löschen, Anhänge speichern usw.) sowieso vom Mailserver erledigt wird?
Wenn das stimmt, dann wäre die Aufteilung ja eigentlich unproblematisch – oder habe ich hier etwas übersehen?Selbst wenn ein User im Webmail eine Mail verschickt, geht das doch direkt an den Mailserver, der sie dann abspeichert und verarbeitet, korrekt?
Hintergrund:
Ich überlege gerade, Maildaten im SQLite-BLOB-Format auf dem Storage zu halten, da die Speicherplatzeinsparung enorm ist. Wir reden hier über ca. 30 TB Maildaten, das wäre also ein echter Gamechanger.Frage:
- Gibt es aus eurer Sicht eine Alternative, die ähnlich effizient wäre?
- Oder spricht etwas dagegen, das so zu lassen, wie es ist?
-
Moin,
ich erinnere mich, dass es bei b1gMail 7.4 den Hinweis gab, die Speichermethode „eine Datei pro Postfach“ (ein Objekt pro Nutzer) nicht auf externem Storage zu betreiben. Gilt das noch?
Ich möchte das nun erstmals über SSHFS einsetzen. Testweise lief es früher bereits, ohne dass mir Probleme aufgefallen sind.Gern würde ich dennoch besprechen, ob ich das so weiterlaufen lassen sollte. Seit der Umstellung auf SSD sind die Suchzeiten deutlich gesunken, allerdings habe ich rund 50 Mio. E-Mails im Bestand.
-
Frage: Das Premium Plugin sollte doch in Bezug auf die Pfade gefixt worden sein, leider bekomm ich immer noch nur /modern/email.js obwohl das Premium Theme /modern3 heißt
hab auch nur ne Warning die vermutlich damit nichts zu tun hat:
[06-Aug-2025 11:22:05 Europe/Berlin] PHP Warning: Undefined variable $maxORder in /var/www/web0/htdocs/plugins/premiumaccount.plugin.php on line 2729
[06-Aug-2025 11:22:05 Europe/Berlin] PHP Warning: Undefined variable $maxORder in /var/www/web0/htdocs/plugins/premiumaccount.plugin.php on line 2729
[06-Aug-2025 11:22:05 Europe/Berlin] PHP Warning: Undefined variable $maxORder in /var/www/web0/htdocs/plugins/premiumaccount.plugin.php on line 2729
[06-Aug-2025 11:22:05 Europe/Berlin] PHP Warning: Undefined variable $maxORder in /var/www/web0/htdocs/plugins/premiumaccount.plugin.php on line 2729edit:
Hab das System jetzt sogar nochmal komplett neu gemacht und immer noch der falsche template Pfad, auch bei Organizer
-
Moin,
mal ganz ehrlich – ich wäre echt dafür, dass der b1gMailServer eine Funktion bekommt, mit der man solche Sachen wie „SPF none“ oder auch gefälschte Absender konsequent blocken kann.
Gerade jetzt, wo so viele Fake-Mails und Erpresser-Müll unterwegs sind, wäre das wirklich ein Segen.Mir würde schon ein Schalter reichen wie:
„E-Mails ohne SPF-Eintrag ablehnen“
… oder dass man zumindest eine eigene Policy setzen kann, was mit solchen Mails passieren soll.Wer sieht das noch so?
Vielleicht liest ja jemand vom Entwicklerteam mit, oder gibt’s schon einen Trick, wie man das halbwegs sauber in b1gMailServer abbilden kann?Fände das echt hilfreich, bevor ich weiter an irgendwelchen Workarounds schraube oder wieder alles per Hand filtern muss…
Grüße
Norbert
ich bekomme aktuell viele X-Mozilla-Status: 0001
X-Mozilla-Status2: 00000000
Return-Path: <> ?
Received: from [10.88.0.3] (115.193.32.34.bc.googleusercontent.com [34.32.193.115])
by mail.domain.de (b1gMailServer) with ESMTP id 237E83A8
for <domain@domain.de>; Tue, 24 Jun 2025 18:47:30 +0200 (CEST)
Received-SPF: None ?
identity=; client-ip=34.32.193.115;
helo=[10.88.0.3]
Content-Type: multipart/related; boundary="===============3329146821057136785=="
MIME-Version: 1.0
From: "emailn.de" <no-reply@domain.de>
To: emailn@emailn.de
Subject: =?utf-8?q?Failure_Delivery_Messages_domain=40domain=2Ede?=
X-Priority: 2
X-Antivirus: Avast (VPS 250625-2, 25.6.2025), Inbound message
X-Antivirus-Status: Clean
--===============3329146821057136785==
Content-Type: text/html; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: base64Der Inhalt kann nicht angezeigt werden, da Sie keine Berechtigung haben, diesen Inhalt zu sehen. -
Betreibe einige Eigenentwicklungen und da prüfe ich beim Login immer ob es von der IP bereits ein Login gab und falls nicht informiere ich die Admin E-Mail-Adresse darüber, wäre eine nette Zusatz Funktion bei der man wenigstens informiert wird wenn doch ein Login stattgefunden hat von einer IP die man nicht kennt (wäre evtl. auch etwas für den LI bereich). Weiter müsste man weg von den SIDs kommen die immer in der URL auftauchen, gibt da elegantere varianten und immer mit dem Backend gegenprüfen anhand einer id / public ip etc... ob der User immer noch der User ist der sich Angemeldet hat.
An so etwas arbeite ich auch allerdings ist das mit IP schwierig, da braucht man viele Daten und die IP ändern sich ständig, man könnte das nach Netz machen aber das wars dann schon. Geräte-Fingerprinting und Cookie-Sessions ist so mein Ansatz auch nochmal eine Überprüfung über 2FA oder Mailbestätigung machen wenns abweicht
-
Oha, vielen Dank für diesen wichtigen Hinweis. Bin immer davon ausgegangen, dass auch im Adminpanel mindestens eine Cookie-Sperre aktiv ist (oder war sie deaktiviert?).
sollte Pflicht sein, das ist krass Oo
-
Moin zusammen,
ich habe eine Frage zur Dateianhang- bzw. Upload-Filterung:
In der Webdisk meines Systems kann ich ja verbotene Dateiendungen definieren – das funktioniert dort auch zuverlässig. Neuerdings kommen aber Schadcodes über SVG-Dateien, und ich möchte diese auch bei E-Mails blockieren.
Allerdings bekomme ich SVG-Anhänge nicht zuverlässig geblockt, und mein bisher genutzter ClamAV-Scanner funktioniert seit dem Server-Upgrade auf Ubuntu 24.04 nicht mehr. Eine saubere Lösung über ClamAV ist derzeit also nicht möglich.
Gab es nicht auch im Mailbereich des Systems eine Funktion, um bestimmte Dateiendungen oder MIME-Typen zu blockieren (wie z. B. .exe, .bat etc.)? Oder war das nur für die Webdisk gedacht?
Falls jemand einen Tipp hat, wie ich das systemweit (z. B. über ein Plugin oder eine zentrale Prüfung) lösen kann, wäre ich dankbar. Alternativ auch gern Hinweise, wie man ClamAV unter 24.04 wieder stabil zum Laufen bekommt.
Viele Grüße
Norbert
-
Die Meldung deutet darauf hin, dass die .msg-Datei der jeweiligen E-Mail im data-Ordner entweder fehlt oder aus anderen Gründen nicht geöffnet werden kann (Rechte, etc).
danke für den Hinweis, das war in der tat der Fall
-
Ich habe auf meinem Testsystem ein paar alte Mails die ich nicht mehr lesen kann, das ist der selbe Fehler wie der, der auf meinem Produktivsystem in den Logs ausgegeben wird. Wenn ich neue Mails erstelle, dann sind diese auch wieder lesbar, es handelt sich um Mails die ich selbst verfasst habe vor dem Update
Fatal error: Uncaught TypeError: ftell(): Argument #1 ($stream) must be of type resource, bool given in /usr/www/users/sendeq/serverlib/mailparser.inc.php:373 Stack trace: #0 /usr/www/users/sendeq/serverlib/mailparser.inc.php(373): ftell() #1 /usr/www/users/sendeq/serverlib/common.inc.php(1663) : eval()'d code(1): BMMailParser_Part->__construct() #2 /usr/www/users/sendeq/serverlib/common.inc.php(1663): eval() #3 /usr/www/users/sendeq/serverlib/mailparser.inc.php(528): _new() #4 /usr/www/users/sendeq/serverlib/common.inc.php(1663) : eval()'d code(1): BMMailParser->__construct() #5 /usr/www/users/sendeq/serverlib/common.inc.php(1663): eval() #6 /usr/www/users/sendeq/serverlib/mail.class.php(105): _new() #7 /usr/www/users/sendeq/email.read.php(61): BMMail->Parse() #8 {main} thrown in /usr/www/users/sendeq/serverlib/mailparser.inc.php on line 373 -
Hi,
ich weiß, dass der Thread etwas unübersichtlich geworden ist – mir selbst ist der genaue Zusammenhang auch nicht ganz klar. Ich habe den kompletten Ablauf bereits mit ChatGPT durchgearbeitet, verschiedene Stellen überprüft und dabei festgestellt, dass $stream den Wert false zurückgibt. Allerdings gibt es in diesem Fall keine erkennbare Fehlerrückgabe.
Ich hatte bereits vorher eine Debug-Ausgabe eingebaut, um den Fehler einzugrenzen. Dabei stellte sich heraus, dass der Stream einfach leer war. Nachdem ich einen Fix eingebaut hatte, funktionierte plötzlich der Login-Bereich nicht mehr – und an der Stelle habe ich dann aufgegeben um nicht noch mehr kaputt zu machen, es ist halt ne Produktiv-Seite, ist halt Mist daran was zu ändern.
Der Inhalt kann nicht angezeigt werden, da Sie keine Berechtigung haben, diesen Inhalt zu sehen. -
ist das dann gleichzeitig die neueste Version, geht vermutlich erst wenn der Server das untertsützt, ich habe aktuell die Ubuntu 22.04 und 24.04 am laufen, müsste da eigentlich gehen oder?
-
Was wäre denn, wenn man einfach ein Layout macht was beides unterstützt, dann wäre die mobile Seite obsolet
-
Problem bleibt bestehen, wenn ich den Fehler behebe hat das direkten Einfluss auf das Template, er erzeugt nach dem Login eine Schleife, verstehe das alles nicht auf jedenfall ist die error log voll damit, 1500 Fehler pro Tag
Code
Alles anzeigen[07-Jun-2025 10:43:45 UTC] PHP Fatal error: Uncaught TypeError: ftell(): Argument #1 ($stream) must be of type resource, false given in /var/www/web0/htdocs/serverlib/mailparser.inc.php:373 Stack trace: #0 /var/www/web0/htdocs/serverlib/mailparser.inc.php(373): ftell() #1 /var/www/web0/htdocs/serverlib/common.inc.php(1663) : eval()'d code(1): BMMailParser_Part->__construct() #2 /var/www/web0/htdocs/serverlib/common.inc.php(1663): eval() #3 /var/www/web0/htdocs/serverlib/mailparser.inc.php(528): _new() #4 /var/www/web0/htdocs/serverlib/common.inc.php(1663) : eval()'d code(1): BMMailParser->__construct() #5 /var/www/web0/htdocs/serverlib/common.inc.php(1663): eval() #6 /var/www/web0/htdocs/serverlib/mail.class.php(105): _new() #7 /var/www/web0/htdocs/serverlib/mail.class.php(171): BMMail->Parse() #8 /var/www/web0/htdocs/serverlib/mailbox.class.php(1822): BMMail->IsSigned() #9 /var/www/web0/htdocs/plugins/b1gmailserver.plugin.php(1421): BMMailbox->GetMail() #10 /var/www/web0/htdocs/plugins/b1gmailserver.plugin.php(1365): B1GMailServerAdmin->ProcessEventQueue() #11 /var/www/web0/htdocs/serverlib/plugin.class.php(1392): B1GMailServerAdmin->OnCron() #12 /var/www/web0/htdocs/serverlib/common.inc.php(2973): BMPluginInterface->callFunction() #13 /var/www/web0/htdocs/cron.php(139): ModuleFunction() #14 {main} thrown in /var/www/web0/htdocs/serverlib/mailparser.inc.php on line 373
-
Da mir persönlich die Login-Sicherheit und 2 Faktor wichtig sind, habe ich mir überlegt, wie man das global für alle Dienste gestalten kann.
Daraus entwickle ich mir die Idee einer Tokenverwaltung.
Die Tabelle bm60_users_token sieht dabei so aus
Der Inhalt kann nicht angezeigt werden, da Sie keine Berechtigung haben, diesen Inhalt zu sehen. Dort soll man die Tokens und Secrets ablegen können. type steht für die Art des Dienstes z.B. pop3,imap,smtp,caldav,webdav,zpush usw...
Einstellung in b1gMailServer.
Der Inhalt kann nicht angezeigt werden, da Sie keine Berechtigung haben, diesen Inhalt zu sehen. Da man nicht alle Dienste per 2FA absichern kann, ist eine Absicherung pro Dienst hilfreich.
Richtig gute und vor allem wichtige Idee!
Wäre der Login dann ausschließlich über den Token möglich? Das wäre tatsächlich der beste Weg – ein Passwort gar nicht mehr zu akzeptieren verhindert effektiv, dass Bots mit gehackten Passwörtern über POP3 oder IMAP Zugriff erlangen.Außerdem fände ich es gut, wenn jemand das 2FA-Plugin so anpassen könnte, dass 2FA auch verpflichtend (gruppenweise) aktiviert werden kann! Ich glaube, genau da liegt aktuell das größte Manko.
-
Wenn wir beim Thema Backup sind: Die zentrale Speicherung aller Mails bzw. Mail-Rumpfdaten in 1 Tabelle ({pre_mails) ist fatal. Das sollte man im Zuge der npassung ebenfalls ändern.
Meine MySQL-Datenbank ist mittlerweile rund 300 GB groß, und allein die Mail-Tabelle umfasst ca. 160 GB. Das macht den Betrieb teuer, was RAM angeht, und wirkt sich massiv auf die Performance aus. Jede Operation auf dieser Tabelle ist extrem zeitaufwendig – man kann nicht einfach mal eben etwas ändern oder umstrukturieren, weil alles im laufenden Betrieb passieren muss.
Sharding wurde hier erwähnt – das wäre grundsätzlich sinnvoll, aber in einem gewachsenen System mit zentraler Tabellennutzung nicht ohne Weiteres umsetzbar.
Was man sich aber überlegen könnte:
- Eine Archivfunktion im Adminbereich, die automatisch pro Jahr die Mails in eigene Tabellen auslagert (mails_2023, mails_2024, etc.). Neue Mails landen dann nur in der aktuellen Tabelle. Ältere Daten bleiben lesbar, belasten aber nicht mehr jede Abfrage.
- Alternativ oder zusätzlich: Partitionierung nach Datum oder Benutzergruppen. Das reduziert die Menge an Daten, die bei einer Query gescannt wird, deutlich.
- Sharding langfristig denkbar – etwa durch Aufteilung nach Usern auf verschiedene Tabellen oder Datenbanken –, aber das wäre ein größerer Umbau.
Aktuell suche ich nach Möglichkeiten, wie sich das Ganze im laufenden Betrieb entschärfen lässt. Jede kleine Optimierung hilft, denn bei solchen Datenmengen zählt wirklich jede Sekunde.