¿Qué es un servidor MX Backup?
Un servidor MX Backup es un servidor de correo que se encargará de recibir el correo de nuestro servidor MX primario cuando este no sea accesible, guardarlo en su cola y reenviarlo a nuestro servidor cuando este esté de nuevo disponible. Cuando un servidor smtp envía un correo a otro servidor mirará los registros DNS del dominio destino para saber quien es el responsable de la gestion del correo.
Vemos por ejemplo quienes son los servidores MX (Mail eXchanger) de gmail:
dani@belyj-bes:~$ dig -t MX gmail.com
; < <>> DiG 9.3.2 < <>> -t MX gmail.com
;; global options: printcmd
;; Got answer:
;; ->>HEADER< <- opcode: QUERY, status: NOERROR, id: 36740
;; flags: qr rd ra; QUERY: 1, ANSWER: 5, AUTHORITY: 0, ADDITIONAL: 8
;; QUESTION SECTION:
;gmail.com. IN MX
;; ANSWER SECTION:
gmail.com. 1745 IN MX 5 gmail-smtp-in.l.google.com.
gmail.com. 1745 IN MX 10 alt1.gmail-smtp-in.l.google.com.
gmail.com. 1745 IN MX 10 alt2.gmail-smtp-in.l.google.com.
gmail.com. 1745 IN MX 50 gsmtp163.google.com.
gmail.com. 1745 IN MX 50 gsmtp183.google.com.
... IN MX (número) fqdn
El número indica la prioridad del servidor, cuanto más bajo sea el número la prioridad será más alta.
¿Qué tenemos que hacer para configurar nuestro MX Backup?
1) Dar de alta el registro MX para nuestro servidor MX Backup.
2) Configurar Postfix en el servidor backup para que acepte los correos para nuestro dominio.
1) Dar de alta el registro MX para nuestro servidor MX Backup.
Deberos añadir los siguientes registros en nuestro DNS:
...
mydomain.com. IN MX 10 mail.mydomain.com.
mydomain.com. IN MX 20 mail.backupdomain.com.
...
(NOTA) Los puntos detras de los nombres de dominio son necesarios
2) Configurar Postfix en el servidor backup para que acepte los correos para nuestro dominio.
En /etc/postfix/main.cf:
...
relay_domains = $mydestination, mydomain.com#*dominio para el cual hacemos de MX Backup.
relay_recipients_maps = #**Buzones para los que aceptamos correo en el MX Backup.
(*)# Si hacemos de MX Backup para varios dominios nos interesara utilizar un fichero con los nombres.
relay_domain = $mydestination, hash:/etc/postfix/domains_backup
# Y en este fichero:
domain1.com
domain2.com
domain3.com
** Aquí nombraremos los buzones, cuentas, … del dominio al que hacemos de backup. ¿Para qué? Puesto que no podremos comprobar si la cuenta existe en el servidor primario tendremos que indicarles cuales son la cuentas válidas o aceptar todos los correos y ponerlos en cola, incluso direcciones del tipo: adaa232323saglrr@mydomain.com
O bien dejamos la línea como en la configuración anterior, con lo que aceptaremos todos los correos, o bien utilizaremos un fichero de texto como hash:
relay_recipients_maps = hash:/etc/postfix/relay_recipients
En este fichero:
user1@domain.com valor
user2@domain.com valor
@domain.com valor
...
El campo valor es necesario aunque postfix no lo utilza, podemos poner cualquier cosa: X, OK, YES, etc…
Esta configuración es suficiente. Un par de apuntes:
a) El tiempo máximo que nuestro backup va a mantener los correos en la cola intentando que enviarlos al servidor primario se ve reflejado en la directiva: “maximal_queue_lifetime” y por defecto es de 5d. Si sabemos que nuestro servidor va a estar inactivo por un período más largo deberíamos ponerle un valor más alto.
#postconf |grep maximal
maximal_backoff_time = 4000s
maximal_queue_lifetime = 5d
b) Si sabemos que el servidor primario ya está disponible y queremos enviar de golpe todos los emails en la cola:
#postqueue -s mydomain.com
Bibliografia MUY recomendada
Documentación de Postifx.
Postfix: The definitive Guide.