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
Die iterate_query muss auskommentiert und wie folgt angepasst, sowie [SERVER_ID] durch die ID eures jeweiligen Servers ersetzt werden.
2. Expunge-Skript mit folgendem Inhalt erstellen
3. Expunge-Skript ausführbar machen
4. Cronjob anlegen
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:
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.
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
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
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}'
6. Fertig!
Ich hoffe diese kleine Anleitung hilft dem ein oder anderen von euch weiter.
Zuletzt bearbeitet: