Posted on 13/02/2015
by Martín
Configurar Zimbra para control de usuarios
“Este pequeño manual NO es una copia de alguna pagina de internet, es propiedad intelectual de Martín Lugo Palmadera, ud. es libre de usarlo y distribuirlo, pero con la condición de citar la fuente…. http://martinlugo.networksolutions-peru.com”
El escenario es el siguiente:
He instalado una versión fresca Zimbra (versión 8.6) y esta funcionando al 100%, todos los usuarios envian y reciben mensajes.
Se me ha solicitado que solo algunos usuarios puedan enviar correos al exterior sin restricciones y otros solo correo local y a algunos dominios conocidos.(Tambien es recomendable poner restricciones en el Header_Checks)
(Hacer esto es con la version de nativa de postfix es simple y rapida), pero con Zimbra todo cambia, pues agregar las sentencias sobre el archivo de configuracion (main.cf) se borrará al siguiente reinicio.
Para que no suceda esto, vamos a modificar el archivo /opt/zimbra/conf/zmconfigd.cf
Actualizacion: Zimbra 8.6 ya no incluye la indexacion de archivos hash, por lo que si migras de una version anterior tendras problemas y te saldran errores como esto:
error: unsupported dictionary type: hash
He revisado este error y se debe a que la version de postfix ahora trae una version actualizada de este popular indexador :
[zimbra@test-app ~]$ postconf -m
cidr
environ
fail
internal
ldap
lmdb
memcache
mysql
nis
pcre
proxy
regexp
socketmap
static
tcp
texthash
unix
Si se percatan ahora trae el modulo de “texthash”. por lo que a diferencia de la versión 8.03 en nuestras variables sustituimos el valor de hash por texthash.
Paso 1: Editar el archivo “zmconfigd.cf” como root
#nano /opt/zimbra/conf/zmconfigd.cf
Comentar la variable
# POSTCONF smtpd_client_restrictions VAR zimbraMtaSmtpdClientRestrictions
Agregar al final de la sección MTA lo siguiente (antes de “RESTART mta):
POSTCONF smtpd_restriction_classes inter, local
POSTCONF inter FILE zmconfigd/postfix_restrict_inter.cf
POSTCONF local FILE zmconfigd/postfix_restrict_local.cf
POSTCONF smtpd_client_restrictions FILE zmconfigd/postfix_smtpd_client_restrictions
Aqui estamos creamos 2 variable inter y local (los usuarios que tengan el valor inter podran enviar correos sin restricciones y los usuarios que posean el valor local, solo podran enviar correos a algunos dominios listados en otro archivo), ademas le decimos que sus valores lo lea de los archivos ubicado dentro de la carpeta “zmconfigd” “postfix_restrict_inter.cf” y “postfix_restrict_local.cf” respectivamente. Adicionalmente si se dan cuenta comenté la variable POSTCONF smtpd_client_restrictions y luego la reescribi abajo direccionanadola a un archivo en donde pueda meter variables y coamndos a mi antojo.
Paso 2:
Modificar el archivo “smtpd_sender_restrictions.cf” :
#nano /opt/zimbra/conf/zmconfigd/smtpd_sender_restrictions.cf
Agregar las siguientes lineas al inicio:
reject_authenticated_sender_login_mismatch
check_sender_access texthash:/opt/zimbra/conf/zmconfigd/usuarios
texthash:/opt/zimbra/conf/zmconfigd/access
check_sender_access texthash:/opt/zimbra/conf/zmconfigd/prohibido
reject_unknown_sender_domain
reject_invalid_hostname
Luego eliminar o comentar con un # la linea
%%exact VAR:zimbraMtaSmtpdSenderRestrictions reject_authenticated_sender_login_mismatch%%
si dean cuenta esa variable ya no nos sirve pues la estamos sustituyendo por un archivo.
A mi me quedaria asi:
reject_authenticated_sender_login_mismatch
check_sender_access texthash:/opt/zimbra/conf/zmconfigd/usuarios
texthash:/opt/zimbra/conf/zmconfigd/access
check_sender_access texthash:/opt/zimbra/conf/zmconfigd/prohibido
reject_unknown_sender_domain
reject_invalid_hostname
#%%exact VAR:zimbraMtaSmtpdSenderRestrictions reject_authenticated_sender_login_mismatch%%
%%contains VAR:zimbraServiceEnabled cbpolicyd^ check_policy_service inet:localhost:%%zimbraCBPolicydBindPort%%%%
%%contains VAR:zimbraServiceEnabled amavis^ check_sender_access regexp:/opt/zimbra/postfix/conf/tag_as_originating.re%%
permit_mynetworks
permit_sasl_authenticated
permit_tls_clientcerts
%%contains VAR:zimbraServiceEnabled amavis^ check_sender_access regexp:/opt/zimbra/postfix/conf/tag_as_foreign.re%%
En el archivo “smtpd_recipient_restrictions.cf” Agregar la siguiente linea debajo de “permit_mynetworks”
#nano /opt/zimbra/conf/zmconfigd/smtpd_recipient_restrictions.cf
permit_mynetworks
check_sender_access texthash:/opt/zimbra/conf/zmconfigd/usuarios
check_sender_access texthash:/opt/zimbra/conf/zmconfigd/prohibido
Deberia quedar asi mas o menos:
%%contains VAR:zimbraMtaRestriction check_client_access lmdb:/opt/zimbra/conf/postfix_blacklist%%
%%contains VAR:zimbraServiceEnabled cbpolicyd^ check_policy_service inet:localhost:%%zimbraCBPolicydBindPort%%%%
reject_non_fqdn_recipient
permit_sasl_authenticated
permit_mynetworks
check_sender_access texthash:/opt/zimbra/conf/zmconfigd/usuarios
check_sender_access texthash:/opt/zimbra/conf/zmconfigd/prohibido
reject_unlisted_recipient
%%exact VAR:zimbraMtaRestriction reject_invalid_helo_hostname%%
%%exact VAR:zimbraMtaRestriction reject_non_fqdn_helo_hostname%%
%%exact VAR:zimbraMtaRestriction reject_non_fqdn_sender%%
%%exact VAR:zimbraMtaRestriction reject_unknown_client_hostname%%
%%exact VAR:zimbraMtaRestriction reject_unknown_reverse_client_hostname%%
%%exact VAR:zimbraMtaRestriction reject_unknown_helo_hostname%%
%%exact VAR:zimbraMtaRestriction reject_unknown_sender_domain%%
%%exact VAR:zimbraMtaRestriction reject_unverified_recipient%%
%%contains VAR:zimbraMtaRestriction check_recipient_access lmdb:/opt/zimbra/conf/postfix_recipient_access%%
%%contains VAR:zimbraMtaRestriction check_client_access lmdb:/opt/zimbra/conf/postfix_rbl_override%%
%%explode reject_rbl_client VAR:zimbraMtaRestrictionRBLs%%
%%explode reject_rhsbl_client VAR:zimbraMtaRestrictionRHSBLCs%%
%%explode reject_rhsbl_reverse_client VAR:zimbraMtaRestrictionRHSBLRCs%%
%%explode reject_rhsbl_sender VAR:zimbraMtaRestrictionRHSBLSs%%
%%contains VAR:zimbraMtaRestriction check_policy_service unix:private/policy%%
%%contains VAR:zimbraMtaRestriction check_recipient_access ldap:/opt/zimbra/conf/ldap-splitdomain.cf%%
%%exact VAR:zimbraMtaRestriction reject%%
permit
Paso 3.- Crear el archivo “usuarios” y “prohibido”:
Si nos percatamos, he ingresado también un archivo llamado “prohibido”, esto sirva para decirle a Zimbra que los dominios que coloque allí van a estar prohibidos de ser enviados
#nano /opt/zimbra/conf/zmconfigd/usuarios
pepito@mydomain.com inter
luchito@mydomain.com local
................
Ahora el archivo prohibido:
#nano /opt/zimbra/conf/zmconfigd/prohibido
yahoo.com.pe reject
Paso 4.- Crear los archivos postfix_restrict_inter.cf , postfix_restrict_local.cf y postfix_smtpd_client_restrictions
#nano /opt/zimbra/conf/zmconfigd/postfix_restrict_inter.cf
y colocar esto dentro:
permit
Ahora creamos el segundo archivo:
#nano /opt/zimbra/conf/zmconfigd/postfix_restrict_local.cf
y colocar esto dentro:
check_recipient_access
texthash:/opt/zimbra/conf/zmconfigd/interno
reject
Finalmente crear el tercer archivo
#nano /opt/zimbra/conf/zmconfigd/postfix_smtpd_client_restrictions
y colocar esto dentro:
permit_mynetworks
reject_non_fqdn_recipient
texthash:/opt/zimbra/conf/zmconfigd/access
reject_rbl_client sbl.spamhaus.org
Paso 5.- Crear el archivo interno y access
Dentro de este archivo llamado “interno” vamos a colocar los dominios que queremos que envien lo usuarios restringidos
#nano /opt/zimbra/conf/zmconfigd/interno
y colocar alli los dominios que a los que solo podrá enviar mail
dominio1.com.pe ok
dominio2.com.pe ok
Ahora creamos el archivo Access:
#nano /opt/zimbra/conf/zmconfigd/access
colocar un espacio en blanco dentro de este archivo “access” y grabar
Paso 6.- indexar archivos “usuarios” “interno” “access”
Ingresar como usuario de Zimbra y aplicar los siguiente
#su - zimbra
Last login: Thu Feb 12 12:59:58 PET 2015 on pts/0
$ postmap conf/zmconfigd/usuarios
$ postmap conf/zmconfigd/interno
$ postmap conf/zmconfigd/access
$ postmap conf/zmconfigd/prohibido
Paso 7.- Modificar la variable mynetworks a 127.0.0.0/8 y la red interna de la empresa, esto hara que lo spammer no puedan utilizar nuestro servidor como relay, sino que el postifx solo aceptará conexiones de el mismo, previa validacion del usuario que se trata de conectar Para esto hacer lo siguiente:
#su - zimbra
$ zmprov modifyServer mail.dominio.com.pe zimbraMtaMyNetworks '127.0.0.0/8 192.168.0.0/24'
$ postfix reload
Paso 8.- Reiniciar servicios y listo!!!!!!!!!
#su - zimbra
$ zmmtactl restart
Te puede interesar Instalar Zimbra 8.6 en Centos 7 desde Cero