108.3 Fundamentos de MTA - Teoria
Conceptos fundamentales del correo electronico
Componentes del sistema de correo
| Componente | Nombre completo | Funcion | Ejemplos |
|---|---|---|---|
| MUA | Mail User Agent | Cliente de correo (leer/escribir) | Thunderbird, mutt, mail/mailx, Evolution |
| MTA | Mail Transfer Agent | Transfiere correo entre servidores | sendmail, postfix, exim |
| MDA | Mail Delivery Agent | Entrega correo al buzon local | procmail, maildrop, dovecot-lda |
Flujo del correo
Remitente (MUA) --> MTA local --> MTA remoto --> MDA --> Buzon --> Destinatario (MUA)
- El usuario escribe un correo con su MUA
- El MUA entrega al MTA local (puerto 25 SMTP)
- El MTA local envia al MTA del servidor destino
- El MTA destino pasa el correo al MDA
- El MDA deposita el correo en el buzon del usuario
- El destinatario lee el correo con su MUA
SMTP (Simple Mail Transfer Protocol)
- Protocolo estandar para envio de correo
- Puerto 25 (SMTP clasico)
- Puerto 587 (submission, con autenticacion)
- Puerto 465 (SMTPS, SMTP sobre SSL/TLS)
MTAs principales
sendmail
- MTA mas antiguo y historicamente el mas usado
- Configuracion compleja (
/etc/mail/sendmail.cf) - Todavia presente en muchos sistemas como compatible
- Todos los demas MTAs proporcionan un comando
sendmailcompatible
Postfix
- MTA moderno, seguro y facil de configurar
- Creado por Wietse Venema como reemplazo de sendmail
- Configuracion principal:
/etc/postfix/main.cf - Parametros basicos de
main.cf:
# Nombre del host
myhostname = mail.ejemplo.com
# Dominio
mydomain = ejemplo.com
# Origen del correo saliente
myorigin = $mydomain
# Interfaces en las que escuchar
inet_interfaces = all
# Destinos locales
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
# Redes confiables
mynetworks = 127.0.0.0/8, 192.168.1.0/24
# Buzon del usuario
home_mailbox = Maildir/
Exim
- MTA predeterminado en distribuciones Debian
- Muy configurable y flexible
- Configuracion:
/etc/exim4/
Para el examen LPIC-1: No se requiere configurar un servidor de correo completo. El foco esta en aliases, reenvio y comandos basicos.
Comando mail / mailx
Utilidad de linea de comandos para enviar y leer correo.
Enviar correo
# Forma interactiva
mail usuario@ejemplo.com
Subject: Asunto del mensaje
Cuerpo del mensaje aqui
. # Punto solo en una linea para terminar
# Forma no interactiva (pipe)
echo "Cuerpo del mensaje" | mail -s "Asunto" usuario@ejemplo.com
# Con archivo adjunto (usando mailx)
mail -s "Reporte" -a /tmp/reporte.txt usuario@ejemplo.com < /dev/nullLeer correo (modo interactivo)
mail # Abrir buzon del usuario actualDentro del modo interactivo de mail/mailx:
| Comando | Descripcion |
|---|---|
h | Listar encabezados de mensajes (headers) |
N (numero) | Leer el mensaje numero N (ej: 1, 2, 3) |
p | Imprimir (mostrar) el mensaje actual (print) |
n | Mostrar el siguiente mensaje (next) |
d | Borrar el mensaje actual (delete) |
d 1 3 5 | Borrar multiples mensajes |
r | Responder al mensaje actual (reply) |
R | Responder a todos los destinatarios |
s archivo | Guardar mensaje en un archivo |
q | Salir guardando cambios (mensajes leidos se mueven a ~/mbox) |
x | Salir sin guardar cambios (buzon queda intacto) |
Ubicacion de los buzones de correo
Los buzones en formato mbox se almacenan en:
/var/spool/mail/usuario- Ubicacion clasica (Red Hat/CentOS)/var/mail/usuario- Ubicacion moderna (Debian/Ubuntu). En muchos sistemas es un enlace simbolico a/var/spool/mail/
Ambas rutas pueden coexistir. La variable MAIL del entorno del usuario apunta al buzon correspondiente:
echo $MAIL
# /var/spool/mail/sandra o /var/mail/sandraAliases de correo: /etc/aliases
Los aliases permiten redirigir correo destinado a un usuario a otro usuario, multiples usuarios o un comando.
Formato
alias: destino1, destino2, ...
Ejemplo de /etc/aliases
# Aliases obligatorios
postmaster: root
mailer-daemon: postmaster
# Redirigir correo de root a un usuario real
root: admin
# Alias a multiples usuarios
webmaster: juan, maria
# Alias a una direccion externa
soporte: soporte@empresa.com
# Alias a un archivo (agregar correo)
registro: /var/log/correo-registro
# Alias a un comando (pipe)
tickets: |/usr/local/bin/procesar-ticket.sh
# Alias a un archivo include
desarrolladores: :include:/etc/mail/lista-devs
Activar cambios
Despues de modificar /etc/aliases, se debe ejecutar:
newaliasesEste comando reconstruye la base de datos de aliases (normalmente /etc/aliases.db). Sin ejecutar newaliases, los cambios no tendran efecto.
Importante para el examen: Siempre ejecutar
newaliasesdespues de editar/etc/aliases.
Redireccion personal: ~/.forward
Cada usuario puede crear un archivo ~/.forward en su directorio home para redirigir su correo sin necesidad de permisos de root.
Formato
usuario@otro-servidor.com
Ejemplos de ~/.forward
# Redirigir todo el correo a otra direccion
usuario@gmail.com
# Redirigir y mantener copia local
\usuario, otrousuario@gmail.com
# Redirigir a multiples destinos
admin@empresa.com, backup@empresa.com- La barra invertida
\usuarioevita la expansion recursiva del alias y entrega localmente - Sin
\, el correo solo se reenvia (no se guarda copia local)
Comando mailq
Muestra la cola de correo pendiente de envio.
mailq # Ver cola de correoSalida tipica:
-Queue ID- --Size-- ----Arrival Time---- -Sender/Recipient-------
A1B2C3D4E5 1234 Mon Jan 15 14:30:00 usuario@ejemplo.com
(host remoto no disponible)
destino@otro.com
-- 1 Kbytes in 1 Request.
Equivalente en postfix:
postqueue -p # Igual que mailq
postqueue -f # Forzar reenvio de la cola
postsuper -d ALL # Eliminar toda la colaComando sendmail (interfaz compatible)
Todos los MTAs proporcionan un comando sendmail compatible en /usr/sbin/sendmail o /usr/lib/sendmail.
# Enviar correo
sendmail usuario@ejemplo.com < mensaje.txt
# Procesar la cola
sendmail -q
# Ver la cola (equivalente a mailq)
sendmail -bpOpciones comunes:
| Opcion | Descripcion |
|---|---|
-q | Procesar la cola de correo |
-bp | Mostrar la cola (como mailq) |
-bi | Reconstruir aliases (como newaliases) |
-t | Leer destinatarios del encabezado del mensaje |
Buzones de correo
Formatos de buzon
| Formato | Descripcion | Ubicacion tipica |
|---|---|---|
| mbox | Un archivo por usuario con todos los mensajes | /var/spool/mail/usuario o /var/mail/usuario |
| Maildir | Un directorio por usuario, un archivo por mensaje | ~/Maildir/ |
Estructura de Maildir
~/Maildir/
cur/ # Mensajes leidos
new/ # Mensajes nuevos
tmp/ # Mensajes en proceso de entrega
Puntos clave para el examen
- MUA = cliente, MTA = transferencia, MDA = entrega local
- SMTP usa el puerto 25 (o 587 para submission)
/etc/aliasesdefine aliases del sistema; despues de editarlo ejecutarnewaliases~/.forwardpermite redireccion personal sin ser rootmailqmuestra la cola de correo pendiente- El comando
sendmailesta disponible como interfaz compatible en todos los MTAs - Postfix se configura en
/etc/postfix/main.cf - La barra invertida en
~/.forward(\usuario) mantiene copia local sendmail -biequivale anewaliasessendmail -bpequivale amailq
Trampas del examen
Errores comunes y distinciones criticas que LPI suele evaluar en este subtema:
- MUA vs MTA vs MDA — MUA (Mail User Agent) es el cliente de correo (Thunderbird, mutt); MTA (Mail Transfer Agent) transfiere correo entre servidores (postfix, sendmail, exim); MDA (Mail Delivery Agent) entrega al buzon local (procmail). El examen describe una funcion y espera que identifiques el componente
newaliaseses OBLIGATORIO despues de editar/etc/aliases— Sin ejecutarnewaliases, los cambios en aliases NO tienen efecto porque la base de datos (/etc/aliases.db) no se actualiza.sendmail -bies equivalente anewaliases~/.forwardpermite redireccion SIN ser root — A diferencia de/etc/aliases(que requiere root), cada usuario puede crear~/.forwarden su home para redirigir su propio correo. El examen pregunta como un usuario normal redirige su correo- Barra invertida en
~/.forward:\usuario— Sin\, el correo solo se reenvia (no se guarda copia local). Con\usuario, se mantiene copia local Y se reenvia. La barra invertida evita la expansion recursiva del alias - SMTP usa puerto 25, submission usa 587 — El puerto 25 es SMTP clasico; 587 es para submission (con autenticacion). El examen puede preguntar que puerto usar para envio autenticado de correo
- Todos los MTAs proporcionan un comando
sendmailcompatible — Aunque uses postfix o exim, existe/usr/sbin/sendmailcomo interfaz compatible. El examen puede preguntar si el comandosendmailexiste en un sistema con postfix (si, existe) sendmail -bp=mailq,sendmail -bi=newaliases— Estas equivalencias son clasicas en el examen.-bpmuestra la cola de correo,-bireconstruye la base de datos de aliases/var/spool/mail/vs/var/mail/— Ambas ubicaciones son validas para buzones mbox. En muchos sistemas/var/mailes un enlace simbolico a/var/spool/mail/. El examen puede preguntar por cualquiera de las dos- mbox vs Maildir — mbox almacena todos los mensajes en un SOLO archivo; Maildir usa un directorio con un archivo por mensaje (subdirectorios
cur/,new/,tmp/). Maildir es mas robusto ante fallos pero mbox es el formato clasico mailqmuestra correo PENDIENTE de envio — No muestra correo recibido ni el buzon del usuario. Solo muestra la cola de correo saliente que aun no se ha podido entregar