Es una configuración muy común para los servidores de correo saliente. Sirve, por ejemplo para cuando queremos que los correos que enviemos desde nuestro ordenador se hagan a través de otro servidor SMTP, cuando hemos contratado un servicio externo para enviar correo para nuestra empresa, hacer redirecciones temporales o tener un servidor intermedio a la hora de recibir correos (por ejemplo, si queremos aplicar filtros antes de enviar los correos).
Por eso en el título de la entrada está Gmail. Podemos configurar un pequeño servidor de pruebas, o incluso en nuestra máquina local, para que los correos que se envíen con sendmail, o que nos envíen a nuestra máquina, se hagan a través de nuestra cuenta de Gmail (debemos activar el acceso por SMTP, y tendremos que tener cuidado de escuchar solo en localhost o poner reglas de firewall para que no todo el mundo pueda acceder a nuestro puerto de envío de correo). También están los casos de sendgris y mailgun, servicios que podemos utilizar para enviar correos desde un dominio determinado. Estos servicios están bien si desde nuestro servidor se envía un gran volumen de correo (existen muchos más servicios similares).
La otra opción es enviar un correo a través de nuestro propio servidor. Esto puede ser útil en caso de tener varios servidores de envío. Podemos hacer que varios servidores reciban correo y lo envíen a un servidor central. Si uno de los servidores pequeños ve que el central está muy saturado, puede esperar y entregarlo dentro de un rato. También es muy útil la creación de filtros para una empresa, es decir, la empresa tiene contratado el servicio de envío de correo a través de un proveedor externo, pero nosotros queremos tener algo de control como aplicar filtros, revisar virus, o eliminación de metadatos, o que debamos saber si hablan mal de nosotros, que para eso somos administradores de sistemas, aunque no te diré cómo, pero no es muy difícil.
Iré explicando el proceso desde el principio, por lo que si ya has instalado postfix o tienes cierta experiencia con él, podrás saltarte algunas partes. No profundizaré mucho en la configuración de Postfix porque es un mundo, solo en lo que nos atañe para esta tarea.
Tabla de contenidos
Instalación de Postfix
Para estos ejemplos he utilizado un equipo con Ubuntu Server 16.04, por lo que vais a ver cosas como apt para instalar los programas. No será muy diferente a hacer todo esto en una Debian, o cualquier otra distribución basada en Ubuntu o Debian. Puede que para otras distribuciones difiera un poco, pero la idea básica es la misma. Lo primero, es instalar Postfix:
Tras eso, veremos una ventana como la siguiente. Aquí podemos elegir configurarlo como Satélite. De hecho, nuestro servidor no hará el envío de correo de forma directa, sino a través de otra máquina.

La siguiente pregunta del instalador, es el nombre del host. Éste debe ser un FQDN, vamos un nombre que identifique la máquina y que su DNS resuelva. De forma que si desde otra máquina hacemos ping o telnet, la máquina la encontremos y sea esta máquina a la que estamos accediendo:
El siguiente paso, será especificar el servidor a través del cual vamos a enviar los correos realmente:
En este punto debemos especificar el host y el puerto. Os pongo aquí varios hosts y puertos de algunos servicios comunes:
- Gmail. smtp.gmail.com:25
- Sendgrid. smtp.sendgrid.net:587
- Mandrill. smtp.mandrillapp.com:587
- Sparkpost. smtp.sparkpostmail.com:587
- Mailgun. smtp.mailgun.org:25
O incluso podemos utilizar cualquier otro servidor de correo de otro proveedor (que hay cientos de servicios gratuitos y de pago para esto). Puede que para algunos de los servicios haya que realizar una activación previa del servicio SMTP, o incluso configurar DNS para poder trabajar correctamente.
Por último, debemos revisar, en el fichero /etc/postfix/main.cf que la línea que menciona myhostname tiene nuestro nombre de host de correo (el FQDN que introdujimos en la segunda pantalla).
Configurar servidores SMTP, usuarios y contraseñas
Cualquier servidor hoy en día, debe tener activada la autentificación de usuarios, de modo que no permita que cualquiera envíe correos desde ese servidor. Era muy habitual en el pasado encontrar servidores abiertos desde los que poder enviar cualquier cosa y, tanto en el mundo fantástico y maravilloso de la piruleta, como en el diseño original del sistema de correo debía ser así. El problema es que mucha gente aprovechaba para hacer cosas malas.
El primer acceso que vamos a configurar es el que va desde el servidor de correo Postfix que estamos montando hasta el servidor de correo a través del cual vamos a enviar los mensajes. Para ello creamos el archivo /etc/postfix/sasl_passwd, en realidad, podemos llamarlo como queramos, aunque es una buena idea colocarlo dentro de /etc/postfix. Dentro del archivo incluimos lo siguiente (con los corchetes y todo):
1 | [mail.dominio.com]:puerto usuario:contraseña |
En esta línea incluiremos el nombre del servidor desde el que realmente enviaremos los correos (Gmail, sendgrid, mailgun…), el puerto, y el nombre de usuario y contraseña desde el que enviaremos los correos. Si, por ejemplo, estamos utilizando nuestra dirección de Gmail para enviar correo, solo podremos utilizar como remitente nuestra propia dirección, aunque tienen por ahí una opción para poder utilizar más direcciones de correo de Google de esta forma. Otros servicios permiten, a través de una clave única enviar correos desde cualquier dirección de correo dentro de un dominio o subdominio, deberá ser nuestro Postfix el que determine qué un usuario no pueda enviar correo con el e-mail de otro.
Una vez tenemos /etc/postfix/sasl_passwd creado, vamos a crear una tabla de búsqueda (lookup-table) para Postfix de esta forma:
De esta forma creamos el archivo /etc/postfix/sasl_passwd.db . Lo siguiente será proteger los dos archivos de contraseñas, tanto el que no tiene extensión (que, si queremos lo podemos borrar y no pasa nada, o también custodiarlo en otra máquina o con otro usuario, ya como queramos). Para protegerlo, hacemos que solo root sea capaz de acceder a los archivos:
Aunque, si sois frikis como yo, y no queréis escribir mucho podéis hacer lo siguiente (más info aquí):
Por último, tenemos que configurar nuestro servidor relay editando el archivo /etc/postfix/main.cf , primero añadiendo (o verificando) que el relay host está configurado, es decir, el servidor a través del cual enviamos realmente los correos:
1 | relayhost = [mail.dominio.com]:puerto |
Podemos poner o buscar esta información cerca de myhostname, mydestination, mynetworks.
Ahora, en el mismo archivo, por ejemplo, al final del archivo, podemos poner un comentario y a continuación las siguientes líneas:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | # Configuración de seguridad para el servidor saliente # Usas SASL para autentificarnos antes de enviar correos smtp_sasl_auth_enable = yes # Utilizar el mapa /etc/postifx/sasl_passwd.db smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd # No permitr métodos de autentificación anónima smtp_sasl_security_options = noanonymous # Utilizar el fichero de certificados raíz del sistema smtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crt # Utilizar STARTTLS para enviar los correos smtp_use_tls = yes |
Configurar autentificación en nuestro servidor
Nuestro servidor debe identificarse cuando se conecta para mandar correos a través de otra máquina (como vimos, que puede ser Gmail, Sendgrid, Mailgun, etc). Pero claro, puede que queramos que nuestros usuarios también se identifiquen en nuestro servidor cuando se conecten. De esta forma, cualquier persona no podrá enviar e-mails. Es algo que no es fundamental, pero sí recomendado si no queremos que nuestro servidor se transforme en una máquina zombie que envíe correos sin piedad, lo que puede desembocar en que el servidor de envío a través del cual mandamos los mensajes nos termine desactivando el usuario y, si el dominio es nuestro, éste pierda reputación y nos resulte tremendamente difícil que el mundo no se crea que enviamos SPAM.
Para configurar esta seguridad, vamos a crear una pequeña base de datos local con los usuarios permitidos. Seguro que si tenemos miles de usuarios deberíamos tener métodos de autentificación más grandes y distribuidos, pero, por experiencia en la mayoría de los casos, utilizando SASL, como antes, va muy bien.
Instalaremos algunas utilidades, si no las tenemos ya:
Ahora, debemos asegurarnos de que el demonio saslauthd se ejecuta automáticamente al iniciar el sistema. Para ello, editaremos /etc/default/saslauthd y nos aseguremos de que la línea que comienza por START y por MECHANISM se mantiene así:
1 2 3 4 5 6 | # Should saslauthd run automatically on startup? (default:no) START=yes ..... ..... # Example MECHANISMS="pam" MECHANISMS="sasldb" |
Tras ello, reiniciaremos el demonio:
Ahora debemos configurar de nuevo algunas cosas en /etc/postfix/main.cf:
1 2 3 4 5 | smtpd_sasl_auth_enable = yes smtpd_sasl_local_domain= smtpd_recipient_restrictions= permit_sasl_authenticated, reject_unauth_destination smtpd_sasl_security_options=noanonymous |
Tras esto, debemos crear (o editar) el archivo /etc/postfix/sasl/smtpd.conf donde especificaremos el tipo de autentificación permitida a la hora de conectarnos e intentar enviar correo a través de Postfix. Dejaremos las siguientes líneas:
1 2 | pwcheck_method: saslauthd mech_list: PLAIN LOGIN CRAM-MD5 DIGEST-MD5 NTLM |
Por supuesto, podríamos (y deberíamos) eliminar PLAIN sobre todo, para que nadie pueda identificarse con contraseñas en texto plano. Aunque, la práctica me dice que a veces puede que necesitemos activarlo temporalmente. De hecho, es problema de los usuarios si utilizan PLAIN para identificarse, los clientes de correo siempre intentan identificarse con el método más seguro disponible.
Tras todo esto, reiniciamos Postfix:
Por último, podemos tener un pequeño problema a la hora de identificar usuarios, y es que, Postfix, muchas veces está configurado con un chroot o una jaula. Eso quiere decir que postfix será incapaz de ver archivos fuera de su jaula, como por ejemplo, el socket de identificación de saslauthd, por lo tanto, no podrá identificar correctamente a los usuarios. Para ello, solo tenemos que introducir el directorio /var/run/saslauthd dentro de la jaula, de esta forma:
Este comando deberíamos ejecutarlo siempre que se inicie el sistema, podríamos incluir una línea en /etc/fstab o un script de arranque personalizado.
Manejo de usuarios
Si queremos crear o cambiar la contraseña de los usuarios del sistema deberíamos hacer:
O también
Para eliminar un usuario podremos utilizar -d en lugar de -c y para listar todos los usuarios del sistema tenemos el comando:
Restringir dispositivos de red
Esto depende de dónde se van a enviar los mensajes. Por seguridad es una buena opción restringir los interfaces de red permitidos para cada servicio que instalamos en nuestros servidores, haciendo que los servicios solo escuchen en aquellos dispositivos para los que estén ofreciendo servicio. Así que, en Postfix también podemos decidir esto. En /etc/postfix/main.cf debemos configurar:
1 | inet_interfaces = all |
Con esta configuración estaremos escuchando en todos los dispositivos de red que tenga la máquina. Si lo hacemos así, debemos restringir el acceso a puertos (si queremos) a otros usuarios. Podríamos utilizar, en lugar de all, la opción loopback-only si solo escuchamos en localhost. Esto puede ser útil si tenemos un servicio web instalado en este servidor que necesite enviar correos. También podemos poner las direcciones IP o nombres de host desde los que escuchamos separados por comas (si son varios).
Si cambiamos algo aquí tendremos que reiniciar el servidor postfix.
Enviando un mensaje
Es momento de enviar un mensaje de prueba. Tenemos muchas opciones. Podemos utilizar sendmail de la siguiente forma:
Tras ello, podemos pulsar Control+D y terminaremos de escribir el mensaje. Supuestamente debe haberse enviado si todo está correcto.
También podemos tirar de funciones de varios lenguajes de programación como mail() para PHP. O de scripts como gemail.sh con el que se podrán enviar archivos adjuntos de forma fácil. Por supuesto, también podemos configurar nuestro cliente de correo favorito para enviarlos.
Logs y depuración
Y, como todo en este mundo informático puede fallar, es importante tener a mano los logs. En estos logs podremos ver mensajes que nos dirán qué está pasando en cada momento. Tendremos dos /var/log/mail.log que nos dirá qué está pasando con cada mensaje, IDs de correos, mensajes que entran en cola o no, errores al mandar un mensaje a otro servidor o al recibirlo, etc. También podemos encontrar errores en /var/log/mail.err sobre todo en lo relativo a fallos en el demonio, conexiones que no se han podido establecer o intentos de hacer cosas raras como por ejemplo poner muchas líneas de encabezados en un mensaje (podemos tener 20, 30 líneas, pero cuando alguien intenta meter 100 o 200 líneas, puede que esté intentando hacer algo malo, o que no esté enviando bien el mensaje).
Foto principal: Designed by Freepik
Hola amigo muy buen post
Consulta tengo un servidor ubuntu y lo tengo instalado con sendmail y funciona bien
el problema es que quiero enviar correos de diferentes Correos EJ: pipe@mail.com
o felipe@otromail.cl
pero no se si es posible instalar varias versiones de correos y ocuparlas para enviar correos de diferentes mesas de servicios en este caso.
Me podrias ayudar con eso.
Tendría que estudiar el caso y hacer alguna prueba. Si te urge, envíame un mensaje privado y lo vemos tranquilamente.
amigo buenas tardes he seguido tu guia me parece muy buena ahora tengo una duda si quiero configurar varios clientes con outlook dentro de mi red local como seria la configuracion
Cada uno tendría un nombre de usuario y una contrasñea. Crea varios usuarios, uno para cada cliente que quieras configurar.
Hola buenas ahora tengo un proyecto en wordpress a través de un servidor vps y pues quería saber, esta configuración de postfix funcionaría para poder enviar correos y recibir correos desde la página en wordpress que tengo ?
Te puede valer, pero en última instancia los estarías enviando todos los correos desde la cuenta de Gmail (o el proveedor que tengas). Si quieres, puedes probar la configuración de Postfix de esta página: https://gaspar.totaki.com/es/configuracion-basica-de-un-servidor-dedicado-vps-o-cloud-basado-en-linux/
Equifax_Secure_CA.pem ya no se instala con ca-certificates. Sabrias como descargar dicho certificado?
Hola
No se si me puedas ayudar, necesito instalar postfix en Ubuntu y registrar una cuenta outlook y yo ver todos los correos que mandan a la cuenta de outlook y tambien andar correos desde el servidor Ubuntu y guardar esto en una base de datos que pueda consultar.
Puedo pagarte por el desarrollo.
Saludos
«Such a well-researched and informative piece.
Concrete Red Deer«
This flexibility allows for a variety of email management options.
El texto que has compartido parece estar relacionado con la configuración y el uso de servidores de correo saliente, específicamente haciendo referencia a servicios como Gmail, sendmail, sendgris, y mailgun. También menciona la opción de enviar correos a través de un servidor propio y la utilidad de aplicar filtros y otras configuraciones relacionadas con el envío de correos. Cincinnati SEO
After reading the article you wrote, I found myself in a daze, and similar excellent articles can also be found in another link.토토사이트추천
I really loved it and thank you very much for sharing this with us.Great site with an awesome post. Thanks for sharing.
https://fortworthtreeservice.net
Awesome blog. I have read and thought about what you said. I have bookmarked it and I am looking forward to reading new articles. Keep up the good work! cookie clicker
It’s interesting to see the various scenarios like using external services such as Sendgrid or Mailgun for high-volume email or setting up local servers for more control and filtering.
Highly rated subject theme, the exact same scrolls are frequently While i are ill-informed of providing they usually are cut-throat using your employment offered.토토사이트추천