Como configurar un relay de correo para nuestra empresa con Postfix

Últimamente en la empresa donde trabajo hemos tenido que configurar un nuevo servidor de «relay» de correo para sustituir al que teníamos, que era un viejo IBM Lotus Notes. Por suerte yo ya había oído hablar del servicio de correo de código abierto Postfix, creado por el programador Wietse Venema. Lo cierto es que he tenido que investigar un poco, mirando manuales en Internet, y visitando asiduamente la página web del proyecto, para así de paso practicar mi inglés.

Bueno. Una vez explicado esto, os explico como lo instalé y configuré.

Primero de todo, decidí usar una distribución GNU/Linux, me decidí por Debian, sin interfaz gráfica, para así ahorrar recursos al sistema. Una vez descargada la última versión estable de su web:  http://www.debian.org/CD/http-ftp/#stable, procedemos a instalarla en una máquina virtual, yo siempre uso el software de VirtualBox, que nos podemos descargar desde su web: https://www.virtualbox.org/.

Cuando ya tenemos la distribución instalada, actualizaremos la versión, ya sabéis, primero le decimos al sistema que queremos actuar como «root», tecleando el comando «su», que nos pedirá la contraseña. Cuando estemos ya como super usuario,  modificaremos el fichero «sources.list» que es donde están las direcciones desde donde actualizaremos nuestro sistema, este fichero está ubicado en «/etc/apt/», el fichero yo lo tengo configurado de la siguiente manera:

El siguiente paso, es utilizar el comando para actualizar nuestro sistema operativo:

  1. apt-get update

Como la inmensa mayoría de programas en GNU/Linux están escritos en Lenguaje C, siempre instalo en compilador «gcc» que ya hablé de él en su día, además del de «python», que siempre se suelen utilizar en estos casos.

  1. apt-get install gcc python

A continuación instalamos los servicios a utilizar:

  1. apt-get install mailutils postfix

Creamos un enlace para el comando mail

  1. ln -s /usr/bin/mail /bin/mail

Empezamos a configurar postfix con nuestra configuración de correo en internet (yo en este caso utilizaré gmail).

En el archivo ubicado en /etc/postfix/main.cf, debemos indicar la siguiente configuración:

  1. relayhost = [smtp.gmail.com]:587
  1. smtp_use_tls = yes
  1. smtp_tls_CAfile = /etc/postfix/cacert.pem
  1. smtp_sasl_auth_enable = yes
  1. smtp_sasl_password_maps = hash:/etc/postfix/sasl/passwd
  1. smtp_sasl_security_options = noanonymous

Como diría Jack, vamos por partes:

En «relayhost» indicamos en que dirección está ubicado nuestro servidor de relay en la nube, en este caso usamos el de gmail, además también le indicamos el puerto, el 587, que es el que se usa para conexiones seguras por TLS. En las siguientes líneas le decimos que usaremos el cifrado TLS, después decimos donde tendremos ubicado dicho certificado, y por último que no aceptamos conexiones anónimas.

Muy importante, al final del fichero indicamos:

  1. myhostname = debian

Esto lo hacemos para indicar nuestro nombre de host.

  1. mynetworks = 192.168.x.0/24 192.168.x.0/24 127.0.0.0/8

Esta parte es muy importante, si queremos utilizar nuestro servidor como relay de otras máquinas, tenemos que declarar las redes donde están dichos equipos.

Por último:

  1. mydestination = $mydomain,$myhostname,localhost,locahost.domain

Y con esto terminamos de editar el archivo.

A continuación generamos el fichero «passwd»

  1. nano -w /etc/postfix/sasl/passwd

Con nuestra configuración de seguridad:

  1. [smtp.gmail.com]:587 usuario@gmail.com:contraseña

Asignamos los permisos adecuados:

  1. chmod 600 /etc/postfix/sasl/passwd

Transformamos el fichero passwd a un fichero indexado hash

  1. postmap /etc/postfix/sasl/passwd

Vemos que haciendo esto tendremos un nuevo fichero llamado «passwd.db«

Instalamos los certificados:

  1. apt-get install ca-certificates

Añadimos la autoridad certificadora:

  1. cat /etc/ssl/certs/Equifax_Secure_CA.pem >> /etc/postfix/cacert.pem

Reiniciamos el servicio de correo:

  1. /etc/init.d/postfix restart

Probamos el envío de un correo:

  1. mail -s "el asunto" usuario@gmail.com

CTRL+D(Enviarlo)

Por último, si queremos ver el log del correo en directo, con el comando «tail» lo podemos hacer, visualizando las diez últimas líneas de texto:

  1. cd /var/log
  2. tail -f mail.log

Y con todo esto ya tenemos configurado nuestro servidor de correo.

Si queréis saber más:

Proyecto POSTFIX

29 Respuestas

  1. Titogus dice:

    Hola que tal? Tengo un servidor en casa montado con la Raspberry Pi con una distro basada en Debian (Raspbian) y quisiera montar un servidor de correo postfix para gestionar y para añadir cuentas. Podrías decirme si con este tuto podría gestionar las cuentas y que debería cambiar para poder hacerlo con mi servidor. Muchas gracias.

    • admin dice:

      Hola,
      Primero de todo gracias por visitar la página. Claro, por lo que he podido leer por la red la placa a la que te refieres funciona con Linux, y como veo estás usando una distribución pasada en Debian. Así que no tendrás ningún problema en instalar Postfix. Respecto al tema de las cuentas, el tutorial explica como montar el servidor usando una cuenta de gmail. ¿Cuando te refieres a gestionar cuentas? ¿Tienes un adquiridio un dominio con el puedas trabajar? Te lo digo porque puedes crear cuentas y gestionarlas pero sólo en local si no tienes una cuenta de dominio, es decir prueba.com o algo parecido.
      Ya me dices.
      Saludos

      • Titogus dice:

        Compré el dominio garcalia.com y lo tengo montado en mi servidor casero con la RPI (Raspberry Pi) Pero sólo me dieron una cuenta de correo, lo que quisiera es montar un servidor de correo en el que poder crear cuentas nuevas (que no se si se podría) y gestionarlas desde aquí. He leido que postfix es el mejor y este tuto que has hecho es el más claro que he encontrado (mis conocimientos son muy pocos)

        • ochobitshacenunbyte dice:

          Hola,
          Deja que eche un vistazo al tema y te contesto en cuanto pueda.

        • Roti dice:

          no se muy bien de lo que se esta hablando. qseiuira saber si de lo que se habla es d euno mismo poderse hacer su propio correo pues eso estaria muy bueno. porfavor si alguien se ocnecta responderme esta inquietud que tengo. ha disculpenme por mi falta de ortografia en el primer mensajes es que estaba viendo si podia escribir sin mirar para el teclado.

          • Hola,
            Para poder crearte tu propio correo, primero de todo necesitas tener un dominio. Un vez adquirido puedes usar el servicio de correo que te ofrece la empresa donde lo adquiriste o una empresa de hosting. También tienes la posibilidad de montar tu propio servidor, y montarlo como servidor de correo. La guía que he escrito es para crear y configurar un servidor de relé o relay de correo, que sirve para que máquinas de la misma red que necesitan enviar correos, utilicen una única máquina dentro del sistema. Eso facilita, por ejemplo, que esa única unidad sea la que tenga abierta los puertos correspondientes, y así poder centrarte en su seguridad. Te paso enlaces de otras páginas donde tienen guías de como montar un servidor de correo:

            En Debian:

            http://www.esdebian.org/wiki/instalacion-configuracion-postfix-debianubuntu

            En Ubuntu:

            http://www.ubuntuhispano.org/wiki/instalar-servidor-correo-seguro-ubuntu

  2. Titogus dice:

    Tranquilo prisa no hay ninguna y muchisimas gracias por tomarte las molestias de mirarlo. Gracias

  3. samara dice:

    hola que tal sigo tu tuto pero a la hora de que pruebo al enviar el correo se que digamos como «trabajando» en el envio de correo y reviso el archivo mail.log y pues me dice que el tiempo de conexion se ha agotado ojala me puedan ayudar por ke me dice eso gracias!!!

  4. Hola Samara,
    Primero de todo gracias por la visita.
    Para analizar con más exactitud una vez envíes un correo, con el comando mail. Debes revisar el archivo log, como veo que has hecho. Si usas el comando:
    tail -f /var/log/mail.log
    Te saldrán las últimas líneas del log. ¿Puedes hacer un corta y pega? y así le echo un vistazo.
    También podría ser que tengas los puertos bloqueados por alguna regla de firewall.
    Saludos!

  5. luis alberto dice:

    hola, tengo montado una maquina virtual en debían, con postfix como gestionador de correos, me trabaja ok, pero quisiera saber si puedo revisar las configuraciones del postfix desde la web, es decir gráficos, mis usuarios los tengo creado en un dominio con el active directory en server 2003.

  6. Jhoed Ram dice:

    El relay es como una especie de servidor esclavo de email? Es como subdelegar?, alguien me puede explicar que es exactamente un servidor relay y para qué me podría servir?

    Gracias y excelente post.

    • davidochobits dice:

      Hola,
      Si tienes varios servidores puedes usar uno de ellos como relay de correo con una cuenta configurada, para que el resto lo usen para enviar correos, por ejemplo de estado. Eso maximiza la seguridad ya que sólo debes de configurar un único host para los envios.

  7. Israel dice:

    Hola a todos,quisiera saber si en lo del relay los usuarios salen como este ejemplo, fulanito@menganito.gmail.com, o sea como un subdominio o una cuenta coorporativa como tambien se le dice por ahi,salu2s.

  8. Hugo Mariano Garcia Machado dice:

    Hola buenos día

    He seguido los pasos para la instalación Postfix, el inconveniente que presento, es que al ejecutar el comando cat /etc/ssl/certs/Equifax_Secure_CA.pem >> /etc/postfix/cacert.pem. me mustra el siguiente mensaje:

    gt: no se encontro la orden
    [1]+ Hecho cat /etc/ssl/certs/Equifax_Secure_CA.pem
    bash: /etc/postfix/cacert.pem: Permiso denegado

    Que debo hacer para solucionar el problema, le agradecería mucho su ayuda.

    • davidochobits dice:

      Hola Hugo,
      Primero de todo gracias por visitar la web.
      Tiene toda la pinta que no tienes permisos de superusuario, debes trabajar como root o bien usar el comando sudo.
      Saludos

  9. Hugo Mariano Garcia Machado dice:

    Hola

    Muchas gracias por la ayuda , necesitaba los permiso requeridos,
    para ejecutar esta linea de comando: cat /etc/ssl/certs/Equifax_Secure_CA.pem > > /etc/postfix/cacert.pem que no los tenia, y el simbolo & los cambie por el signo > y me dio resultado.

  10. Yusviel dice:

    Pudieran poner como configurar la recogida de correo utilizando dovecot y fetchmail, hice esto y me llegan los correos pero no recibo la respuesta, salu2s

  11. Edu HM dice:

    Buenas tardes,

    Muy buen tuto pero me falta algo que no logro conseguir. Te cuento el problema. Tengo montado un servidor X que hace de relay de correo. Este servidor es usado para ser el que envia correos desde los demás servidores donde corren aplicaciones (moodle, wordpress nagios…). Estoy montando ahora mismo el gestor de copias de mysql llamado «automysqlbackup» el cual tiene la posibilidad de notificar por correo errores o las copias que se han hecho.
    El problema que tengo es que no se como hacer para que envíe los correos correspondientes. En el mismo servidor hago una prueba usando la herramienta swaks, y por linea de comando lanzo lo siguiente:

    swaks –server 10.203.228.3 –to miusuario@dominio.com

    dando la siguiente salida:

    === Trying 10.203.228.3:25…
    === Connected to 10.203.228.3.
    EHLO BBDMYS10
    <- 250-GESMAI00
    <- 250-PIPELINING
    <- 250-SIZE 10240000
    <- 250-VRFY
    <- 250-ETRN
    <- 250-STARTTLS
    <- 250-ENHANCEDSTATUSCODES
    <- 250-8BITMIME
    <- 250-DSN
    MAIL FROM:
    RCPT TO:
    DATA
    <- 354 End data with .
    -> Date: Thu, 23 Aug 2018 13:15:14 +0100
    -> To: miusuario@dominio.com
    -> From: root@BBDMYS10
    -> Subject: test Thu, 23 Aug 2018 13:15:14 +0100
    -> Message-Id:
    -> X-Mailer: swaks v20170101.0 jetmore.org/john/code/swaks/
    ->
    -> This is a test mailing
    ->
    -> .
    QUIT
    <- 221 2.0.0 Bye

    Y comprobando que al momento me llega un correo test correctamente.

    El problema es que automysqlbackup en su código usa el siguiente comando

    cat "$log_file" | mail -s "MySQL Backup Log for ${CONFIG_mysql_dump_host_friendly:-$CONFIG_mysql_dump_host} – ${datetimestamp}" ${CONFIG_mail_address}

    Pero no recibo nada al correo destinatario.

    Que me faltaria por configurar!?

    Muchas gracias de antemano

  12. nahuel dice:

    Hola, nosotros tenemos contratado un VM en un isp donde están alojos varios servicios; pagina web dns y servidor de correos con un cliente de correo roundcube. Ahora queremos poner en la empresa un servidor relay que reciba copia de todos los correos y que pueda enviar correos desde un cliente web o desde clientes de escritorio lo que no me queda claro es el tema de las dns como tendría que configurarlos, yo ahora realice una registro a de un subdominio que apinta a una dir ip fija en la empresa por ej> correos.enlaempresa.com el dominio es enlaempresa.com como tendría que configurar el hosts y el postfix?

  1. 29 octubre, 2012

    […] ya vimos en su día como configurar una máquina GNU/Linux con Postfix. Así que hay detalles que […]

  2. 2 mayo, 2014

    […] de correo: Postfix […]

  3. 11 diciembre, 2014

    […] Ya hablé de ellos en un artículo anterior, que podéis consultar aquí. […]

  4. 28 septiembre, 2015

    […] ya vimos en su día como configurar una máquina GNU/Linux con Postfix. Así que hay detalles que […]

  5. 2 octubre, 2015

    […] concretamente la instalación y configuración de relay de correo con Postfix, tanto con cuentas de gmail como de Office365. El problema es que dicho servicio sólo funciona para los envíos utilizando […]

  6. 2 octubre, 2015

    […] en dicho servidor añadimos las credenciales de la cuenta. Podemos guiarnos con el tutorial que escribí en su […]

  7. 8 octubre, 2015

    […] con un servidor ya montado, ya hemos visto como montar un servidor postfix para cuentas de gmail, para cuentas de Office365, y junto con otros servicios para montar un servidor completo de […]

  8. 22 octubre, 2015

    […] de correo: IMAP y POP3, Postfix, Sendmail, Microsoft Exchange […]

  9. 10 noviembre, 2015

    […] Como configurar un relay de correo […]

  10. 10 febrero, 2017

    […] Cabe decir, respecto al tema del envío de errores por correo, que nuestro sistema debe tener un servicio de envío de correo, como por ejemplo postfix. […]

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.