Automatisches Leeren des Papierkorbs & Spam-Ordners

customhost

New Member
Hallo zusammen,

ich war auf der Suche nach einer Lösung für das automatische Leeren des Papierkorbs & Spam-Ordners nach 30 Tagen (à la GMail), um zu verhindern, dass die Mailboxen unnötig voll laufen. Ich nutze Debian Wheezy und Dovecot 2.
Vorab sei gesagt, dass sich für große Mailserver aus Performancegründen eher das Dovecot-Plugin "Expire" für die Erledigung dieser Aufgabe eignet (siehe: http://wiki2.dovecot.org/Plugins/Expire). Ich nutze allerdings nur einen kleinen Mailserver, weshalb ich mich für die einfachere Cronjob-Lösung entschieden habe, welche wie folgt aussieht:

1. Dovecot SQL anpassen
Code:
nano /etc/dovecot/dovecot-sql.conf
Die iterate_query muss auskommentiert und wie folgt angepasst, sowie [SERVER_ID] durch die ID eures jeweiligen Servers ersetzt werden.
Code:
# The iterate_query is required for the doveadm command only and works only on dovecot 2 servers.
# Do not enable it on Dovecot 1.x servers
iterate_query = SELECT email as user FROM mail_user WHERE server_id = '[SERVER_ID]'


2. Expunge-Skript mit folgendem Inhalt erstellen
Code:
nano /etc/dovecot/dovecot_expunge.sh
Code:
#!/bin/bash
#
DOVEADM="/usr/bin/doveadm";

$DOVEADM expunge -A mailbox Trash savedbefore 30d
$DOVEADM expunge -A mailbox Junk  savedbefore 30d


3. Expunge-Skript ausführbar machen
Code:
chmod +x /etc/dovecot/dovecot_expunge.sh


4. Cronjob anlegen
Code:
crontab -e
Code:
# Dovecot expunge Spam and Trash folders
00 03 * * * /etc/dovecot/dovecot_expunge.sh
Die Ausführungszeit kann selbstverständlich frei gewählt werden, z.B. für die Ausführung nur 1x im Monat.


5. Änderungen updatesicher machen
Aus der ISPConfig-Installation muss hierfür die Datei /ispconfig3_install/install/tpl/debian6_dovecot-sql.conf.master angepasst und mit folgendem Inhalt auf den Zielserver ins Verzeichnis /usr/local/ispconfig/server/conf-custom/install/ kopiert werden:
Code:
# http://wiki.dovecot.org/AuthDatabase/SQL
#
# CREATE TABLE users (
#     userid VARCHAR(128) NOT NULL,
#     password VARCHAR(64) NOT NULL,
#     home VARCHAR(255) NOT NULL,
#     uid INTEGER NOT NULL,
#     gid INTEGER NOT NULL,
#     active CHAR(1) DEFAULT 'Y' NOT NULL
# );

driver = mysql
connect = host={mysql_server_host} dbname={mysql_server_database} user={mysql_server_ispconfig_user} password={mysql_server_ispconfig_password}
default_pass_scheme = CRYPT

password_query = SELECT password FROM mail_user WHERE (login = '%u' OR email = '%u') AND disable%Ls = 'n' AND server_id = '{server_id}'
user_query = SELECT email as user, maildir as home, CONCAT('maildir:', maildir, '/Maildir') as mail, uid, gid, CONCAT('*:storage=', quota, 'B') AS quota_rule, CONCAT(maildir, '/.sieve') as sieve FROM mail_user WHERE (login = '%u' OR email = '%u') AND `disable%Ls` = 'n' AND server_id = '{server_id}'

# The iterate_query is required for the doveadm command only and works only on dovecot 2 servers.
# Do not enable it on Dovecot 1.x servers
iterate_query = SELECT email as user FROM mail_user WHERE server_id = '{server_id}'
Die Variablen wie {server_id}, {mysql_server_database} etc werden bei jedem Update automatisch durch die korrekten Werte ersetzt.

6. Fertig!

Ich hoffe diese kleine Anleitung hilft dem ein oder anderen von euch weiter.
 
Zuletzt bearbeitet:

Werbung

Top