Fórum Root.cz
Hlavní témata => Server => Téma založeno: 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:
#!/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.
-
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.
-
Aha, tak je to chytré a umí to --all:
#!/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.
-
Automaticke promazavani vsem uzivatelum vyzaduje souhlas/informovani uzivatelu/nadrizenych. To predpokladam mate vyresene.
-
Díky za info.
Udělal jsem toto (ještě uplně jiné řešení, než předchozí uvedené):
mailbox Trash {
special_use = \Trash
auto = subscribe
autoexpunge = 60d
}
[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.
-
[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, doveadm who je tvoj kamarát.
-
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
-
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.
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á.
https://workaround.org/ispmail/buster/filtering-out-spam-with-rspamd-2/
Udělal jsem přece přesně totéž.
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.
-
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 doveadm search -u <user> mailbox Trash ?
-
V /etc/dovecot/conf.d/15-mailboxes.conf mám toto:
mailbox Trash {
special_use = \Trash
auto = subscribe
autoexpunge = 30d
}
A požadovaný výpis:
[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 ~]#
-
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?
-
Přesně tak, staré zprávy tam furt visí a nemažou se.
-
Já mám Dovecot 2.3.8 a nastavil jsem si:
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ů...
-
Já mám Dovecot 2.2.36 (1f10bfa63)
...
# 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:
# 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 .
-
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
-
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ů. ;)
-
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 {"
- Rozumíte tomu?
- Co je z toho správně?
- Nebo když je namespace jiný, tak to můžu dát vedle sebe?
- Může vůbec být namespace deklarovaný jako prázdný?
Už jsem stejně holt zřídil testovací server, tak dám pak vědět, jestli jsem na správnou variantu přišel.
-
Já používám variantu
namespace inbox { ... } a mám už otestováno, že to funguje dle mých představ. Varianta s protocol imap { ... } je myslím nějaká optimalizace.