Como utilizar DNS con zimbra
Introducción
En el primer capítulo de la serie «Como montar un servidor zimbra» mostraba la instalación básica. Después de pruebas con el entorno que estoy preparando, he visto problemas en la recepción de correos externos. El problema es debido a que el servidor tiene una IP privada, mientras que el DNS resuelve el nombre del servidor a la IP pública. Si el servidor zimbra tuviera directamente la IP pública no sería necesario hacer nada.
En este post trataré de explicaros como solucionar este problema con Split-DNS.
Hay que tener en cuenta que este procedimiento implica reiniciar servicios de zimbra, por lo que si el servidor está en producción, será necesario informar a los usuarios o realizar estas tareas fuera de horario laboral.
Esquema
Cache DNS
Zimbra hace un uso muy intensivo de DNS, por lo que es altamente recomendable utilizar un sistema de cache DNS. El servicio que nos proporciona el propio zimbra no es útil en este caso, ya que no nos permite modificar determinada entradas DNS para que resuelva por la IP privada.
Para mantener la funcionalidad de cache DNS y añadir la posibilidad de modificar registros DNS del dominio de correo, utilizaremos dnsmasq.
Desactivar zimbra-dnscache
El primer paso es desactivar este servicio. Si no lo hacemos e instalamos dnsmasq nos aparecerá un error indicando que el puerto 53 ya está en uso. Para ello ejecutamos:
su - zimbra zmdnscachectl stop zmprov ms `zmhostname` -zimbraServiceEnabled dnscache -zimbraServiceInstalled dnscache
Primero paramos el servicio y seguidamente desactivamos y desinstalamos el servicio dnscache. Reiniciamos los servicios para validar que todo sigue funcionando ejecutando
zmcontrol restart
Finalmente verificamos que no tenemos el servicio dnscache
zmprov gs `zmhostname` zimbraServiceEnabled zimbraServiceInstalle
Verificamos también que no existe ningún proceso ejecutándose en el puerto 53
lsof -i:53
La ejecución de este comando no debería mostrar ninguna salida.
Activar dnsmasq
Lo primero que debemos hacer es instalar el servicio dnsmasq. Es un proceso extremadamente sencillo, ya que solamente debemos ejecutar:
apt-get install dnsmasq
Ahora, si volvemos a verificar si hay algun servicio en el puerto 53 veremos una salida similar a esta
root@mail:~# lsof -i:53 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME dnsmasq 22379 dnsmasq 4u IPv4 91207290 0t0 UDP *:domain dnsmasq 22379 dnsmasq 5u IPv4 91207291 0t0 TCP *:domain (LISTEN) dnsmasq 22379 dnsmasq 6u IPv6 91207292 0t0 UDP *:domain dnsmasq 22379 dnsmasq 7u IPv6 91207293 0t0 TCP *:domain (LISTEN)
Ahora indicaremos al servicio dnsmasq que la direccion mail.eslinux.org resuelve por la IP privada
echo "address=/mail.eslinux.org/172.16.4.5" > /etc/dnsmasq.d/eslinux.conf
Seguidamente reiniciamos el servicio para activar los cambios:
service dnsmasq restart
Para verificar que los cambios se han aplicado correctamente ejecutamos:
dig mail.eslinux.org @172.16.4.5
La salida que nos debería aparecer es similar a esta:
; <<>> DiG 9.10.3-P4-Ubuntu <<>> mail.eslinux.org @172.16.4.5 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 13826 ;; flags: qr aa rd ra ad; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0 ;; QUESTION SECTION: ;mail.eslinux.org. IN A ;; ANSWER SECTION: mail.eslinux.org. 0 IN A 172.16.4.5 ;; Query time: 0 msec ;; SERVER: 172.16.4.5#53(172.16.4.5) ;; WHEN: Mon Mar 20 10:02:07 CET 2017 ;; MSG SIZE rcvd: 50
Esta misma consulta realizada a un servidor DNS público, nos debería devolver la IP pública del servidor.
dig mail.eslinux.org @8.8.8.8 ; <<>> DiG 9.10.3-P4-Ubuntu <<>> mail.eslinux.org @8.8.8.8 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 64243 ;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 512 ;; QUESTION SECTION: ;mail.eslinux.org. IN A ;; ANSWER SECTION: mail.eslinux.org. 3599 IN A 123.54.22.5 ;; Query time: 170 msec ;; SERVER: 8.8.8.8#53(8.8.8.8) ;; WHEN: Mon Mar 20 10:08:03 CET 2017 ;; MSG SIZE rcvd: 82
Con estos cambios no deberíamos tener problemas ni en enviar ni recibir desde nuestro servidor zimbra.