Datos comprobados en octubre de 2026.
Veredicto: sendmail sí, pero solo en estos casos
Sendmail sigue vivo, pero ya no es lo primero que se instala. Para la mayoría de quienes necesitan enviar correo desde un servidor Linux hoy, Postfix + mailx es la combinación más sencilla, la mejor mantenida y la que viene por defecto en Ubuntu Server, Debian y RHEL desde hace años. Si tu caso es compatibilidad histórica con un script legado, reenvío a un relay corporativo Exchange/SMTP o una cola local que enrute a un MX propio, sendmail completo sigue siendo una opción sólida:configuración claros, décadas de documentación y comportamiento predecible. Si solo vas a mandar uno o dos correos desde la línea de comandos, basta con sendmail a secas o con mailx sin montar un MTA completo. Una advertencia importante: sendmail no ha tenido un release mayor en años y algunas distros (Debian desde la 12 y Fedora) ya lo marcan como paquete en transición o deprecado, así que confirmar la versión disponible en el repositorio antes de apostar por él en un entorno de producción.
Qué hace falta antes de empezar
Antes de tocar nada, asegúrate de tener lo básico cubierto. Necesitas una distribución Linux con sendmail en sus repositorios oficiales: RHEL, CentOS Stream, AlmaLinux, Rocky Linux, Debian y Ubuntu lo incluyen, aunque en Ubuntu el paquete correcto es sendmail (no sendmail-base, que es solo una parte). También necesitas acceso como root o un usuario con sudo, un relay SMTP externo al que enviar o un servidor MX propio al que apuntar, y el puerto 25 saliente abierto en el firewall. El DNS inverso del IP desde el que enviarás tiene que estar configurado y resolver al mismo hostname que el HELO/EHLO de sendmail; sin esto, casi todo acaba en la carpeta de spam.
Comprobaciones rápidas que conviene hacer antes de instalar:
nmap -p 25 smtp.tu-corp.compara verificar que el relay escucha.nslookup IP.del.servidorpara confirmar que el PTR existe y coincide.dig +short MX tudominio.compara ver quién recibe el correo de tu dominio.systemctl status firewalldoufw statuspara revisar que el 25 saliente no está bloqueado.
Métodos para enviar correo en Linux, comparados
Sendmail no es el único camino para mandar correo desde un servidor Linux, ni el más moderno. Esta tabla resume las opciones reales que vas a encontrar en los repositorios de Debian, Ubuntu, RHEL y Fedora.
| Método | Distro habitual | Sirve como MTA completo | Autenticación SMTP | Mantenimiento activo | Curva de instalación |
|---|---|---|---|---|---|
| sendmail | Debian, Ubuntu, RHEL, Fedora | Sí | Sí, con authinfo |
Bajo, sin release mayor reciente | Media-alta |
| Postfix | Debian, Ubuntu, RHEL, Fedora | Sí | Sí, con sasl_passwd |
Alto, release cada pocos meses | Baja |
| mailx / mail | Todas | No, solo cliente | Heredada del MTA | Alto | Muy baja |
| mutt | Todas | No, solo cliente MUA | Soporta SASL | Alto | Baja |
| ssmtp | Debian, Ubuntu (en desuso) | No, solo reenvío | Sí, con revaliases |
Abandonado | Muy baja |
| swaks | Todas, Perl | No, herramienta de prueba | Sí | Alto | Baja |
Sendmail sigue siendo relevante porque muchos scripts y aplicaciones legacy lo esperan en /usr/sbin/sendmail y porque su lenguaje de configuración .mc está extremadamente documentado. Postfix es más rápido de poner en marcha y consume menos memoria; mailx y mutt son solo clientes, no resuelven el envío si no hay un MTA debajo.
Instalar sendmail en Debian/Ubuntu y derivadas
En Debian y Ubuntu la instalación es directa, pero conviene hacer el backup de la configuración previa si ya existía un MTA (Postfix casi siempre viene por defecto). El orden importa: primero el paquete principal, luego las herramientas de compilación de los .mc.
sudo apt updatesudo apt install sendmailsudo apt install sensible-utils m4 make- Si Ubuntu es 24.04 o superior y el paquete no aparece, habilita universe con
sudo add-apt-repository universe && sudo apt update. - Comprueba la instalación con
sendmail -bv root; debe devolver un código 0 y un mensaje de "mailer ready". - Si venías de Postfix, detenlo antes con
sudo systemctl stop postfixpara que no compitan por el puerto 25. - Reinicia el servicio:
sudo systemctl enable --now sendmail.
El proceso tarda entre 3 y 5 minutos según la conexión y el equipo. Tras reiniciar, systemctl status sendmail debe mostrar active (running) y el puerto 25 debe estar abierto con ss -tlnp | grep :25.
Sendmail en Debian instala dos binarios:
/usr/sbin/sendmail(el envío) y/usr/sbin/sendmail.msp(la cola local); no confundirlos al depurar.
Instalar sendmail en RHEL, Rocky, Alma y Fedora
En las derivadas de Red Hat el paquete se llama igual, pero el grupo y la ruta de trabajo difieren ligeramente respecto a Debian. En RHEL 9, Rocky 9, Alma 9 y Fedora 40+ el gestor es dnf; en RHEL 7 y CentOS 7 aún funciona yum.
sudo dnf install sendmail sendmail-cf m4 make- En sistemas más antiguos:
sudo yum install sendmail sendmail-cf m4 make. - Habilita e inicia el servicio:
sudo systemctl enable --now sendmail. - Comprueba:
sendmail -bv rootysystemctl status sendmail. - Abre el puerto en el firewall:
sudo firewall-cmd --permanent --add-service=smtp && sudo firewall-cmd --reload.
La ruta de configuración es la misma: /etc/mail/. La diferencia práctica con Debian está en los permisos: el directorio pertenece a root:smmsp en RHEL y a root:root en Debian, y el binario de cola se llama sendmail.msp en ambos pero con rutas de /var/spool/clientmqueue distintas. Si copias .mc de un tutorial de Debian a un servidor RHEL, revisa los paths antes de ejecutar make.
Configurar sendmail.mc como relay hacia un SMTP externo
El caso de uso más común hoy no es usar sendmail como MTA final, sino como cliente que entrega todo a un relay corporativo (Exchange Online, Gmail, SendGrid, un SMTP propio). Esto se configura en el archivo .mc y se compila a .cf.
- Haz backup:
sudo cp /etc/mail/sendmail.mc /etc/mail/sendmail.mc.bak. - Edita
/etc/mail/sendmail.mcy añade al final:define(\SMART_HOST\,\smtp.tu-corp.com\)dnl. - Si el relay requiere autenticación, quita el
dnlde la líneaFEATURE(\authinfo\)y dedefine(\confAUTH_OPTIONS\,\A p\)dnl. - Crea
/etc/mail/authinfocon este contenido (una sola línea):
AuthInfo:smtp.tu-corp.com "U:usuario" "I:user@tu-corp.com" "P:tu-clave"
- Genera la base de datos:
sudo makemap hash /etc/mail/authinfo.db < /etc/mail/authinfo. - Recompila la configuración:
cd /etc/mail && sudo make. - Recarga:
sudo systemctl restart sendmail.
Tras reiniciar, el log /var/log/maillog (en RHEL) o /var/log/mail.log (en Debian) debe mostrar conexiones al SMART_HOST. Si ves stat=Deferredtransportarlo, el relay está rechazando: revisa usuario, clave y que el IP esté en la allowlist del SMTP corporativo.
Reglas anti-spam mínimas en sendmail.cf
Sendmail sin tocar nada más entrega correo, pero también acepta ser open relay si la configuración no se endurece. Antes de abrirlo a internet, aplica al menos estas medidas en /etc/mail/sendmail.mc y recompila con make.
- Cambia la macro
C{E}para que los mensajes arootse reescriban a una dirección real y no expongan el usuario local. - Revisa el Ruleset 94 (anti-spam) y asegúrate de que usa exactamente un tabulador después de
R$+; un espacio rompe la regla silenciosamente. - Desactiva
EXPNyVRFYsi no los necesitas: añadedefine(\confPRIVACY_FLAGS\,\goaway\)dnlpara limitar qué información devuelve el servidor. - Activa
FEATURE(\delay_checks\)para que la verificación de destinatario se haga después deRCPT TOy no antes, lo que reduce carga y fugas de información. - Activa
FEATURE(\conncontrol\)yFEATURE(\ratecontrol\)para limitar conexiones por IP y reducir el impacto de intentos de relay.
Editar /etc/mail/sendmail.cf a mano solo tiene sentido si entiendes cada regla: cualquier cambio sobrevive a make solo si lo haces en el .mc correspondiente.
Mandar un email de prueba paso a paso
Una vez configurado, verifica que el envío funciona de verdad con un mensaje real. Crea un archivo de texto con la cabecera y el cuerpo.
- Crea
/tmp/email.txtcon:
Subject: Prueba de sendmail desde mi servidor
From: admin@tudominio.com
To: tucuenta@gmail.com
Este es un mensaje de prueba enviado con sendmail.
- Envíalo con
-vpara ver la conversación SMTP completa:sendmail -v -f admin@tudominio.com tucuenta@gmail.com < /tmp/email.txt. - En otra terminal, sigue el log en tiempo real:
sudo tail -f /var/log/maillog(RHEL) osudo tail -f /var/log/mail.log(Debian/Ubuntu). - Confirma la entrega con
mailqosendmail -bp; la cola debe quedar vacía y el destinatario debe recibir el mensaje en menos de un minuto.
Códigos de error que verás en el log y qué mirar en cada caso:
stat=Deferred: el relay no responde o rechaza temporalmente. RevisaSMART_HOST, credenciales y que el puerto 25 saliente no esté bloqueado.stat=User unknown: el destinatario no existe en el relay o en el MX destino. Confirma la dirección y elMXcondig.stat=Service unavailable: el relay está caído o tu IP está en una blacklist. Comprueba conmxtoolbox.com.stat=Mailbox full: el buzón destino no admite más mensajes; es del lado del receptor, no hay nada que tocar en el servidor.
Preguntas frecuentes sobre sendmail en Linux
1. ¿Cómo se ve un envío básico de correo con sendmail en Linux?
Un envío mínimo se hace con echo "Cuerpo del mensaje" | sendmail -s "Asunto" destinatario@dominio.com. Para añadir el remitente visible se usa el parámetro -f remitente@dominio.com; muchos MTA necesitan que esa dirección exista como alias local para evitar rechazos SPF.
2. ¿Dónde se configura sendmail y qué archivos hay que tocar?
El binario se compila desde /usr/src y la configuración se reparte entre /etc/mail/sendmail.cf (compilado, no se edita a mano) y /etc/mail/sendmail.mc, que es la macro que regenera el primero con m4. Tras cualquier cambio en /etc/mail/*.mc, aliases o access hay que ejecutar make en /etc/mail para reconstruir sendmail.cf y reiniciar el servicio.
3. ¿Cómo se envía un correo desde la línea de comandos con una dirección de remitente concreta?
Con sendmail -f usuario@dominio.com destinatario@otro.com < mensaje.txt eliges remitente y destinatario leyendo el cuerpo desde un archivo, incluidas las cabeceras From, Subject y cualquier otra que necesites. Si el dominio del From no está en local-host-names o relay-domains, los servidores receptores lo descartarán con un error 5.7.1 por política SPF.
4. ¿Cómo se adjunta un archivo al enviar un correo desde la terminal?
sendmail no adjunta binarios por sí mismo, así que lo habitual es convertir el archivo con uuencode o mime y concatenarlo al mensaje, por ejemplo (uuencode informe.pdf informe.pdf; cat cuerpo.txt) | sendmail -s "Informe" destinatario@dominio.com. Para algo más limpio, mutt64 o mailx con la opción -a generan automáticamente el adjunto MIME en base64 y mantienen cabeceras válidas.
5. ¿Cómo se borran todos los mensajes del buzón local en Linux?
En un buzón mbox tradicional basta con cp /dev/null ~/mbox o >mbox.lst para dejarlo a cero bytes; antes conviene salir del lector con mail64 -q. En servidores con formato maildir hay que borrar los archivos dentro de ~/Maildir/cur y ~/Maildir/new, y en colas activas como Postfix se usa postsuper -d ALL deferred para vaciar la cola de diferidos.
6. ¿Cómo se envía correo desde la línea de comandos usando postfix en lugar de sendmail?
Postfix instala un binario compatible llamado sendmail, así que los mismos comandos sirven una vez configurado. Para un envío directo con remitente autenticado, echo "Cuerpo" | sendmail -F "Tu Nombre" -f usuario@dominio.com destinatario@dominio.com, asegurándote de que /etc/postfix/main.cf tiene smtputf8_enable=no y que el relay_maps apunta a un servidor autorizado, porque Postfix rechaza envíos directos sin SASL por defecto desde la versión 3.6.
Fuentes
- NylasSend Email from Linux Command Line Without SMTP Server or Postfixconsultado el 14/10/2026
- KanmailBest Email Clients for Linux in 2026 | Kanmailconsultado el 14/10/2026
- Kalisendemail | Kali Linux Toolsconsultado el 14/10/2026
- Linuxfoundationsendmail – Linux Foundation Referenced Specificationsconsultado el 14/10/2026
- UnixhealthcheckEnabling sendmail on Linux – UNIX Health Checkconsultado el 14/10/2026
