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 whoje 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átidoveadm 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 sprotocol imap { ... }je myslím nějaká optimalizace.