Postfix como servidor de correo Secundario

En este post vamos a realizar una configuración básica de postfix como servidor de correo secundario, para su configuración vamos a usar ficheros de texto normales, aunque se podria hacer con soporte MySQL si tuvieramos un volumen de dominios y/o cuentas elevado.

Creamos las entradas en el DNS

Hemos de recordar de añadir la entrada de nuestro nuevo servidor de correo secundario en los servidores DNS.

En el registro MX debemos darle una prioridad mas baja al servidor secundario, sino no lo hacemos asi la configuración no funcionará.

ejemplo.com.		43200	IN	MX	10 mail.ejemplo.com.
ejemplo.com.		43200	IN	MX	20 backup.ejemplo.com.

Seguidamente añadimos el registro A apuntando a la Ip del servidor secundario.

mail.ejemplo.com.       343     IN      A       123.456.789.123
backup.ejemplo.com.     343     IN      A       987.654.321.987

Configuración de Postfix

Si no tenemos instalado postfix en nuestro sistema, lo instalamos con el siguiente comando:

apt-get install postfix

Seguidamente vamos aconfigurar postfix para que acepte e-mails solamente de dominios conocidos, de las cuentas que tenemos creadas en el servidor principal, y definiremos donde queremos que mande los e-mails.

Editamos el fichero main.cf

nano /etc/postfix/main.cf

Y añadimos

smtpd_banner = $myhostname ESMTP
mynetworks = 127.0.0.0/24
maximal_queue_lifetime = 30d

relay_recipient_maps = hash:/etc/postfix/recipientmaps
relay_domains = hash:/etc/postfix/relaydomains
transport_maps = hash:/etc/postfix/transportmaps

smtpd_recipient_restrictions =
 permit_mynetworks,
 reject_unauth_destination

En este fichero hemos cambiado:

  • maximal_queue_lifetime: el valor por defecto son 5 dias, en nuestro caso los hemos puesto en 30 dias. En un servidor en producción en un entorno ‘serio’, 5 días seria suficiente para solventar cualquier incidencia en el servidor principal.
  • relay_recipient_mapsEn este fichero añadiremos todas las cuentas que queremos que postfix acepte correo. Este valor es opcional, si dejamos la linea en blanco, el servidor va a aceptar correo para cualquier cuenta, exista esta o no en el servidor principal. Es una buena practica añadir la lista de cuentas para prevenir el Mail Backscatter
  • relay_domains:  En este fichero añadiremos todos los dominios para los que postfix acepte correo.
  • transport_maps: En este fichero añadiremos donde queremos que nos mande los correos que esten el el queue.

Seguidamente empezaremos editando el fichero relaydomains:

nano /etc/postfix/relaydomains

Y añadimos los dominios para los cuales queremos hacer de backup.
Es posible definir estos dominios directamente en el fichero main.cf en lugar de hacerlo en este fichero por separado, la forma de hacerlo en el fichero principal es añadirlos separados por comas. Pero, como veremos mas adelante, en cualquiera de las opciones que escojamos hemos de ejecutar postmap, es mas sencillo y ordenado crear este fichero aparte.

ejemplo1.com  OK
ejemplo2.com  OK
ejemplo3.com  OK

Ahora editamos el fichero recipientmaps que contendra todas las cuentas de correo en las que queremos hacer backup.

nano /etc/postfix/recipientmaps

Y las añadimos…

postmaster@ejemplo1.com  OK
usuario@ejemplo2.com     OK
info@ejemplo1.com        OK
admin@ejemplo3.com       OK

Para finalizar editaremos el fichero transportmaps.

nano /etc/postfix/transportmaps

En este fichero añadiremos donde queremos que nos envie el correo que este almacenado en el queue una vez que el servidor principal responda.
Es posible definir un servidor que este dentro de nuestra red local o bien un servidor externo.
Para definir un servidor dentro de nuestra red local es mejor poner la Ip entre corchetes [], asi evitamos la busqueda a traves de DNS.
La estructura del fichero debe ser, primero el nombre del dominio seguido del nombre del servidor principal y el puerto que usaremos para transferir los correos.

ejemplo1.com smtp:mail.ejemplo.com:25
ejemplo2.com smtp:mail.ejejmplo.com:587
ejemplo3.com smtp:[192.168.10.20]:25

Actualizar las tablas de búsqueda de Postfix

Cada vez que realicemos un cambio en el fichero relaydomains, transportmaps o recipientmaps es necesario ejecutar postmap para crear/actualizar las tablas de búsqueda de postfix.

postmap /etc/postfix/recipientmaps
postmap /etc/postfix/relaydomains
postmap /etc/postfix/transportmaps
service postfix restart