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.sh
Y 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/
Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Firefox/68.0
Hola
Tengo montado postfix con dovecot y parece que las cuotas funcionan correctamente pero cuando envío un email a un dominio externo me crea el directorio del dominio/usuario en /var/vmail con un único fichero en su interior, esto es un problema si se envían muchos emails a distintos destinatarios ya que el sistema de ficheros acabará llegando a límites de inodos, número de directorios, etc.
Por ejemplo si envío un email a [email protected] puedo ver en /var/vmail/dominioinventado.com/test un fichero maildirsize con el contenido:
53687091200S
0 0
Según la doc de postfix:
http://www.postfix.org/postconf.5.html#smtpd_recipient_restrictions
Optional restrictions that the Postfix SMTP server applies in the context of a client RCPT TO command
Supongo que smtpd_recipient_restrictions se ejecuta cada vez que se detecta un RCPT TO, tanto en los mails de entrada como de salida, hay alguna forma de comprobar las cuotas solo para emails entrantes?
Un saludo
Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:65.0) Gecko/20100101 Firefox/65.0
Buenas Tardes.
Me gustaria saber si conoces la manera de poder contolar los usuarios que tienen permiso de enviar a una lista creada en el AD
Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:68.0) Gecko/20100101 Firefox/68.0
Prueba postfwd, lo uso actualmente.