Servidor de correo – Email Quota (parte 8)

Esta es una entrada dentro de la serie para la instalación de un servidor de correo completo. Índice completo de contenidos pincha aquí.


En la presente entrada vamos a configurar las Quotas del buzón, es decir el tamaño de uso permitido por buzón, tanto para Postfix como Dovecot.


Configurar Dovecot Quota

Editamos el archivo /etc/dovecot/doveco.conf y agregamos las siguientes líneas al final:

# Quota para POSTFIX
service quota-status {
    executable = quota-status -p postfix
    inet_listener {
        port = 12340
        # You can choose any port you want
    }
    client_limit = 1
}

Con esto indicamos que en el puerto 12340 se va a poder consultar el estado de la cuota de un buzón, por ejemplo desde Postfix.

Reiniciamos Dovecot con:

systemctl restart dovecot

 


Dovecot

Vamos a configurar una Quota global para todos los buzones. Lo suyo sería configurarlo en el backend MySQL, pero no fui capaz de que funcionara.

Tenemos que habilitar tres plugins de Dovecot:

  • Quota: implementa la quota actual configurada.
  • Imap_quota: para reportar la quota vía IMAP.
  • Quota_grace: determina cuánto se puede superar el límite cuando es superado.

Archivo /etc/dovecot/conf.d/10-mail.conf:

# Space separated list of plugins to load for all services. Plugins specific to
# IMAP, LDA, etc. are added to this list in their own .conf files.
mail_plugins = $mail_plugins quota

Archivo /etc/dovecot/conf.d/20-imap.conf, agregando los plugins quota imap_quota:

protocol imap {
  # Space separated list of plugins to load (default is global mail_plugins).
  mail_plugins = $mail_plugins imap_quota quota mail_log notify
…
}

Archivo /etc/dovecot/conf.d/90-quota.conf para configurar las quotas de los buzones y el mensaje de alerta según los porcentajes configurados:

plugin {

  quota = maildir:User quota
  quota_rule = *:storage=10G
  quota_rule2 = Trash:storage=+100M
  quota_rule3 = SPAM:storage=+100M
  quota_grace = 10%%
  quota_status_success = DUNNO
  quota_status_nouser = DUNNO
  quota_status_overquota = "552 5.2.2 Mailbox is full"
  quota_warning = storage=95%% quota-warning 95 %u
  quota_warning2 = storage=80%% quota-warning 80 %u	

  quota_exceeded_message = You have exceded the máximum size of your mailbox. Please, free up space.
}

service quota-warning {
  executable = script /usr/local/scripts/quota-warning.sh
  user = vmail
  unix_listener quota-warning {
    user = vmail
  }
}

Y además lo agregamos al servicio Pop /etc/dovecot/conf.d/20-pop3.conf:

…
protocol pop3 {
  # Space separated list of plugins to load (default is global mail_plugins).
  mail_plugins = $mail_plugins quota mail_log notify
…
}

Ahora el archivo de BASH que contiene el script para el quota-warning indicado antes /usr/local/scripts/quota-warning.sh contiene lo siguiente, recuerda actualizar la cuenta From por la que consideres oportuna:

#!/bin/sh
PERCENT=$1
USER=$2

cat << EOF | /usr/lib/dovecot/dovecot-lda -d $USER -o "plugin/quota=count:User quota:noenforcing"
From: email@email.com
To: $USER
Subject: Alerta de espacio en buzon

Su buzon de correo esto al $PERCENT% de su capacidad.
Reciba un cordial saludo.
Su equipo de soporte de Yeloquehay.
EOF 

Reiniciamos dovecot con:

systemctl restart dovecot

 


Postfix

Ahora editamos el archivo de Postfix /etc/postfix/main.cf para indicarle donde chequear el estado de almacenamiento de un buzón, en el grupo smtpd_recipient_restrictions:

smtpd_recipient_restrictions =
    ...
    check_policy_service inet:127.0.0.1:12340

Reiniciamos Postfix con:

systemctl restart postfix

 


Índice general pincha aquí.