4 dicembre 2020 Roberto Puzzanghera 2 commenti
Naturalmente vogliamo cancellare i vecchi messaggi di spam e pulire ogni tanto anche il cestino di tutti gli utenti, al fine di gestire al meglio lo spazio disco.
Se si vogliono cancellare i messaggi delle cartelle Junk e Trash che sono più vecchi di 60 giorni si può settare il namespace
in questo modo nel file 15-mailbox.conf
:
namespace { mailbox Junk { special_use = \Junk auto = subscribe autoexpunge = 60d } mailbox Trash { special_use = \Trash auto = subscribe autoexpunge = 60d } }
Quando dico "più vecchi di 60 gioirni" intendo i messaggi che sono stati spostati nella cartella Junk o Trash almento 60 giorni fa, non i messaggi salvati nella Inbox 60 giorni fa e spostati in Junk o Trash oggi.
Nel caso si abbia la necessità di agire in modo diverso sulle singole caselle di posta, dare un occhiata a questo script di Tony Fung.
Lascio intatto quanto segue per coloro che non sono soddisfatti del metodo illustrato sopra e preferiscono utilizzare uno script bash e un cronjob. Coloro che invece hanno deciso di settare autoexpunge possono passare alla pagina successiva.
Questo comando
doveadm expunge -A mailbox Junk savedbefore 60d
farà una connessione al userdb
, sql/MySQL nel nostro caso, e un ciclo su tutte (opzione -A) le mailbox degli utenti più vecchie di 60 giorni.
Sarà sufficiente creare uno script bash del genere
> nano /usr/local/dovecot/etc/dovecot_expunge.sh #!/bin/bash # DOVEADM="/usr/local/dovecot/bin/doveadm"; $DOVEADM expunge -A mailbox Trash savedbefore 90d $DOVEADM expunge -A mailbox Junk savedbefore 60d
assegnargli i privilegi di esecuzione
chmod +x /usr/local/dovecot/etc/dovecot_expunge.sh
e lanciarlo via cronjob una volta al mese o quando si vuole
> crontab -e # dovecot delete spam & trash #minute hour mday month wday command 40 3 12 * * /usr/local/dovecot/etc/dovecot_expunge.sh
Sfortunatamente, le API di vpopmail
non sembrano supportare delle funzionalità del genere. Fortuna vuole che Costel Balta ha proposto una eccellente soluzione in questo commento. Puoi scaricare il suo script qui.
#!/bin/bash # # Author: Costel Balta # Slightly modified by Roberto Puzzanghera # # Config and executables path VPOPMAIL_MYSQL_CONFIG="/home/vpopmail/etc/vpopmail.mysql" # Extract mysql params HOST=$(sed -n "/#/! s/^\(.*\)|.*|.*|.*|.*/\1/p" $VPOPMAIL_MYSQL_CONFIG) PORT=$(sed -n "/#/! s/^.*|\(.*\)|.*|.*|.*/\1/p" $VPOPMAIL_MYSQL_CONFIG) USER=$(sed -n "/#/! s/^.*|.*|\(.*\)|.*|.*/\1/p" $VPOPMAIL_MYSQL_CONFIG) PWD=$(sed -n "/#/! s/^.*|.*|.*|\(.*\)|.*/\1/p" $VPOPMAIL_MYSQL_CONFIG) DB=$(sed -n "/#/! s/^.*|.*|.*|.*|\(.*\)/\1/p" $VPOPMAIL_MYSQL_CONFIG) # dovecot details DOVEADM="/usr/local/dovecot/bin/doveadm"; # Output sql to a file that we want to run echo "USE vpopmail; select concat(pw_name,'@',pw_domain) as username from vpopmail;" > /tmp/query.sql; # Run the query and get the results (adjust the path to mysql) results=`$MYSQL -h $HOST -u $USER -p$PWD -N < /tmp/query.sql`; # Loop through each row for row in $results do echo "Purging $row Trash and Junk mailbox..." # Purge expired Trash $DOVEADM -v expunge mailbox Trash -u "$row" savedbefore 90d # Purge expired Junk $DOVEADM -v expunge mailbox Junk -u "$row" savedbefore 60d done
Questo script esegue una query mysql
selezionando tutti gli utenti dal database vpopmail
, ne salva i risultati in una variabile e itera sulle mailbox di tutti gli utenti cancellando le vecchie email dal cestino e dalla cartella Junk. Poichè questo script contiene i parametri di accesso a mysql
deve essere lanciato come root e concedere solo a root i privilegi.
Se si vuole evitare di ricevere le notifiche di quanto fatto da doveadm
nella casella postmaster, cancellare la riga che inizia con echo
, soprattutto se si hanno milioni di utenti.
cd /usr/local/dovecot/etc wget https://notes.sagredo.eu/files/qmail/dovecot_expunge/dovecot_expunge-cb mv dovecot_expire dovecot_expire.sh chown root.root dovecot_expire.sh chmod 0700 /usr/local/dovecot/etc/dovecot_expire.sh
Lanciare lo script una volta al mese o ogni quanto si vuole come un cronjob
> crontab -e # dovecot delete spam & trash #minute hour mday month wday command 40 3 12 * * /usr/local/dovecot/etc/dovecot_expire.sh
qq_temporary_problem_(#4.3.0)
2 giugno 2023 07:32
qq_temporary_problem_(#4.3.0)
1 giugno 2023 22:18
qq_temporary_problem_(#4.3.0)
31 maggio 2023 19:22
qq_temporary_problem_(#4.3.0)
31 maggio 2023 15:42
qq_temporary_problem_(#4.3.0)
31 maggio 2023 15:33
Thank you! for all the documentation, patches and support
26 maggio 2023 09:42
free(): double free detected in tcache 2: /var/www/qmail/cgi-bin/qmailadmin
17 maggio 2023 16:25
free(): double free detected in tcache 2: /var/www/qmail/cgi-bin/qmailadmin
17 maggio 2023 08:46
Tags
apache clamav dkim dovecot ezmlm fail2ban ftp guide hacks lamp letsencrypt linux linux-vserver lxc mariadb mediawiki mozilla mysql openboard owncloud patches php proftpd qmail qmail to postfix qmail-spp qmailadmin rbl roundcube rsync sieve simscan slackware solr spamassassin spf ssh ssl tcprules tex ucspi-tcp vpopmail vqadmin
Commenti
Re-iter di vpopmail
malvivent7 28 maggio 2015 16:23
Ciao Roberto, innanzitutto complimenti per l'ottima guida dettagliata e esplicativa ti scrivo per proporti un'alternativa nel reitero selettivo di vpopmail su tutti gli utenti di un particolare dominio:
Ho inserito alcune istruzioni specifiche di dovecot.
Rispondi | Permalink
grazie per il contributo!
roberto puzzanghera malvivent7 5 giugno 2015 22:36
grazie per il contributo!
Rispondi | Permalink