QMail: Mails älter als 14 Tage löschen?!

Postfix, QMail, Sendmail, Dovecot, Cyrus, Courier, Anti-Spam
basti2003
Posts: 21
Joined: 2004-12-24 00:27

QMail: Mails älter als 14 Tage löschen?!

Post by basti2003 » 2006-09-26 15:09

Hallo,

ich betreibe einen virtuellen Server (SuSE) wo QMail als Mailserver läuft.

Nun werden einige Postfächer schlicht nie abgerufen. Um ein Überlaufen zu verhindern, sollen alle Mails älter als 14 Tage gelöscht werden.

Gibt es da eine "fertige" Lösung (cron-script zum einbinden?)?
Wenn nein: reicht es die entsprechenden Dateien unter /var/qmail/mailnames/domain.de/name/Maildir/cur/ zu löschen?

Viele Grüße,
Basti

Roger Wilco
Administrator
Administrator
Posts: 6001
Joined: 2004-05-23 12:53

Re: QMail: Mails älter als 14 Tage löschen?!

Post by Roger Wilco » 2006-09-26 18:51

Basti2003 wrote:Nun werden einige Postfächer schlicht nie abgerufen. Um ein Überlaufen zu verhindern, sollen alle Mails älter als 14 Tage gelöscht werden.
Wenn das Postfächer von "Kunden" oder Mitbenutzern sind, würde ich mir das nochmal überlegen...
Basti2003 wrote:Gibt es da eine "fertige" Lösung (cron-script zum einbinden?)?
Wenn du "find" als fertige Lösung bezeichnest: Ja.
Basti2003 wrote:Wenn nein: reicht es die entsprechenden Dateien unter /var/qmail/mailnames/domain.de/name/Maildir/cur/ zu löschen?
Ja.

basti2003
Posts: 21
Joined: 2004-12-24 00:27

Re: QMail: Mails älter als 14 Tage löschen?!

Post by basti2003 » 2006-09-26 18:57

Roger Wilco wrote:
Basti2003 wrote:Nun werden einige Postfächer schlicht nie abgerufen. Um ein Überlaufen zu verhindern, sollen alle Mails älter als 14 Tage gelöscht werden.
Wenn das Postfächer von "Kunden" oder Mitbenutzern sind, würde ich mir das nochmal überlegen...
Basti2003 wrote:Gibt es da eine "fertige" Lösung (cron-script zum einbinden?)?
Wenn du "find" als fertige Lösung bezeichnest: Ja.
Basti2003 wrote:Wenn nein: reicht es die entsprechenden Dateien unter /var/qmail/mailnames/domain.de/name/Maildir/cur/ zu löschen?
Ja.
Danke für die Antwort.
Handelt sich um den Server einer Schule und die Aktion wurde mit dem Schulleiter abgesprochen, also in die Richtung kein Problem ;-)
Zumal die Mails die dort eintreffen ja auch in Kopie weitergeleitet werden, aber eben dennoch im Postfach bleiben.


Funktioniert der hier beschriebene Lösungsweg?
http://www.rootforum.org/forum/viewtop ... 243#264243

Code: Select all

`find /path/to/Maildir/Spam -ctime -30 -exec rm {} ;`

oxygen
RSAC
Posts: 2179
Joined: 2002-12-15 00:10
Location: Bergheim

Re: QMail: Mails älter als 14 Tage löschen?!

Post by oxygen » 2006-09-26 19:00

Für soetwas gibt es Quota.
Ansonsten kann z.B. courier-imap alte eMails auch automatisch löschen.

basti2003
Posts: 21
Joined: 2004-12-24 00:27

Re: QMail: Mails älter als 14 Tage löschen?!

Post by basti2003 » 2006-09-26 19:05

oxygen wrote:Für soetwas gibt es Quota.
Ansonsten kann z.B. courier-imap alte eMails auch automatisch löschen.
Aber was passiert denn, wenn in einem Postfach das vorhandene Limit von z.B. 20MB erreicht wird?
Werden dann Mails abgewiesen?

Um das zu vermeiden, möchte ich ja alte "Restbestände" regelmäßig löschen....

Viele Grüße,
Basti

PS: Größere "Bastelaktionen" habe ich am Mailserver eigentlich nicht vor, da ich froh bin, dass der so stabil und zuverlässig läuft ;-) "Never change a running system" :-D

Roger Wilco
Administrator
Administrator
Posts: 6001
Joined: 2004-05-23 12:53

Re: QMail: Mails älter als 14 Tage löschen?!

Post by Roger Wilco » 2006-09-26 19:09

Basti2003 wrote:Aber was passiert denn, wenn in einem Postfach das vorhandene Limit von z.B. 20MB erreicht wird?[
Werden dann Mails abgewiesen?
Kommt auf die konkrete Konfiguration an. Wenn das Soft-Limit erreicht ist, erhält der Benutzer eine Warnung. Wenn das Hard-Limit erreicht ist, wird die Mail nicht mehr zugestellt. Dafür ist dann aber der MTA zuständig, nicht der IMAP-Server.

basti2003
Posts: 21
Joined: 2004-12-24 00:27

Re: QMail: Mails älter als 14 Tage löschen?!

Post by basti2003 » 2006-09-26 19:12

Roger Wilco wrote:
Basti2003 wrote:Aber was passiert denn, wenn in einem Postfach das vorhandene Limit von z.B. 20MB erreicht wird?[
Werden dann Mails abgewiesen?
Kommt auf die konkrete Konfiguration an. Wenn das Soft-Limit erreicht ist, erhält der Benutzer eine Warnung. Wenn das Hard-Limit erreicht ist, wird die Mail nicht mehr zugestellt. Dafür ist dann aber der MTA zuständig, nicht der IMAP-Server.
Aber um das zu vermeiden ist es doch der einfachste Weg, die Mails einfach regelmäßig zu löschen oder?

oxygen
RSAC
Posts: 2179
Joined: 2002-12-15 00:10
Location: Bergheim

Re: QMail: Mails älter als 14 Tage löschen?!

Post by oxygen » 2006-09-26 19:42

Basti2003 wrote: Aber um das zu vermeiden ist es doch der einfachste Weg, die Mails einfach regelmäßig zu löschen oder?
Eine gelöschte Mail fällt nach dem Gesetz unter Unterdrückung. Siehe:
§ 303a StGB Datenveränderung:
(1) Wer rechtswidrig Daten (§ 202a Abs. 2) löscht, unterdrückt, unbrauchbar macht oder verändert, wird mit Freiheitsstrafe bis zu zwei Jahren oder mit Geldstrafe bestraft.
Eine Mail abzuweisen ist dagegen in Ordnung, da der Sender ja hierüber informiert wird (mailbox full).

basti2003
Posts: 21
Joined: 2004-12-24 00:27

Re: QMail: Mails älter als 14 Tage löschen?!

Post by basti2003 » 2006-09-26 20:32

Funktioniert denn techn. gesehen dieser Weg?



http://www.rootforum.org/forum/viewtop ... 243#264243

Code: Select all

`find /path/to/Maildir/Spam -ctime -30 -exec rm {} ;`
Habe so Grundkenntnisse, aber bin nun wirklich kein Profi ;-)

basti2003
Posts: 21
Joined: 2004-12-24 00:27

Re: QMail: Mails älter als 14 Tage löschen?!

Post by basti2003 » 2006-11-23 18:41

Code: Select all

# `find /var/qmail/mailnames/domain.de/username/Maildir/cur -ctime -30 -exec rm {} ;`
rm: cannot remove `/var/qmail/mailnames/domain.de/username/Maildir/cur': Is a directory
Wie muss es richtig lauten?

Roger Wilco
Administrator
Administrator
Posts: 6001
Joined: 2004-05-23 12:53

Re: QMail: Mails älter als 14 Tage löschen?!

Post by Roger Wilco » 2006-11-23 19:08

Schau dir den Parameter "-type" für find an.

basti2003
Posts: 21
Joined: 2004-12-24 00:27

Re: QMail: Mails älter als 14 Tage löschen?!

Post by basti2003 » 2006-11-23 19:17

Danke geht

basti2003
Posts: 21
Joined: 2004-12-24 00:27

Re: QMail: Mails älter als 14 Tage löschen?!

Post by basti2003 » 2006-11-23 19:20

Wie bekomme ich eine Schleife hin, dass im Ordner "mailnames/domain.de" den oben genannten Befehl für jeden benutzernamen ausführt`?

Code: Select all

`find /var/qmail/mailnames/domain.de/userA/Maildir/cur/ -type f  -ctime +30 -exec rm {} ;`
Der Befehl soll also auf UserA, UserB, UserC,.... alle angelegten Benutzer (=Ordner) angewendet werden.

lucki2
Posts: 427
Joined: 2006-10-03 01:31

Re: QMail: Mails älter als 14 Tage löschen?!

Post by lucki2 » 2006-11-23 23:07

Code: Select all

echo /var/qmail/mailnames/domain.de/*/Maildir/cur/ 

rootsvr
Posts: 538
Joined: 2005-09-02 11:12

Re: QMail: Mails älter als 14 Tage löschen?!

Post by rootsvr » 2006-11-24 16:27

Wie gesagt: Wenn ein Kunde sich irgendwann darüber beschwert das Du seine Mails gelöscht hast ist er im Recht und Du machst Dich strafbar (im schlimmsten Fall Knast für Dich). deshlab am besten wie schon gesagt Mails bei voller Mailbox nicht annehmen.

Sobald Du Mails annimmst bist Du (als Mailprovider dafür verantworlich das deine Kunde die bekommen.. und wenn der 6 Wochen in Uganda in Urlaub ist hat er trotzdem seine Unveränderten Mails vorzufinden..

Lass dir dringend von deinen Kunden schriftlich absegnen das sie ihre Mails gelöscht haben wollen, für mich wäre das ein ko Kriterium, da ich als Sammler auch noch Mails von 1998 habe)

akoch
Posts: 6
Joined: 2006-11-28 00:22

Re: QMail: Mails älter als 14 Tage löschen?!

Post by akoch » 2006-11-28 02:37

Basti2003 wrote:Wie bekomme ich eine Schleife hin, dass im Ordner "mailnames/domain.de" den oben genannten Befehl für jeden benutzernamen ausführt`?

Code: Select all

find /var/qmail/mailnames/domain.de/ -type d -mindepth 1 -maxdepth 1 -print0 | xargs -0 -iDIR find 'DIR/Maildir/cur/' -type f -ctime +30 -exec rm -f '{}' ;
Wenn du das ganze so an /etc/crontab anhängst: (ohne Zeilenumbruch)

Code: Select all

0 3 * * * root find /var/qmail/mailnames/domain.de/ -type d -mindepth 1 -maxdepth 1 -print0 | xargs -0 -iDIR find 'DIR/Maildir/cur/' -type f -ctime +30 -exec rm -f '{}' ;
verschwinden alle Mails, die älter als 30 Tage sind, jeweils nachts um 3 Uhr.

Falls alle Maildateien ein gemeinsames Präfix oder Suffix aufweisen, sollte das sicherheitshalber in den zweiten find-Befehl mit rein, etwa so: -name "msg*"

Wenn es sich um kostenlose Mail-Accounts für Schüler einer bestimmten Schule handelt, ist das Löschen alter Mails sicher nicht ungerechtgertigt. Ich würde trotzdem darauf achten, daß den Usern dieser Umstand deutlich gemacht wird. (Welcome-Mails oder bei Webmail irgendwo statisch im HTML.) Das vermeidet Frust bei den Usern und hält dir dauernde Anfragen i.s.v. "Hilfe, meine Mails lösen sich auf!" vom Leib.

lucki2
Posts: 427
Joined: 2006-10-03 01:31

Re: QMail: Mails älter als 14 Tage löschen?!

Post by lucki2 » 2006-11-28 03:25

Wie wärs damit?

Code: Select all

find /var/qmail/mailnames/domain.de/*/Maildir/cur/ -type f  -ctime +30 -exec rm {} ;

rootsvr
Posts: 538
Joined: 2005-09-02 11:12

Re: QMail: Mails älter als 14 Tage löschen?!

Post by rootsvr » 2006-11-28 10:04

ak wrote: Wenn es sich um kostenlose Mail-Accounts für Schüler einer bestimmten Schule handelt, ist das Löschen alter Mails sicher nicht ungerechtgertigt. Ich würde trotzdem darauf achten, daß den Usern dieser Umstand deutlich gemacht wird. (Welcome-Mails oder bei Webmail irgendwo statisch im HTML.) Das vermeidet Frust bei den Usern und hält dir dauernde Anfragen i.s.v. "Hilfe, meine Mails lösen sich auf!" vom Leib.
Auch da bin ich mir nicht sicher ob das nicht rechtlich bedenklich ist:
Die rechtlichen Schranken selbständiger Bekämpfungsaktionen durch die Anbieter liegen im Fernmeldegeheimnis, nach § 206 II StGB. Das Löschen oder Unterdrücken kann den Tatbestand der Datenunterdrückung nach § 303 a I StGB erfüllen.
Taggen muß man sich schriftlich (Datenveränderung) genehmigen lassen, bei löschen ist es wohl immer dann problematisch, wenn es sich nicht um rein betriebliche Emails handelt (die eh alle dem Chef gehören).

Der Postbote darf auch nicht einfach deine Briefe wegschmeissen weil dein Postkasten voll ist.

Wo kein Kläger da kein Richter, ansonsten würde ich nen Anwalt konsultieren..

Siehe auch:
http://www.decus.de/slides/sy2005/05_04/1D04.pdf Seite 9

akoch
Posts: 6
Joined: 2006-11-28 00:22

Re: QMail: Mails älter als 14 Tage löschen?!

Post by akoch » 2006-11-28 10:17

lucki2 wrote:Wie wärs damit?

Code: Select all

find /var/qmail/mailnames/domain.de/*/Maildir/cur/ -type f  -ctime +30 -exec rm {} ;
Das ist lesbarer, aber ich hielt es nicht für wünschenswert, weil sich der Ausdruck ab ca. 650 Usern in eine Shellzeile >32KB auflöst -- ein Wert, der in früheren Shells ein Limit darstellte.

Aber wie ich selbst gerade herausgefunden habe, ist dieses Limit offenbar passé...

Nennen wir mein Beispiel also euphemistisch "portabel". 8)

Ähnliches gilt für das "-f" in "rm -f" -- wer will schon, daß ein cronjob hängt oder eine unnötige Fehlermeldung ausspuckt, nur weil ein User nachts um 3 ungünstigerweise seine Mailbox aufräumt.

lucki2
Posts: 427
Joined: 2006-10-03 01:31

Re: QMail: Mails älter als 14 Tage löschen?!

Post by lucki2 » 2006-11-28 11:49

Sorry aber Dein find macht nicht viel anderes: da kommt genau das selbe auf stdout und geht dann nach xargs. Find overhead + ein Prozess mehr + x spawns hast Du durch Deine Optimierung gewonnen! Super Erfolg!
Sonst mach's über wholename.

[ich würde das sowieso nicht so, sondern über eine Schleife in einem Script machen, weil mir das zu blöd wäre irgendwelche typos zu debuggen - ehrlich! Muß zack zack gehen. ].

akoch
Posts: 6
Joined: 2006-11-28 00:22

Re: QMail: Mails älter als 14 Tage löschen?!

Post by akoch » 2006-11-28 21:22

lucki2 wrote:Sorry aber Dein find macht nicht viel anderes: da kommt genau das selbe auf stdout und geht dann nach xargs. Find overhead + ein Prozess mehr + x spawns hast Du durch Deine Optimierung gewonnen! Super Erfolg!
Für alte Shells galt: mehr als 32KB in einem Ausdruck ist ein Problem. Mehr als 32KB durch eine Pipe natürlich nicht. Unter dieser Voraussetzung macht mein Script durchaus etwas anderes.

Aber ich gestand ja bereits ein, daß dieses Limit offenbar nicht mehr existiert.

Vielleicht ist meine Formulierung nicht ganz rübergekommen: mit "euphemistisch portabel" meinte ich: "konservativ und evtl. veraltet". (Ich selbst bin eigentlich auch kein Fan von find/xargs Konstruktionen.)
Sonst mach's über wholename.
"*" die in einem wholename-Ausdruck vorkommen schlucken slashes, entsprechen also nicht 100%ig Shellsubstitution. Ein rm kann da böse ausgehen.
[ich würde das sowieso nicht so, sondern über eine Schleife in einem Script machen, weil mir das zu blöd wäre irgendwelche typos zu debuggen - ehrlich! Muß zack zack gehen. ].
Na und eben meckert er mich noch wegen overhead und x spawns an... :wink:

Aber laß uns die Spitzfindigkeiten beenden. Für den OP (so er überhaupt noch mitliest) sind ja offenbar inzwischen genug Lösungswege genannt.