Automatické promazávání mailů v koši

Automatické promazávání mailů v koši
« kdy: 25. 10. 2021, 10:02:20 »
Ahoj všem,

používáme ISPConfig (Dovecot + Roundcube). Chtěli bychom promazávat zprávy z koše, které jsou starší 30 dní a zprávy ze složky SPAM, které jsou starší 14 dní.

Návod vytvořený zřejmě komunitou ISPConfigu funguje přes nějaký tmpreaper: https://www.howtoforge.com/automatic-cleaning-of-trash-and-or-junk-folders-with-ispconfig-with-roundcube-plus-tmpreaper-tmpwatch

Na foru ispconfigu pak jiný člen komunity sdílel skript, kterému není potvrzena funkčnost:

Kód: [Vybrat]
#!/bin/bash
# this script deletes junk and trash mail older than +(days)

MAILDIRS=$(find /var/vmail/*/*/Maildir/ -maxdepth 0 -type d)
for basedir in $MAILDIRS; do
for dir in .Trash .Junk ; do
for dir2 in cur new; do
[ -e "$basedir/$dir/$dir2" ] && (
#echo "Processing $basedir/$dir/$dir2..."
#echo "Clean $dir - deleting from $dir2"
if [ "$dir" = ".Trash" ]; then
find "$basedir/$dir/$dir2/" -type f -mtime +28 -delete
else
find "$basedir/$dir/$dir2/" -type f -mtime +7 -delete
fi
)
done
done
done


    • Myslíte, že ten easy skript z fora může fungovat?
    • Je potřeba to řešit přes ten tmpreaper?
    • Opravdu stačí jen najít a smazat soubory z Maildir/.trash?
    • Neumí to třeba sám dovecot, že by stačilo jen zapnout nějakou fukci? :-)
    [/b]
    [/list]

    Díky moc za informaci.


    Re:Automatické promazávání mailů v koši
    « Odpověď #1 kdy: 25. 10. 2021, 10:14:19 »
    Ještě jsem našel command: doveadm expunge -u testuser@sv.dev mailbox INBOX.Trash SENTBEFORE 1-Jan-2011
    Ale furt to není ono, tohle je jednorázové řešení, které bych musel naprogramovat, aby fungoval přes všechny mailboxy a konfigurovat ho jako automatickou ulohu pres CRON. Ale zatím se mi to líbí nejvíce, protože si nejsem jistý, zda je vhodné jen z FS složky odstraňovat soubory, přijde mi to jako nesystémové řešení. Nevím, či je to takto správně. Zatímco ten doveadm je API, u kterého je jistota, že to smaže korektně. Alespoň na rozdíl od commandu find a exec rm.

    Re:Automatické promazávání mailů v koši
    « Odpověď #2 kdy: 25. 10. 2021, 10:20:49 »
    Aha, tak je to chytré a umí to --all:

    Kód: [Vybrat]
    #!/bin/bash
    #
    DOVEADM="/usr/local/dovecot/bin/doveadm";

    $DOVEADM expunge -A mailbox Trash savedbefore 90d
    $DOVEADM expunge -A mailbox Junk  savedbefore 60d

    Teď jen napíši Ansible roli a je to, toto řešení se mi už líbíí, takže asi vyřešeno.

    Re:Automatické promazávání mailů v koši
    « Odpověď #3 kdy: 25. 10. 2021, 10:54:08 »
    Automaticke promazavani vsem uzivatelum vyzaduje souhlas/informovani uzivatelu/nadrizenych. To predpokladam mate vyresene.

    Re:Automatické promazávání mailů v koši
    « Odpověď #4 kdy: 27. 10. 2021, 10:02:58 »
    Díky za info.

    Udělal jsem toto (ještě uplně jiné řešení, než předchozí uvedené):

    Kód: [Vybrat]
    mailbox Trash {
        special_use = \Trash
        auto = subscribe
        autoexpunge = 60d
    }

    Kód: [Vybrat]
    [root@server cur]# vi /etc/dovecot/conf.d/15-mailboxes.conf # pridal jsem subscribe=auto a autopunge=30d pro trash, viz výše
    [root@server cur]# systemctl restart dovecot
    [root@server cur]# find /var/vmail/domain.cz/info/Maildir/.Trash/cur -mtime +30 | wc -l
    2604
    [root@server cur]#

    Někde, myslím, že v dokumentaci dovecot2 jsem četl, že by se tahle rutina měla snad spustit po odpojení všech uživatelů, ale pochybuji, že přes noc byl někdo připojen. Maily starší 30d se z košů nepromazali.

    Netušíte prosím někdo, co dělám špatně?

    Děkuji.


    Re:Automatické promazávání mailů v koši
    « Odpověď #5 kdy: 27. 10. 2021, 10:30:09 »
    [root@server cur]# find /var/vmail/domain.cz/info/Maildir/.Trash/cur -mtime +30 | wc -l

    Ak sa nemýlim, tak ten príkaz nájde všetky súbory staršie ako 30 minút.

    Někde, myslím, že v dokumentaci dovecot2 jsem četl, že by se tahle rutina měla snad spustit po odpojení všech uživatelů, ale pochybuji, že přes noc byl někdo připojen. Maily starší 30d se z košů nepromazali.

    Po odpojení nie všetkých, ale konkrétneho užívateľa. Ale keď chceš pochyby nahradiť istotou,
    Kód: [Vybrat]
    doveadm who je tvoj kamarát.

    Re:Automatické promazávání mailů v koši
    « Odpověď #6 kdy: 27. 10. 2021, 12:36:48 »
    Pozri si tento link a tam sekciu Autoexpunge

    https://workaround.org/ispmail/buster/filtering-out-spam-with-rspamd-2/

    Je tam aj uvedny link na Dovecot

    https://wiki.dovecot.org/MailboxSettings

    Re:Automatické promazávání mailů v koši
    « Odpověď #7 kdy: 27. 10. 2021, 13:20:34 »
    Citace
    Ak sa nemýlim, tak ten príkaz nájde všetky súbory staršie ako 30 minút.

    Mýlíš, manuál říká, že to jsou dny.

    Citace
    doveadm who

    Nikdo není připojen, mělo se to tedy promazat u všech. U sledované schránky se to ale nepromazalo, je na serveru jediná.

    Citace
    https://workaround.org/ispmail/buster/filtering-out-spam-with-rspamd-2/

    Udělal jsem přece přesně totéž.

    Citace
    https://wiki.dovecot.org/MailboxSettings

    Ano, to je mnou zmíněná stránka, na které jsem byl též.

    Shrnutí: Udělal jsem vše dle návodů, ale stejně to staré zprávy z koše nemaže. systemctl status dovecot nepíše žádné errrory, ani warningy

    Máte prosím někdo nějaké tipy, jak ověřit v čem to vězí? Děkuji.


    Re:Automatické promazávání mailů v koši
    « Odpověď #8 kdy: 27. 10. 2021, 15:55:48 »
    Citace
    Ak sa nemýlim, tak ten príkaz nájde všetky súbory staršie ako 30 minút.

    Mýlíš, manuál říká, že to jsou dny.

    Mea culpa :(

    Máte prosím někdo nějaké tipy, jak ověřit v čem to vězí? Děkuji.

    Len pre istotu, čo vráti
    Kód: [Vybrat]
    doveadm search -u <user> mailbox Trash ?

    Re:Automatické promazávání mailů v koši
    « Odpověď #9 kdy: 27. 10. 2021, 18:48:58 »
    V  /etc/dovecot/conf.d/15-mailboxes.conf mám toto:
    Kód: [Vybrat]
      mailbox Trash {
        special_use = \Trash
        auto = subscribe
        autoexpunge = 30d
      }

    A požadovaný výpis:
    Kód: [Vybrat]
    [root@server ~]# doveadm search -u info@domain.example  mailbox Trash| tail    ca10f824813f5e5e632f0000f18aeb55 2643
    ca10f824813f5e5e632f0000f18aeb55 2644
    ca10f824813f5e5e632f0000f18aeb55 2645
    ca10f824813f5e5e632f0000f18aeb55 2646
    ca10f824813f5e5e632f0000f18aeb55 2647
    ca10f824813f5e5e632f0000f18aeb55 2648
    ca10f824813f5e5e632f0000f18aeb55 2649
    ca10f824813f5e5e632f0000f18aeb55 2650
    ca10f824813f5e5e632f0000f18aeb55 2651
    ca10f824813f5e5e632f0000f18aeb55 2652
    [root@server ~]#

    McFly

    • *****
    • 560
      • Zobrazit profil
      • E-mail
    Re:Automatické promazávání mailů v koši
    « Odpověď #10 kdy: 27. 10. 2021, 18:58:06 »
    For LMTP this happens when the user's mail delivery is finished.
    For IMAP and POP3 this happens after the client is already disconnected.

    Takže když hodíš něco do Koše, nesmažou se starší věci?
    « Poslední změna: 27. 10. 2021, 19:02:03 od McFly »

    Re:Automatické promazávání mailů v koši
    « Odpověď #11 kdy: 03. 11. 2021, 15:43:46 »
    Přesně tak, staré zprávy tam furt visí a nemažou se.

    McFly

    • *****
    • 560
      • Zobrazit profil
      • E-mail
    Re:Automatické promazávání mailů v koši
    « Odpověď #12 kdy: 03. 11. 2021, 17:00:51 »
    Já mám Dovecot 2.3.8 a nastavil jsem si:

    Kód: [Vybrat]
    namespace inbox {
      mailbox Trash {
        special_use = \Trash
        auto = subscribe
        autoexpunge = 10d
      }
    ...

    Po restart Dovecotu jsem kliknul na Koš v Thunderbirdu a starší pošta zmizela. Před restartem tam byly dva maily starší 10 dnů...

    Re:Automatické promazávání mailů v koši
    « Odpověď #13 kdy: 04. 11. 2021, 07:41:16 »
    Já mám Dovecot 2.2.36 (1f10bfa63)

    Kód: [Vybrat]
    ...
    # NOTE: Assumes "namespace inbox" has been defined in 10-mail.conf.
    namespace inbox {
      # These mailboxes are widely used and could perhaps be created automatically:
      mailbox Drafts {
        special_use = \Drafts
      }
      mailbox Junk {
        special_use = \Junk
      }
      mailbox Trash {
        special_use = \Trash
        auto = subscribe
        autoexpunge = 30d
      }

      # For \Sent mailboxes there are two widely used names. We'll mark both of
      # them as \Sent. User typically deletes one of them if duplicates are created.
      mailbox Sent {
    ...

    Všiml jsem si ale řádku:

    Citace
    # NOTE: Assumes "namespace inbox" has been defined in 10-mail.conf.

    Také jsem si všiml, že zmiňovaný soubor /etc/dovecot/conf.d/10-mailboxes.conf neexistuje .

    Re:Automatické promazávání mailů v koši
    « Odpověď #14 kdy: 04. 11. 2021, 09:04:32 »
    Co to plácám, nevím kde jsem vzal, 10-mailboxes.conf, má to být 10-mail.conf a ten tu mám, takže toto je v pořádku.

    Nicméně konfiguraci mám stejnou jako @McFly, ale s tím rozdílem, že mě to prostě tu konfiguraci ignoruje a nic to nemaže... :-D