¿Cómo configurar Sendmail en Ubuntu?

Publicado 21 de enero de 2026

Problema: Configurar Sendmail en Ubuntu

Sendmail es un agente de transferencia de correo para sistemas Linux, pero configurarlo en Ubuntu puede ser difícil. Se necesita una configuración correcta para que los correos electrónicos se envíen y reciban correctamente, evitando problemas de entrega o de seguridad.

Instalar Sendmail en Ubuntu

Pasos para Instalar Sendmail

Para instalar Sendmail en Ubuntu:

  1. Abre una terminal en tu sistema Ubuntu.

  2. Instala Sendmail usando apt-get:

    sudo apt-get install sendmail
  3. Introduce la contraseña de tu sistema cuando se te pida.

  4. Espera a que termine la instalación.

  5. Verifica si Sendmail está instalado:

    sendmail -v

    Esto muestra la versión de Sendmail si está instalado correctamente.

  6. Verifica el estado del servicio de Sendmail:

    sudo systemctl status sendmail

    Esto muestra si Sendmail está activo y ejecutándose.

Después de estos pasos, tendrás Sendmail instalado en tu sistema Ubuntu.

Consejo: Configurar Sendmail

Después de instalar Sendmail, puede que necesites configurarlo. Para hacer esto, edita el archivo de configuración de Sendmail:

sudo nano /etc/mail/sendmail.mc

Realiza tus cambios, luego reconstruye la configuración:

sudo make -C /etc/mail
sudo systemctl restart sendmail

Configuración Básica de Sendmail

Ejecutar sendmailconfig

El comando sendmailconfig establece la configuración básica para Sendmail. Esto es lo que necesitas saber sobre este comando:

  • Para ejecutar sendmailconfig, usa:

    sudo sendmailconfig
  • Este comando actualiza los archivos de configuración de Sendmail.

  • Hace preguntas sobre tu configuración de correo y crea la configuración basándose en tus respuestas.

  • La herramienta tiene como objetivo crear una configuración funcional para configuraciones comunes.

  • Actualiza archivos como /etc/mail/sendmail.cf y /etc/mail/submit.cf.

  • El comando puede preguntar sobre el nombre de dominio completo (FQDN) de tu sistema.

  • Puede pedirte que elijas entre los protocolos IPv4 e IPv6.

  • Es posible que necesites confirmar cambios en los archivos de configuración existentes.

El propósito principal de este paso de configuración inicial es:

  • Establecer una configuración básica de Sendmail funcional.

  • Ayudar a usuarios que no están familiarizados con la estructura de configuración de Sendmail.

  • Crear un punto de partida para una mayor personalización si es necesario.

  • Reducir la posibilidad de una configuración incorrecta que podría causar problemas de seguridad o funcionalidad.

Recuerda que, aunque sendmailconfig proporciona un buen punto de partida, puede que necesites hacer más cambios para requisitos específicos o configuraciones avanzadas.

Consejo: Respalda Tu Configuración

Antes de ejecutar sendmailconfig, es una buena práctica respaldar tus archivos de configuración de Sendmail existentes. Puedes hacer esto copiando los archivos de configuración principales:

sudo cp /etc/mail/sendmail.cf /etc/mail/sendmail.cf.backup
sudo cp /etc/mail/submit.cf /etc/mail/submit.cf.backup

Esto te permite revertir cambios si es necesario.

Localizar y Editar Archivos de Configuración de Sendmail

Archivos de Configuración Clave

Sendmail usa varios archivos de configuración para controlar su comportamiento. Los archivos principales que necesitas conocer son:

  • /etc/mail/sendmail.conf: Este archivo contiene la configuración general para Sendmail. Controla opciones como el tamaño máximo de mensaje, el número de procesadores de cola y la ubicación de los directorios de Sendmail.

  • /etc/cron.d/sendmail: Este archivo configura tareas programadas para Sendmail. Contiene entradas para ejecutar la cola y actualizar las bases de datos de Sendmail a intervalos.

  • /etc/mail/sendmail.mc: Este es el archivo de configuración principal para Sendmail. Está escrito en lenguaje de macros m4 y define la mayoría de los parámetros operacionales de Sendmail. Después de editar este archivo, necesitas compilarlo en sendmail.cf para que los cambios surtan efecto.

Para editar estos archivos:

  1. Abre una terminal en tu sistema Ubuntu.

  2. Usa un editor de texto con privilegios de root para abrir el archivo. Por ejemplo:

    sudo nano /etc/mail/sendmail.mc
  3. Realiza tus cambios en el archivo.

  4. Guarda el archivo y sal del editor.

  5. Si editaste sendmail.mc, compílalo a sendmail.cf:

    sudo m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf
  6. Reinicia Sendmail para aplicar los cambios:

    sudo systemctl restart sendmail

Recuerda respaldar estos archivos antes de hacer cambios. Esto te permite volver a una configuración funcional si es necesario.

Consejo: Usa Control de Versiones para la Gestión de Configuración

Considera usar un sistema de control de versiones como Git para gestionar tus archivos de configuración de Sendmail. Este enfoque te permite rastrear cambios, revertir a versiones anteriores fácilmente y colaborar con miembros del equipo al gestionar configuraciones complejas. Aquí hay un flujo de trabajo básico:

  1. Inicializa un repositorio Git en tu directorio /etc/mail:

    cd /etc/mail
    sudo git init
  2. Agrega tus archivos de configuración al repositorio:

    sudo git add sendmail.mc sendmail.cf
  3. Confirma tus cambios:

    sudo git commit -m "Confirmación inicial de configuración de Sendmail"
  4. Antes de hacer cambios, crea una nueva rama:

    sudo git checkout -b nuevos-cambios-config
  5. Después de hacer y probar tus cambios, confírmalos:

    sudo git commit -am "Configuración de retransmisión SMTP actualizada"
  6. Si los cambios funcionan como se espera, fusiónelos de vuelta a la rama principal:

    sudo git checkout main
    sudo git merge nuevos-cambios-config

Este método proporciona una red de seguridad y un historial claro de tus cambios de configuración.

Probar la Configuración de Sendmail

Enviar un Correo de Prueba

Después de configurar Sendmail, prueba si funciona correctamente. Puedes enviar un correo de prueba usando la línea de comandos. Así es cómo:

  1. Abre una terminal en tu sistema Ubuntu.

  2. Usa este comando para enviar un correo de prueba:

    echo "Este es un correo de prueba desde Sendmail" | sendmail -v tu_correo@example.com

    Reemplaza "tu_correo@example.com" con tu dirección de correo electrónico.

  3. La opción -v muestra el proceso de transmisión del correo.

  4. Verifica tu bandeja de entrada de correo para el mensaje de prueba.

Para confirmar la entrega del correo:

  1. Busca el correo de prueba en tu bandeja de entrada.

  2. Si no lo ves, verifica tu carpeta de spam.

  3. Revisa los encabezados del correo para confirmar que fue enviado a través de tu servidor Sendmail.

  4. Revisa los registros de Sendmail para cualquier mensaje de error:

    sudo tail -f /var/log/mail.log

    Este comando muestra entradas de registro en tiempo real.

Si el correo de prueba no llega o ves errores en los registros, revisa tu configuración de Sendmail o verifica tu configuración de red.

Consejo: Usar un Script de Prueba

Crea un script PHP simple para probar la funcionalidad de Sendmail:

<?php
$to = "tu_correo@example.com";
$subject = "Correo de Prueba desde Sendmail";
$message = "Este es un correo de prueba enviado usando PHP y Sendmail.";
$headers = "From: webmaster@example.com";

if(mail($to, $subject, $message, $headers)) {
    echo "Correo enviado con éxito.";
} else {
    echo "El envío de correo falló.";
}
?>

Guarda este script y ejecútalo a través de tu servidor web para probar la integración de Sendmail con PHP.

Solucionar Problemas de Entrega de Correo

Si tu correo de prueba no llega, intenta estos pasos:

  1. Verifica tu configuración de firewall para asegurarte de que el puerto 25 (SMTP) esté abierto.

  2. Verifica que tu configuración de DNS sea correcta.

  3. Verifica la cola de Sendmail para mensajes atascados:

    sudo mailq
  4. Si los mensajes están atascados, intenta vaciar la cola:

    sudo sendmail -q

Estos pasos pueden ayudar a encontrar problemas comunes que impiden la entrega de correo.

Agregar Retransmisión SMTP a Sendmail

Configurar la Autenticación SMTP

Para agregar retransmisión SMTP a Sendmail, necesitas configurar la autenticación SMTP. Este proceso implica crear un directorio de autenticación y generar una base de datos de autenticación. Así es cómo hacerlo:

  1. Crea un directorio de autenticación:

    sudo mkdir /etc/mail/auth
    sudo chmod 700 /etc/mail/auth

    Esto crea un directorio para almacenar información de autenticación.

  2. Crea un archivo para almacenar las credenciales de tu servidor SMTP:

    sudo nano /etc/mail/auth/client-info
  3. Agrega la información de tu servidor SMTP al archivo:

    AuthInfo:tu.servidor.smtp "U:nombreusuario" "P:contraseña" "M:PLAIN"

    Reemplaza "tu.servidor.smtp", "nombreusuario" y "contraseña" con los detalles reales de tu servidor SMTP.

  4. Genera la base de datos de autenticación:

    sudo makemap hash /etc/mail/auth/client-info < /etc/mail/auth/client-info

    Este comando crea un archivo de base de datos que Sendmail puede usar.

  5. Establece los permisos correctos para los archivos:

    sudo chmod 600 /etc/mail/auth/client-info
    sudo chmod 600 /etc/mail/auth/client-info.db

    Esto restringe el acceso a estos archivos.

Después de completar estos pasos, habrás configurado la autenticación para la retransmisión SMTP. El siguiente paso es modificar tu configuración de Sendmail para usar esta autenticación al enviar correos a través de tu servidor SMTP.

Consejo: Asegurar Tu Información de Autenticación

Para mejorar la seguridad, puedes cifrar tu archivo client-info:

  1. Instala GPG:

    sudo apt-get install gnupg
  2. Genera una clave GPG:

    gpg --gen-key
  3. Cifra el archivo client-info:

    gpg -e -r "Tu Nombre" /etc/mail/auth/client-info
  4. Elimina el archivo original:

    sudo shred -u /etc/mail/auth/client-info

Este enfoque agrega cifrado a tus credenciales SMTP, haciéndolas más seguras.

Modificar el Archivo sendmail.mc

Agregar Configuración SMTP

Para configurar Sendmail para usar tu retransmisión SMTP, necesitas cambiar el archivo sendmail.mc. Este archivo tiene la configuración principal para Sendmail. Así es cómo agregar la configuración SMTP:

  1. Abre el archivo sendmail.mc:

    sudo nano /etc/mail/sendmail.mc
  2. Agrega estas líneas antes de la sección MAILER_DEFINITIONS:

    define(`SMART_HOST',`tu.servidor.smtp')dnl
    define(`RELAY_MAILER_ARGS', `TCP $h 587')dnl
    define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
    FEATURE(`authinfo',`hash -o /etc/mail/auth/client-info.db')dnl

    Reemplaza 'tu.servidor.smtp' con la dirección de tu servidor SMTP.

  3. Guarda y cierra el archivo.

Después de agregar estas líneas, necesitas actualizar el archivo sendmail.cf. Sendmail lee este archivo cuando se inicia. Para actualizarlo:

  1. Ejecuta este comando:

    sudo m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf

    Este comando convierte el archivo sendmail.mc en sendmail.cf.

  2. Reinicia Sendmail para aplicar los cambios:

    sudo systemctl restart sendmail

Estos cambios le dicen a Sendmail que use tu servidor SMTP como un smart host, habilitan métodos de autenticación y usan la información de autenticación que configuraste anteriormente.

Prueba tu configuración después de hacer estos cambios para asegurarte de que Sendmail funciona correctamente con tu retransmisión SMTP.

Consejo: Verificar la Configuración SMTP

Después de modificar el archivo sendmail.mc y reiniciar Sendmail, puedes verificar la configuración SMTP revisando los registros de correo. Usa el siguiente comando para ver las entradas de registro más recientes:

sudo tail -f /var/log/maillog

Busca líneas que indiquen una conexión exitosa a tu servidor SMTP y cualquier mensaje de autenticación. Esto puede ayudarte a identificar si hay algún problema con tu configuración.

Reiniciar el Servicio Sendmail

Aplicar Cambios de Configuración

Después de cambiar tu configuración de Sendmail, reinicia el servicio Sendmail para aplicar estos cambios. Así es cómo:

  1. Reinicia el demonio Sendmail:

    sudo systemctl restart sendmail
  2. Para versiones antiguas de Ubuntu, usa:

    sudo service sendmail restart

Para verificar si Sendmail está ejecutándose con la nueva configuración:

  1. Verifica el estado del servicio Sendmail:

    sudo systemctl status sendmail
  2. Busca "Active: active (running)"en la salida.

  3. Verifica los registros de Sendmail para mensajes de error:

    sudo tail -f /var/log/mail.log
  4. Envía un correo de prueba para confirmar la nueva configuración:

    echo "Correo de prueba" | sendmail -v tu_correo@example.com
  5. Monitorea la cola de correo para ver si los correos están siendo procesados:

    mailq

Si ves errores o si los correos no se están enviando, revisa tus cambios de configuración y verifica los archivos de registro para más información.

Prueba tu configuración de Sendmail después de cualquier cambio de configuración para asegurarte de que está funcionando correctamente.

Consejo: Solucionar Problemas de Inicio de Sendmail

Si Sendmail no se inicia después de los cambios de configuración, intenta estos pasos:

  1. Verifica errores de sintaxis en tu archivo de configuración:
    sendmail -bt < /dev/null
  2. Revisa el registro de Sendmail para mensajes de error específicos:
    sudo grep sendmail /var/log/syslog
  3. Verifica los permisos en los archivos de configuración:
    sudo ls -l /etc/mail/sendmail.cf

Asegurar Sendmail en Ubuntu

Mejores Prácticas para la Seguridad de Sendmail

Para asegurar tu configuración de Sendmail en Ubuntu, sigue estas prácticas:

Configurar SPF (Sender Policy Framework):

  1. Crea un registro SPF en la configuración DNS de tu dominio:

    v=spf1 ip4:ip_de_tu_servidor ~all

    Reemplaza "ip_de_tu_servidor" con la dirección IP de tu servidor.

  2. Instala el milter SPF:

    sudo apt-get install spf-milter
  3. Agrega esta línea a tu archivo sendmail.mc:

    INPUT_MAIL_FILTER(`spf', `S=local:/var/run/spfd.sock, F=T, T=R:2m')
  4. Reinicia Sendmail para aplicar los cambios.

Configurar DKIM (DomainKeys Identified Mail):

  1. Instala OpenDKIM:

    sudo apt-get install opendkim opendkim-tools
  2. Genera claves DKIM:

    sudo opendkim-genkey -D /etc/dkimkeys/ -d tudominio.com -s default
  3. Agrega esto a tu archivo sendmail.mc:

    INPUT_MAIL_FILTER(`opendkim', `S=local:/var/run/opendkim/opendkim.sock, F=T, T=R:2m')
  4. Configura OpenDKIM y reinicia el servicio.

Implementar medidas anti-spam:

  1. Instala SpamAssassin:

    sudo apt-get install spamassassin
  2. Agrega esto a tu archivo sendmail.mc:

    MAIL_FILTER(`spamassassin', `S=local:/var/run/spamass.sock, F=, T=C:15m;S:4m;R:4m;E:10m')
  3. Configura SpamAssassin y reinicia el servicio.

  4. Actualiza tus reglas de spam:

    sudo sa-update

Reconstruye tu archivo sendmail.cf y reinicia Sendmail después de hacer estos cambios. Estas medidas ayudan a proteger tu sistema de correo de spam e intentos de suplantación de identidad.

Consejo: Auditorías de Seguridad Regulares

Realiza auditorías de seguridad en tu configuración de Sendmail:

  1. Verifica si hay retransmisión abierta:

    telnet localhost 25
    HELO example.com
    MAIL FROM: test@example.com
    RCPT TO: test@example.com

    Si esto tiene éxito, tu servidor podría ser una retransmisión abierta.

  2. Revisa tus listas de control de acceso en /etc/mail/access.

  3. Mantén tu sistema y Sendmail actualizados con los últimos parches de seguridad.