Ok, si has seguido la serie de posts en los que monto la infraestructura básica de una red contra Samba4 compilado desde cero, este te vendrá de perlas. Recordaremos que:
- Ya montamos un ADDC[Active Directory Domain Controller], desde cero
- Configuramos el ADDC para conectar a todas las PCs de la red contra él
- Vincular un servidor de correo
- Vinculamos el proxy contra el ADDC, y próximamente pondremos como autenticar el proxy por grupos contra ldap y contra NTLM.
- Y después vincular OpenFire/Ejabberd contra él.
Así tendremos al menos, Internet, Correo y Mensajería Instántanea en nuestra red, totalmente con samba4, cero "Microsoft Active Directory Service".
Hoy lo que haremos será ponerle cuota al correo, a los usuarios me refiero.
Explico un poco. Casi todos los setups, o al menos los más conocidos configuran las cuotas de espacio de almacenamiento de los usuarios a MySQL, por ejemplo iRedmail. Ahora supongamos... Si mi correo está vinculado contra un LDAP o Active Directory, para que necesito el MySQL? Y qué si yo les dijera que se puede ponerle cuota sin él?
Nos evitaríamos otro daemon más corriendo en la máquina u ocupando ram. Entonces, vamos a ello!
NOTA: Adjunto la configuración que FUNCIONA, así que no os desesperéis! Sigan leyendo para que entiendan como funciona la cosa!
Lo primero es editar el dovecot-ldap.conf agregar al final del archivo:
user_attrs = =home=/home/vmail/%Ld/%Ln/,=mail=maildir:/home/vmail/%d/%n/Maildir,=quota_rule=*:bytes=%{ldap:postOfficeBox}
Y en el dovecot.conf:
mail_plugins = quota mailbox_alias acl mail_log notify stats
En el apartado plugins debemos editarlo de la siguiente manera:
# new "Quota in ADDC's postOfficeBox"
quota = maildir:User quota
quota_rule2 = Trash:storage=+100M
quota_warning = storage=95%% quota-warning 95 %u
quota_warning2 = storage=80%% quota-warning 80 %u
quota_grace = 10%%
# 10% is the default
quota_status_success = DUNNO
quota_status_nouser = DUNNO
quota_status_overquota = "552 5.2.2 Mailbox is full"
Y agregamos dos nuevos servicios:
service quota-warning {
executable = script /etc/dovecot/scripts/quota-warning.sh
unix_listener quota-warning {
user = vmail
}
}
# Obtained from Dovecot Wiki
service quota-status {
executable = quota-status -p postfix
inet_listener {
port = 12340
# You can choose any port you want
}
client_limit = 1
}
Y en los protocolos:
protocol lda {
mail_plugins = $mail_plugins
lda_mailbox_autocreate = yes
lda_mailbox_autosubscribe = yes
info_log_path = /var/log/dovecot/dovecot-deliver.log
log_path = /var/log/dovecot/dovecot.log
mail_plugin_dir = /usr/lib/dovecot/modules
mail_plugins = $mail_plugins
postmaster_address = [email protected]
sendmail_path = /usr/lib/sendmail
}
protocol imap {
mail_max_userip_connections = 10
mail_plugin_dir = /usr/lib/dovecot/modules
imap_client_workarounds = tb-extra-mailbox-sep
mail_plugins = $mail_plugins imap_quota imap_stats
}
protocol pop3 {
mail_plugins = $mail_plugins
pop3_client_workarounds = outlook-no-nuls oe-ns-eoh
pop3_uidl_format = %08Xu%08Xv
mail_max_userip_connections = 10
pop3_logout_format = top=%t/%p, retr=%r/%b, del=%d/%m, size=%s
mail_plugin_dir = /usr/lib/dovecot/modules
}
Guardamos y salimos del editor.
cd /etc/dovecot
mkdir scripts
cd scripts
nano quota-warning.sh
Contenido de quota-warning.sh:
#!/bin/sh
PERCENT=$1
USER=$2
cat << EOF | /usr/lib/dovecot/dovecot-lda -d $USER -o "plugin/quota=maildir:User quota:noenforcing"
From: [email protected]
Subject: quota warning
Your mailbox is now $PERCENT% full.
EOF
Guardamos y salimos. Le damos permisos de ejecución:
chmod +x quota-warning.shY listo. Ahora en el Postfix, en el main.cf, sólo debemos editar:
smtpd_recipient_restrictions =
...
check_policy_service inet:127.0.0.1:12340
...
Qué es donde el Dovecot está ecuchando conexiones para chequear la cuota al usuario, en el puerto 12340.
Listo, ahora es sólo en el Active Directory, editar las quotas, para lograrlo se deben fijar en:
Propiedades de usuario/Dirección/Apartado Postal

Y ahí seteamos la cuota. La cuota se da en K, M o G, para los valores de Kilo, Mega y Gigabytes, respectivamente. En caso de que no se asigne cuota, el Dovecot nos dará un error como este:

Y el Postfix no dejará enviar el correo, mostrándonos un mensaje de error en los logs como el siguiente:

Ahora bien, si queremos asignar a un buzón cuota ilimitada, sólo debemos asignar de cuota "0G" o "0".
Fuentes:
[1] https://4skill.ru/
[2] https://wiki.dovecot.org/






No comments yet