Fórum Root.cz

Hlavní témata => Server => Téma založeno: scientific 25. 10. 2021, 10:02:20

Název: Automatické promazávání mailů v koši
Přispěvatel: scientific 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


[/b]
[/list]

Díky moc za informaci.
Název: Re:Automatické promazávání mailů v koši
Přispěvatel: scientific 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.
Název: Re:Automatické promazávání mailů v koši
Přispěvatel: scientific 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.
Název: Re:Automatické promazávání mailů v koši
Přispěvatel: czechsys 25. 10. 2021, 10:54:08
Automaticke promazavani vsem uzivatelum vyzaduje souhlas/informovani uzivatelu/nadrizenych. To predpokladam mate vyresene.
Název: Re:Automatické promazávání mailů v koši
Přispěvatel: scientific 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.
Název: Re:Automatické promazávání mailů v koši
Přispěvatel: Ignotus 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.
Název: Re:Automatické promazávání mailů v koši
Přispěvatel: ondrej _ 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
Název: Re:Automatické promazávání mailů v koši
Přispěvatel: scientific 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.

Název: Re:Automatické promazávání mailů v koši
Přispěvatel: Ignotus 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 ?
Název: Re:Automatické promazávání mailů v koši
Přispěvatel: scientific 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 ~]#
Název: Re:Automatické promazávání mailů v koši
Přispěvatel: McFly 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?
Název: Re:Automatické promazávání mailů v koši
Přispěvatel: scientific 03. 11. 2021, 15:43:46
Přesně tak, staré zprávy tam furt visí a nemažou se.
Název: Re:Automatické promazávání mailů v koši
Přispěvatel: McFly 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ů...
Název: Re:Automatické promazávání mailů v koši
Přispěvatel: scientific 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 .
Název: Re:Automatické promazávání mailů v koši
Přispěvatel: scientific 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
Název: Re:Automatické promazávání mailů v koši
Přispěvatel: McFly 12. 11. 2021, 11:50:54
mrkni sem https://notes.sagredo.eu/en/qmail-notes-185/expunging-expired-junk-and-trash-emails-with-dovecot-124.html

Jak to chápu já, tak pošta v Koši se maže až poté, co zde trůní déle než x dnů (autoexpunge = x days). Takže pošta může mít datum přijetí do inboxu klidně 10 let dotazu, ale když ji dneska hodím do koše, tak aby byla automaticky smazána, musí v tom koší být těch dalších x dnů. ;)
Název: Re:Automatické promazávání mailů v koši
Přispěvatel: scientific 16. 11. 2021, 15:39:22
Tenhle návod jsem samozřejmě viděl, ale podle mě je v něm chyba.

Návod říká: "namespace {"
Dovecot wiki říká: "namespace inbox {"
Dovecot wiki #2 říká ještě: "protocol imap { namespace inbox {"



Už jsem stejně holt zřídil testovací server, tak dám pak vědět, jestli jsem na správnou variantu přišel.
Název: Re:Automatické promazávání mailů v koši
Přispěvatel: McFly 16. 11. 2021, 17:56:37
Já používám variantu
Kód: [Vybrat]
namespace inbox { ... } a mám už otestováno, že to funguje dle mých představ. Varianta s
Kód: [Vybrat]
protocol imap { ... } je myslím nějaká optimalizace.