En nuestro artículo sobre los mejores servidores SMTP gratuitos, discutimos soluciones basadas en la nube para enviar emails. Estas son bastante comunes para proyectos de todos los tamaños.
Pero, ¿qué pasa si no quiere usar los servicios de relé SMTP proporcionados por Gmail o sus alternativas? En este artículo, le enseñaremos cómo configurar un servidor SMTP local y eliminar cualquier dependencia para enviar emails.
¿Realmente necesita un servidor SMTP?
Usar un servidor SMTP saliente es el método tradicional para enviar emails. Un servidor SMTP es una computadora o una aplicación que envía emails usando el Protocolo Simple de Transferencia de Email (SMTP).
Una solución alternativa es omitir el servidor SMTP y enviar emails directamente al destino. Esto se conoce como Envío Directo (Direct Send) y puede usarlo a través de programas específicos de software de email.
Sin embargo, el Envío Directo no es muy confiable, y aquí le decimos el porqué:
- No se puede usar si el puerto 25 está bloqueado por su Proveedor de Servicios de Internet (ISP).
- No es adecuado para enviar emails masivos debido a las múltiples conexiones a muchos servidores diferentes.
- No puede enviar emails no personalizados.
- Puede ser bloqueado por filtros de email porque los emails no se envían desde un servidor SMTP regular.
Así que, dejemos el Envío Directo a un lado y averigüemos por qué alguien ejecutaría su propio servidor SMTP.
Pros y contras de un servidor SMTP local
Pros | Contras |
No hay límite diario o por hora en el número de emails salientes Reportes instantáneos Privacidad y control de todos sus emails salientes No hay IP compartida | Ejecutar un servidor SMTP local lleva tiempo y esfuerzo La tasa de rebote puede aumentar en un 20-30% |
Para resumir esta comparación, aquí hay un comentario que encontramos en Reddit:
Fuente: Reddit
Las soluciones de envío basadas en la nube, como Email API/SMTP de Mailtrap, también proporcionan todas las ventajas mencionadas arriba. Estas soluciones de terceros son más seguras y aún le proporcionan el control total sobre su infraestructura de email.
Sin embargo, todavía tienen el factor de dependencia. Así que, si desea eliminar la dependencia, puede, por supuesto, configurar un servidor SMTP usando software específico.
Requisitos para un servidor SMTP local
Hasta ahora, no hay requisitos específicos. Sin embargo, debe estar preparado para lo siguiente:
- Algunos ISP pueden bloquear el puerto 25. Puede resolver este problema contactando a su proveedor de ISP y averiguando qué limitaciones pueden imponer. Además, necesita solicitar el servidor DNS correcto y permiso para la resolución del registro MX.
- Para emails masivos, probablemente debería optar por un dominio y una dirección IP fija asociada con él, esto aumentará su resistencia a los filtros de spam.
Configuración rápida del servidor SMTP
Ahora, pongámonos manos a la obra. Dado que va a configurar un servidor SMTP en su computadora, es crucial tener en cuenta el sistema operativo u OS. Así que, explicaremos cómo configurar un servidor SMTP local en máquinas macOS, Windows y Linux.
Nota importante: Si envía emails de prueba a una dirección de email real, es posible que no los encuentre en la bandeja de entrada. No olvide revisar su carpeta de spam. Los clientes de email como Gmail, Yahoo, Outlook y otros son sospechosos de nuevos agentes de transferencia de email (MTAs).
Asegúrese de respaldar el archivo de configuración de Postfix antes de hacer cualquier cambio.
Cómo configurar un servidor SMTP local en macOS
En el pasado, el servidor macOS era una aplicación poderosa que la gente usaba para gestionar servicios de red y, como habrá adivinado, configurar servidores de email. Utilizaba Postfix (un MTA) por defecto.
Poco a poco, Apple redujo las características del servidor macOS y, en 2022, lo descontinuó completamente. La aplicación ya no se actualizará para coincidir con las nuevas versiones de macOS.
Las versiones existentes del servidor macOS son compatibles con Monterey y versiones anteriores de macOS. Esto significa que aún puede usarlo para su configuración de servidor SMTP.
Nota: La configuración puede diferir ligeramente dependiendo de la versión del OS que esté usando. En el tutorial a continuación, configuraremos un servidor SMTP local en macOS Big Sur. Para versiones anteriores o posteriores de macOS, consulte el repositorio de GitHub.
Postfix debería estar preinstalado en su máquina. Si no es así, puede instalarlo usando un gestor de paquetes de terceros como Homebrew o MacPorts. Para Homebrew, ejecute el siguiente comando:
brew install postfix
Luego cree un nuevo archivo de configuración usando el siguiente fragmento de código:
sudo nano /etc/postfix/main.cf
Si Postfix ya está instalado, puedes acceder a él ejecutando:
sudo vim /etc/postfix/main.cf
Dígale a Postfix qué nombre debe usar para identificarse ante otros servidores de email. Agregue las siguientes líneas:
myhostname = john.ejemplo.com
myorigin = ejemplo.com
Si su nombre de usuario local es John, el email parecerá provenir de john@ejemplo.com.
Ahora es el momento de configurar el host de retransmisión. Es la máquina que aceptará los emails después de la autenticación y los retransmitirá al servidor SMTP.
relayhost = mail.ejemplo.com:25
El siguiente paso es agregar la IP de la red local, definir parámetros TLS y habilitar SASL. Este último requiere un archivo de configuración adicional en el que se almacena la contraseña.
Cree el archivo sasl_passwd:
sudo vim /etc/postfix/sasl_passwd
Agregue la siguiente línea:
mail.ejemplo.com:25 john@ejemplo.com:<su contraseña>
Guarde el archivo con:
sudo postmap /etc/postfix/sasl_passwd
Ahora vuelva a su archivo main.cf.
El código completo se verá así:
myhostname = mailserver.my.home
myorigin = $myhostname
mydestination = $myhostname, mailserver.my.home, localhost.localdomain, localhost
relayhost = mail.ejemplo.com:25
mynetworks = 127.0.0.0/8, [::1]/128
smtpd_client_restrictions = permit_mynetworks permit_sasl_authenticated permit
recipient_delimiter = +
tls_random_source = dev:/dev/urandom
smtpd_tls_ciphers = medium
inet_interfaces = all
smtpd_use_tls=yes
smtpd_tls_cert_file=/etc/certs/mailserver.my.home.crt
smtpd_tls_key_file=/etc/ssl/private/mailserver.my.home.key
smtpd_tls_security_level=may
smtp_tls_CApath=/opt/homebrew/etc/ssl/
smtp_tls_security_level=may
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated permit_inet_interfaces defer_unauth_destination
smtpd_recipient_restrictions = permit_mynetworks permit_sasl_authenticated
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous
sender_canonical_maps = hash:/etc/postfix/sender_canonical
virtual_maps = hash:/etc/postfix/virtual
home_mailbox = Maildir/
sender_dependent_relayhost_maps = hash:/etc/postfix/relayhost_map
Ahora tenemos que autorizar el arranque de Postfix y reiniciarlo. Para eso, necesitamos copiar el plist maestro de Postfix fuera de la carpeta del sistema.
sudo cp /System/Library/LaunchDaemons/com.apple.postfix.master.plist /Library/LaunchDaemons/org.postfix.custom.plist
Luego necesitamos ejecutar:
sudo vi /Library/LaunchDaemons/org.postfix.custom.plist
El valor Com.apple.postfix.master
debe ser sustituido por org.postfix.custom
.
Ahora deberíamos eliminar estas líneas para evitar la salida después de 60 segundos
<string>-e</string>
<string>60</string>
y agregar estas antes de </dict>
<key>KeepAlive</key>
<true/>
<key>RunAtLoad</key>
<true/>
Es hora de relanzar el daemon
sudo launchctl unload /Library/LaunchDaemons/org.postfix.custom.plist
sudo launchctl load /Library/LaunchDaemons/org.postfix.custom.plist
y verificar si ha iniciado.
sudo launchctl list | grep org.postfix
Luego puede verificar el puerto de escucha 25
sudo lsof -i -P | grep LISTEN
y verificar el registro.
log stream --predicate '(process == "smtpd") || (process == "smtp")' --info
Cómo configurar un servidor de email SMTP en Linux
La mayoría de las distribuciones de Linux se envían con las dos implementaciones de SMTP más comunes: Sendmail y Postfix. Sendmail tiene un diseño bastante complejo y una arquitectura menos segura; por eso elegimos Postfix nuevamente.
Instalación
Si no tiene Postfix en su máquina, necesitará instalarlo. Además, necesitará el paquete de email Mailutils, que incluye los programas necesarios para que Postfix funcione:
sudo apt install mailutils postfix
En la ventana de configuración de Postfix, necesitará elegir la configuración de email de Internet Site. Finalmente, necesitará especificar el nombre del sistema de email. Debe ser el mismo nombre que asignó al nombre de dominio que apunta a su servidor. Usemos ejemplo.com.
Configuración
Ahora, configuremos Postfix para procesar solicitudes de envío de emails desde localhost. Para esto, necesita modificar el archivo de configuración principal main.cf:
sudo nano /etc/postfix/main.cf
Desplácese hacia abajo hasta la línea inet_interfaces = all
para reemplazarla con inet_interfaces = loopback-only
. Esto le dirá a Postfix que acepte los emails entrantes solo en localhost.
Además, necesita modificar mydestination
, que especifica la lista de dominios. Debe verse así:
mydestination = $myhostname, localhost.$ejemplo.com, $ejemplo.com
Guarde el archivo y reinicie Postfix.
sudo systemctl restart postfix
Al final, intente enviar un email de prueba.
echo "Cuerpo del email de prueba" | mail -s "Línea de asunto del email de prueba" receipient's_email_address
Cómo configurar un servidor de retransmisión SMTP local en Windows
Para configurar un servidor SMTP en Windows, tiene dos opciones principales:
- Usar opciones de software como MailEnable, Apache James o hMailServer. En este tutorial, incluiremos pasos para hMailServer ya que es la opción más popular;
- Usar Servicios de Información de Internet (IIS) de Windows en el servidor BizTalk u otros servidores con IIS instalado.
Instalación usando hMailServer
Descargue la última versión de hMailServer e instálela. Al principio de la instalación, debe prestar atención a lo siguiente:
- En la ventana Select Components, asegúrese de que se elija la instalación completa. Los componentes de servidor y administración deben estar marcados.
- En la ventana Select database server type, marque el motor de base de datos incorporado.
- En la ventana hMailServer Security, cree una contraseña para el usuario predeterminado.
Una vez instalado, es hora de ejecutar y configurar hMailServer.
- Haga clic en ‘Connect’ en la ventana de inicio e ingrese la contraseña que configuró durante la instalación.
- Haga clic en ‘Add domain’ e ingrese su nombre de dominio en el campo correspondiente. Por cierto, puede usar un nombre de dominio falso ya que el real no es necesario para enviar emails. Pero, en ese caso, asegúrese de que el dominio falso no exista realmente. Haga clic en ‘Save’ y verá su dominio creado en la pestaña izquierda.
- Seleccione la carpeta ‘Accounts’ en la pestaña izquierda y haga clic en ‘Add…’ para configurar una. Todo lo que necesita hacer aquí es ingresar un nombre en el campo ‘Address’. Esto configurará su dirección de email. Opcionalmente, puede especificar una contraseña. Haga clic en ‘Save’ y diríjase a ‘Settings’ en la pestaña izquierda.
- Expanda el hilo ‘Settings’ y seleccione ‘Protocols’. Desmarque POP3 y IMAP. Para más información sobre estos protocolos, visite nuestro artículo comparativo IMAP vs POP3 vs SMTP. Luego, haga clic en ‘Save’.
- Ahora, seleccione ‘Advanced’ en el hilo ‘Settings’ e ingrese localhost en el campo ‘Default domain’ en la pestaña derecha. Haga clic en ‘Save’. Para finalizar con la configuración avanzada, seleccione ‘Auto-ban’ y desmarque la casilla ‘Enabled’. Haga clic en ‘Save’.
- Al final, expanda el hilo ‘Utilities’ y seleccione ‘Diagnostics’. Seleccione su dominio para ejecutar pruebas y haga clic en ‘Start’. No nos interesan todas las pruebas, solo ‘Collect server details’ y ‘Test outbound port’. Estos deben estar marcados en verde.
Eso es todo. Ahora puede enviar su email de prueba. Esto se puede hacer con PowerShell, es rápido y fácil. Para más información sobre esto, lea nuestro artículo sobre enviar emails desde PowerShell. Ejecute la siguiente línea (no olvide ingresar sus datos):
Send-MailMessage -To "<dirección email del destinatario>" -From "<su dirección email>" -Subject "Asunto de su email" -Body "Texto del cuerpo de su email" -Credential "<su nombre de usuario>" -SmtpServer "127.0.0.1" -Port 25
En la ventana emergente, necesitará ingresar su contraseña y luego estará listo para continuar.
Instalación usando IIS
La configuración del relé SMTP con IIS requiere cualquier versión de Windows Server. Desglosaremos el proceso de instalación general. Para obtener más detalles sobre su versión específica, consulte la documentación de Microsoft.
Para instalar el servidor SMTP, necesitará completar los siguientes pasos:
- Accede a su ‘Server Manager’ y seleccione ‘Dashboard’ en la barra de navegación izquierda;
- Seleccione ‘Add roles and features’ para iniciar el asistente. Esto le permitirá ampliar la funcionalidad del servidor y configurarlo para realizar tareas específicas;
- Verá la ventana ‘Before you begin’ que incluye información importante de instalación. Presione ‘Next’;
- Elija ‘Role-based or feature-based installation’ y presione ‘Next’ para continuar con el proceso de configuración;
- El siguiente paso es seleccionar el servidor que desea usar para la instalación de SMTP. En esta etapa, puede seleccionar los servidores que agregó previamente. Un servidor local es la opción predeterminada aquí;
- En ‘Server roles’ puede presionar ‘Next’ sin elegir ninguna opción;
- La pestaña ‘Features’ es el lugar donde seleccionamos el servidor SMTP. Es posible que se le solicite configurar características adicionales del servidor. Haga clic en ‘Next’;
- Una vez hecho esto, verá la ventana de confirmación. Marque ‘Restart the destination server automatically if required’ para asegurarse de que el servidor se reinicie después de la instalación. Esto iniciará la instalación. Presione ‘Close’ cuando el proceso esté completo.
Después de la instalación, es necesario configurar el Servidor Virtual SMTP. Para eso, necesitamos el Administrador de IIS 6.0.
- El primer paso es abrir el IIS Manager. Se puede hacer buscando inetmgr6.exe en Inicio o accediendo al Server Manager y eligiendo ‘IIS Manager’ desde la pestaña Tools;
- Expanda el nombre de la computadora para mostrar una vista de árbol del servidor. Haga clic derecho en ‘SMTP Virtual Server #1’ y elija ‘Properties’;
- Elija el botón ‘Relay’ en la pestaña Access para modificar la configuración del relé de su servidor SMTP;
- El siguiente paso es elegir las direcciones IP que podrán retransmitir a través de este servidor SMTP. Para otorgar acceso solo a su computadora, presione ‘Add’, escriba ‘127.0.0.1’ y presione ‘Ok’. Para agregar otras computadoras, tendrá que ingresar sus direcciones IP. Marcar ‘Enable logging’ para recibir registros de mensajes de email para una fácil solución de problemas;
- Vaya a la pestaña Delivery, seleccione ‘Outbound Security’ y elija entre los métodos de autenticación. Tiene cuatro opciones: acceso anónimo, autenticación básica, autenticación integrada de Windows y cifrado TLS (Anonymous access, basic authentication, Integrated Windows Authentication, y TLS encryption) Si está usando el servidor con fines de prueba, se recomienda usar acceso anónimo para garantizar que la configuración no falle el comando AUTH;
- En la misma pestaña, seleccione ‘Outbound connections’. El puerto TCP o SMTP predeterminado es 25. Debe asegurarse de que no esté bloqueado. Si usa cualquier otro puerto, debe verificar si está abierto dentro de su firewall;
- Ahora seleccione ‘Advanced’ para expandir las opciones avanzadas de su Servidor Virtual SMTP. Normalmente, aquí se enumerarán los Nombres de Dominio Completamente Calificados. Debe dejar el campo de Host Inteligente vacío. Tenga en cuenta que algunos proveedores de red pueden requerir el Host Inteligente: un servidor que se encargará de la entrega;
- Presione ‘OK’ y reinicie el servidor para aplicar la configuración.
Una vez que complete estos pasos, debe probar la configuración con Telnet. Si puede enviar emails exitosamente, entonces esto significa que tiene un servidor de email SMTP funcionando.
¿Es un servidor SMTP bueno para las pruebas?
En la mayoría de los casos, las personas configuran servidores SMTP locales con fines de prueba. Si está desarrollando una aplicación que enviará emails, necesitará probar esta función, y un servidor SMTP real que se ejecute en su máquina local podría parecer una buena opción. Pero, ¿lo es?
Por un lado, instalar y configurar un servidor SMTP local no es problemático. Sin embargo, hay una solución mucho mejor.
Mailtrap es una Plataforma de Email Delivery que cubre todas sus necesidades relacionadas con el email. Le permite probar, enviar y controlar su infraestructura de email a través de una sola plataforma.
En lugar de configuraciones largas del servidor SMTP local, puede usar Email Testing de Mailtrap: un Sandbox de Email con un entorno seguro para probar, inspeccionar y depurar emails. Todo esto se puede hacer en staging, lo que significa que su aplicación puede enviar un email, pero no será entregado al destinatario real.
En su lugar, el email de prueba irá a la bandeja de entrada del Sandbox. Así, no hay riesgos de spamear a los usuarios.
Desde la bandeja de entrada, es posible validar el HTML/CSS de su email y ver rápidamente los resultados del análisis de spam que son verificados por el filtro Apache SpamAssassin.
El proceso de instalación es sencillo. Todo lo que tiene que hacer es actualizar su configuración SMTP con las credenciales relevantes:
- Host: sandbox.smtp.mailtrap.io
- Puerto: 25 o 465 o 587 o 2525
- Nombre de usuario: único para cada bandeja de entrada
- Contraseña: única para cada bandeja de entrada
Alternativamente, puede copiar y pegar un fragmento de código listo para usar que aparece una vez que se selecciona el idioma relevante del menú desplegable.
Cuando su aplicación entre en producción, puede usar Email API/SMTP de Mailtrap para llegar a las bandejas de entrada de los destinatarios. Es una infraestructura de email que ofrece altas tasas de entregabilidad por diseño.
A diferencia del servidor SMTP local, proporcionamos registros DNS para los protocolos de autenticación SPF, DKIM y DMARC. También realizamos verificaciones de seguridad para máxima protección y soportamos conexiones cifradas.
Una vez que los emails son enviados, Email API/SMTP le permitirá acceder en profundidad a sus Analíticas Accionables (Actionable In-Depth Analytics).
Para finalizar
Ejecutar un servidor de email local puede ser a veces una molestia. Se requiere una gran cantidad de conocimientos y esfuerzo para lograr una buena entregabilidad de emails usando su propio servidor SMTP. Es por eso que recomendamos elegir un servicio de API y SMTP como Email API/SMTP de Mailtrap.
Un servidor SMTP local es quizás bueno para fines de prueba, pero Email Testing de Mailtrap u otras herramientas de prueba de email lo harán mejor.
Entonces, ¿realmente necesita un servidor SMTP local? Solo usted puede responder a eso. ¡Buena suerte!