[Dovecot] quote warning not being triggered (yet again)

Ralf Hildebrandt Ralf.Hildebrandt at charite.de
Thu Nov 26 15:20:05 EET 2009


I'm using 1.2.6 with the managesieve patch and maildir++ quotas (via
the maildirsite file). Again, I found that the quota warning is not
bering triggered.

Testing via:
smtp-source -4 -f sender at charite.de -t recipient at charite.de -m 1 -l 1000000 -C 1 mail.charite.de:submission

recipient at charite.de being a mailbox with a 10.0 MB limit.
I attached dovecot -n and the quota warn script.

-- 
Ralf Hildebrandt
  Geschäftsbereich IT | Abteilung Netzwerk
  Charité - Universitätsmedizin Berlin
  Campus Benjamin Franklin
  Hindenburgdamm 30 | D-12203 Berlin
  Tel. +49 30 450 570 155 | Fax: +49 30 450 570 962
  ralf.hildebrandt at charite.de | http://www.charite.de
	    
-------------- next part --------------
# 1.2.6: /usr/local/etc/dovecot.conf
# OS: Linux 2.6.30-1-686-bigmem i686 Debian squeeze/sid 
protocols: imap imaps pop3s managesieve
ssl_cert_file: /etc/ssl/certs/postamt.pem
ssl_key_file: /etc/ssl/private/postamt.key
disable_plaintext_auth: no
version_ignore: yes
login_dir: /usr/local/var/run/dovecot/login
login_executable(default): /usr/local/libexec/dovecot/imap-login -D
login_executable(imap): /usr/local/libexec/dovecot/imap-login -D
login_executable(pop3): /usr/local/libexec/dovecot/pop3-login -D
login_executable(managesieve): /usr/local/libexec/dovecot/managesieve-login
login_process_per_connection: no
login_process_size: 0
login_processes_count: 64
login_max_processes_count: 2048
login_max_connections: 512
max_mail_processes: 2048
mail_max_userip_connections: 2048
verbose_proctitle: yes
mail_location: maildir:~/Maildir
fsync_disable(default): yes
fsync_disable(imap): yes
fsync_disable(pop3): yes
fsync_disable(managesieve): no
maildir_copy_preserve_filename: yes
maildir_very_dirty_syncs: yes
mail_drop_priv_before_exec: yes
mail_executable(default): /usr/local/libexec/dovecot/imap
mail_executable(imap): /usr/local/libexec/dovecot/imap
mail_executable(pop3): /usr/local/libexec/dovecot/pop3
mail_executable(managesieve): /usr/local/libexec/dovecot/managesieve
mail_plugins(default): quota imap_quota trash mail_log fts fts_squat zlib autocreate
mail_plugins(imap): quota imap_quota trash mail_log fts fts_squat zlib autocreate
mail_plugins(pop3): quota mail_log
mail_plugins(managesieve): 
mail_plugin_dir(default): /usr/local/lib/dovecot/imap
mail_plugin_dir(imap): /usr/local/lib/dovecot/imap
mail_plugin_dir(pop3): /usr/local/lib/dovecot/pop3
mail_plugin_dir(managesieve): /usr/local/lib/dovecot/managesieve
mail_log_max_lines_per_sec: 0
imap_client_workarounds(default): outlook-idle netscape-eoh
imap_client_workarounds(imap): outlook-idle netscape-eoh
imap_client_workarounds(pop3): 
imap_client_workarounds(managesieve): 
pop3_lock_session(default): no
pop3_lock_session(imap): no
pop3_lock_session(pop3): yes
pop3_lock_session(managesieve): no
pop3_uidl_format(default): %08Xu%08Xv
pop3_uidl_format(imap): %08Xu%08Xv
pop3_uidl_format(pop3): %v-%u
pop3_uidl_format(managesieve): %08Xu%08Xv
pop3_client_workarounds(default): 
pop3_client_workarounds(imap): 
pop3_client_workarounds(pop3): outlook-no-nuls oe-ns-eoh
pop3_client_workarounds(managesieve): 
namespace:
  type: private
  separator: .
  prefix: INBOX.
  inbox: yes
  list: yes
  subscriptions: yes
lda:
  fsync_disable: no
  postmaster_address: postmaster at charite.de
  mail_plugins: sieve quota trash mail_log fts fts_squat
  syslog_facility: local4
auth default:
  mechanisms: plain login
  cache_size: 64
  master_user_separator: *
  debug: yes
  debug_passwords: yes
  passdb:
    driver: passwd-file
    args: /usr/local/etc/dovecot.masterusers
    pass: yes
    master: yes
  passdb:
    driver: shadow
  passdb:
    driver: pam
    args: cache_key=%u dovecot
  userdb:
    driver: passwd
  socket:
    type: listen
    client:
      path: /var/spool/postfix/private/auth
      mode: 432
      user: postfix
      group: postfix
plugin:
  fts: squat
  quota: maildir
  quota_rule: Trash:storage=2048M
  quota_warning: storage=90%% /usr/local/scripts/quota-warning 90
  quota_warning2: storage=95%% /usr/local/scripts/quota-warning 95
  quota_warning3: storage=99%% /usr/local/scripts/quota-warning 99
  trash: /usr/local/etc/dovecot-trash.conf
  autocreate: Trash
  autocreate2: spam
  autocreate3: Sent
  autocreate4: Drafts
  autosubscribe: Trash
  autosubscribe2: spam
  autosubscribe3: Sent
  autosubscribe4: Drafts
  sieve: ~/.dovecot.sieve
  sieve_dir: ~/sieve
-------------- next part --------------
#!/bin/sh
#
# Should be run by the Local Delivery Agent
# Expects USER and HOME to be set as an environment variable
#

SCRIPT_NAME="quota-warning"

MAIL_TO="${USER}"
MAIL_FROM="postmaster at charite.de"
MAIL_QUOTA_PERCENT=$1
MAIL_SUBJECT="Ihre Mailbox ist zu "$1"% voll!"

DIR_MAILDIR_NEW="${HOME}/Maildir/new"
DIR_MAILDIR_TMP="${HOME}/Maildir/tmp"

BIN_CAT="/bin/cat"
BIN_DATE="/bin/date"
BIN_HOSTNAME="/bin/hostname"
BIN_LOGGER="/usr/bin/logger"
BIN_MV="/bin/mv"
BIN_STAT="/usr/bin/stat"

#set -x 

# check for user
[ "x${MAIL_TO}" = "x" ] && \
	${BIN_LOGGER} -p mail.error -t "${SCRIPT_NAME}" \
		"error=no user set" && exit 1

# check for home directory
[ "x${HOME}" = "x" ] && \
	${BIN_LOGGER} -p mail.error -t "${SCRIPT_NAME}(${MAIL_TO})" \
		"no home directory set" && exit 1

# check for directories
[ ! -d "${DIR_MAILDIR_NEW}" ] && \
	${BIN_LOGGER} -p mail.error -t "${SCRIPT_NAME}(${MAIL_TO})" \
		"cannot find ${DIR_MAILDIR_NEW}" && exit 1
[ ! -d "${DIR_MAILDIR_TMP}" ] && \
	${BIN_LOGGER} -p mail.error -t "${SCRIPT_NAME}(${MAIL_TO})" \
		"cannot find ${DIR_MAILDIR_TMP}" && exit 1

# set misc values
HOSTNAME="`${BIN_HOSTNAME}`"

# set mail value
MAIL_DATE="`${BIN_DATE} '+%a, %d %b %Y %T %z (%Z)'`"
MAIL_MESSAGE_ID="`${BIN_DATE} '+%Y%m%d%H%M%S'`@${HOSTNAME}"

# set filename values
FILE_DATE="`${BIN_DATE} '+%s'`"
FILE_NAME="${FILE_DATE}.$$.${HOSTNAME}"
FILE_TMP="${DIR_MAILDIR_TMP}/${FILE_NAME}"

# write out message
${BIN_CAT} << EOF > ${FILE_TMP}
To: ${MAIL_TO}
From: ${MAIL_FROM}
Subject: ${MAIL_SUBJECT}
Message-Id: <${MAIL_MESSAGE_ID}>
Date: ${MAIL_DATE}
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit

Was ist los?
============

Wir haben festgestellt, dass Ihre Mailbox auf dem Server
postamt.charite.de das erlaubte Grössenlimit zu mindestens ${MAIL_QUOTA_PERCENT}%
ausschöpft. 

D.h. die maximal erlaubte Gesamtgröße der Mailbox wird bald erreicht
sein oder ist es sogar schon!

Was kann ich nun tun?
=====================

Bitte schaffen Sie Platz in Ihrer Mailbox, indem Sie die Mails z.B.
auf dem Server löschen oder in Ihre lokale Mailbox auf Ihrem eigenen
Rechner verschieben und so wieder Platz auf dem Server schaffen!

Wie kann ich die Füllung meines Postfaches auf dem Server überprüfen?
=====================================================================

Sie können die Füllung Ihres Postfaches über Webmail

  https://webmail.charite.de/

leicht überprüfen:   Nach dem Anmelden erscheint im linken Rahmen unter
Ihrer Ordnerliste ein Link namens "Ordnergrößen". 

Sie können in Webmail ggf. auch gleich die Mails löschen (vergessen
Sie hinterher nicht, den Papierkorb / Trash Ordner zu leeren!).

Warum ist mein Postfach überhaupt so voll?
==========================================

Dies kann z.B. passieren, wenn Sie mehrere Rechner nutzen um Ihre Mail
zu lesen und statt des IMAP Protokolls das POP3-Protokoll mit der
aktivierten Option "Leave Mail on Server" / "Mail auf Server belassen"
in Ihrem Mailprogramm verwenden.

Oft wird auch vergessen, daß der Ordner mit den "Gesendeten Objekten"
(Sent Folder/Sent Items) zum Größenlimit der Mailbox zählen.

Besondere Platzfresser sind Mails mit großen Anhängen, wie z.B.
PowerPoint-, PDF- oder Bilddateien -- insbesondere im "Sent" Ordner!

Wer sind meine Ansprechpartner?
===============================

Sie können uns unter email-admin at charite.de oder telefonisch unter
450-570600 erreichen.

Mit freundlichen Grüßen

EOF
[ "$?" -gt 0 ] && \
	${BIN_LOGGER} -p mail.error -t "${SCRIPT_NAME}(${MAIL_TO})" \
		"writing message to ${FILE_TMP} failed" && exit 1

# set more filename values
FILE_SIZE="`${BIN_STAT} --printf='%s' ${FILE_TMP}`"
FILE_NEW="${DIR_MAILDIR_NEW}/${FILE_NAME},S=${FILE_SIZE}"

# deliver message
${BIN_MV} ${FILE_TMP} ${FILE_NEW}
[ "$?" -gt 0 ] && \
	${BIN_LOGGER} -p mail.error -t "${SCRIPT_NAME}(${MAIL_TO})" \
		"delivering message to ${FILE_NEW} failed" && exit 1

# log warning attempt
${BIN_LOGGER} -p mail.info -t "${SCRIPT_NAME}(${MAIL_TO}) ${MAIL_QUOTA_PERCENT}%" "delivered to ${FILE_NEW}"


More information about the dovecot mailing list