108.3 Lección 1
Certificación: |
LPIC-1 |
---|---|
Versión: |
5.0 |
Tema: |
108 Servicios Esenciales del Sistema |
Objetivo: |
108.3 Aspectos básicos del agente de transferencia de correo (MTA) |
Lección: |
1 de 1 |
Introducción
En los sistemas operativos tipo Unix, como Linux, cada usuario tiene su propia bandeja de entrada: una ubicación especial en el sistema de archivos a la que no pueden acceder otros usuarios que no sean root y que almacena los mensajes de correo electrónico personales del usuario. Los nuevos mensajes entrantes son añadidos a la bandeja de entrada del usuario por el Mail Transfer Agent (MTA). El MTA es un programa que se ejecuta como un servicio del sistema y que recoge los mensajes enviados por otras cuentas locales, así como los mensajes recibidos de la red, enviados desde cuentas de usuarios remotos.
El mismo MTA es también responsable de enviar mensajes a la red, si la dirección de destino se refiere a una cuenta remota. Para esto, utiliza una ubicación del sistema de archivos como buzón de salida de correo electrónico para todos los usuarios del sistema: tan pronto como un usuario coloque un nuevo mensaje en el buzón de salida, el MTA identificará el nodo de red de destino a partir del nombre de dominio dado por la dirección de correo electrónico de destino --después del signo @
-- e intentará transferir el mensaje al MTA remoto utilizando el Protocolo simple de transferencia de correo (SMTP). SMTP se diseñó teniendo en cuenta las redes poco fiables, por lo que intentará establecer rutas de entrega alternativas si el nodo principal de destino del correo es inalcanzable.
MTA local y remoto
Las cuentas de usuario tradicionales en máquinas conectadas a la red constituyen el escenario de intercambio de correo electrónico más sencillo, en este cada, nodo de la red ejecuta su propio demonio MTA y no se requiere ningún otro software aparte del MTA para enviar y recibir mensajes de correo electrónico. En la práctica, sin embargo, es más común utilizar una cuenta de correo electrónico remota y no tener un servicio MTA local activo (es decir, utilizar una aplicación cliente de correo electrónico para acceder a la cuenta remota).
A diferencia de las cuentas locales, una cuenta de correo electrónico remota --también llamada buzón remoto-- requiere la autenticación del usuario para concederle acceso al buzón y al MTA remoto (en este caso, llamado simplemente servidor SMTP). Mientras que el usuario que interactúa con un buzón y un MTA locales ya está identificado por el sistema, un sistema remoto debe verificar la identidad del usuario antes de manejar sus mensajes a través de IMAP o POP3.
Note
|
Hoy en día, el método más común para enviar y recibir correo electrónico es a través de una cuenta alojada en un servidor remoto, por ejemplo, el servidor de correo electrónico centralizado de una empresa que aloja todas las cuentas de los empleados o un servicio de correo electrónico personal, como Gmail de Google. En lugar de recoger los mensajes entregados localmente, la aplicación cliente de correo electrónico se conectará al buzón remoto y recuperará los mensajes desde allí. Los protocolos POP3 e IMAP se utilizan habitualmente para recuperar los mensajes del servidor remoto, pero también pueden utilizarse otros protocolos propietarios no estándares. |
Cuando se ejecuta un demonio MTA en el sistema local, los usuarios locales pueden enviar un correo electrónico a otros usuarios locales o a usuarios de una máquina remota, siempre que su sistema también tenga un servicio MTA que acepte conexiones de red. El puerto TCP 25 es el estándar para la comunicación SMTP, pero también se pueden utilizar otros puertos, dependiendo del esquema de autenticación y/o cifrado que se utilice (si lo hay).
Dejando de lado las topologías que implican el acceso a buzones remotos, se puede implementar una red de intercambio de correo electrónico entre cuentas de usuario ordinarias de Linux siempre que todos los nodos de la red tengan un MTA activo que sea capaz de realizar las siguientes tareas:
-
Mantener la cola de salida de los mensajes a enviar. Para cada mensaje en cola, el MTA local evaluará el MTA de destino a partir de la dirección del destinatario.
-
Comunicarse con demonios MTA remotos utilizando SMTP. El MTA local debe ser capaz de utilizar el Protocolo Simple de Transferencia de Correo (SMTP) a través de la pila TCP/IP para recibir, enviar y redirigir mensajes de/a otros demonios MTA remotos.
-
Mantener una bandeja de entrada individual para cada cuenta local. El MTA suele almacenar los mensajes en el formato mbox: que es un único archivo de texto que contiene todos los mensajes de correo electrónico en secuencia.
Normalmente, las direcciones de correo electrónico especifican un nombre de dominio como ubicación, por ejemplo, lpi.org
en info@lpi.org
. En este caso, el MTA del remitente consultará al servicio DNS el registro MX correspondiente. El registro DNS MX contiene la dirección IP del MTA que gestiona el correo electrónico para ese dominio. Si el mismo dominio tiene más de un registro MX especificado en el DNS, el MTA debe intentar ponerse en contacto con ellos según sus valores de prioridad. Si la dirección del destinatario no especifica un nombre de dominio o el dominio no tiene un registro MX, la parte que sigue al símbolo @
se tratará como el host del MTA de destino.
Hay que tener en cuenta los aspectos de seguridad si los hosts del MTA van a ser visibles para los hosts de Internet. Por ejemplo, es posible que un usuario desconocido utilice el MTA local para hacerse pasar por otro usuario y enviar correos electrónicos potencialmente dañinos. Un MTA que retransmite ciegamente un correo electrónico se conoce como retransmisión abierta, cuando puede ser utilizado como intermediario para disfrazar potencialmente el verdadero remitente del mensaje. Para evitar estos usos indebidos, la recomendación es aceptar conexiones sólo de dominios autorizados e implementar un esquema de autenticación seguro.
Además, hay muchas implementaciones diferentes de MTA para Linux, cada una de las cuales se centra en aspectos específicos como la compatibilidad, el rendimiento, la seguridad, etc. Sin embargo, todos los MTAs seguirán los mismos principios básicos y proporcionarán características similares.
MTAs de Linux
El MTA tradicional disponible para los sistemas Linux es Sendmail, un MTA de propósito general muy flexible utilizado por muchos sistemas operativos tipo Unix. Otros MTA comunes son Postfix, qmail y Exim. La razón principal para elegir un MTA alternativo es implementar características avanzadas más fácilmente, ya que configurar servidores de correo electrónico personalizados en Sendmail puede ser una tarea complicada. Además, cada distribución puede tener su MTA preferido, con configuraciones predefinidas. Todos los MTA pretenden ser sustitutos de Sendmail, por lo que todas las aplicaciones compatibles con Sendmail deberían funcionar independientemente del MTA que se utilice.
Si el MTA está funcionando pero no acepta conexiones de red, sólo podrá entregar mensajes de correo electrónico en la máquina local. Para el MTA sendmail
, el archivo /etc/mail/sendmail.mc
debe ser modificado para aceptar conexiones no locales. Para ello, la entrada sera la siguiente:
DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')dnl
Debe modificarse a la dirección de red correcta y el servicio debe reiniciarse. Algunas distribuciones de Linux, como Debian, pueden ofrecer herramientas de configuración para ayudar a poner en marcha el servidor de correo electrónico con un conjunto predefinido de características de uso común.
Tip
|
Debido a problemas de seguridad, la mayoría de las distribuciones de Linux no instalan un MTA por defecto. Para probar los ejemplos dados en esta lección, asegúrese de que hay un MTA en funcionamiento en cada máquina y que están aceptando conexiones en el puerto TCP 25. Por razones de seguridad, estos sistemas no deberían estar expuestos a conexiones entrantes de la Internet pública durante las pruebas. |
Una vez que el MTA está funcionando y aceptando conexiones de la red, los nuevos mensajes de correo electrónico se le pasan comandos SMTP que se envían a través de una conexión TCP. El comando nc
— una utilidad de red que lee y escribe datos genéricos a través de la red — puede utilizarse para enviar comandos SMTP directamente al MTA. Si el comando nc
no está disponible, se instalará con el paquete ncat o nmap-ncat, dependiendo del sistema de gestión de paquetes que se utilice. Escribir comandos SMTP directamente al MTA le ayudará a entender mejor el protocolo y otros conceptos generales del correo electrónico, pero también puede ayudar a diagnosticar problemas en el proceso de entrega del correo.
Si, por ejemplo, el usuario emma
en el host lab1.campus
quiere enviar un mensaje al usuario dave
en el host lab2.campus
, entonces puede usar el comando nc
para conectarse directamente al MTA lab2.campus
, asumiendo que está escuchando en el puerto TCP 25:
$ nc lab2.campus 25 220 lab2.campus ESMTP Sendmail 8.15.2/8.15.2; Sat, 16 Nov 2019 00:16:07 GMT HELO lab1.campus 250 lab2.campus Hello lab1.campus [10.0.3.134], pleased to meet you MAIL FROM: emma@lab1.campus 250 2.1.0 emma@lab1.campus... Sender ok RCPT TO: dave@lab2.campus 250 2.1.5 dave@lab2.campus... Recipient ok DATA 354 Enter mail, end with "." on a line by itself Subject: Recipient MTA Test Hi Dave, this is a test for your MTA. . 250 2.0.0 xAG0G7Y0000595 Message accepted for delivery QUIT 221 2.0.0 lab2.campus closing connection
Una vez establecida la conexión, el MTA remoto se identifica y está listo para recibir comandos SMTP. El primer comando SMTP del ejemplo, HELO lab1.campus
, indica que lab1.campus
es el iniciador del intercambio. Los dos siguientes comandos, MAIL FROM: emma@lab1.campus
y RCPT TO: dave@lab2.campus
, indican el remitente y el destinatario. El mensaje de correo electrónico propiamente dicho comienza después del comando DATA
y termina con un punto en una línea por sí mismo. Para añadir un campo subject
al correo electrónico, debe estar en la primera línea después del comando DATA
, como se muestra en el ejemplo. Cuando se utiliza el campo de asunto, debe haber una línea vacía que lo separe del contenido del correo electrónico. El comando QUIT
termina la conexión con el MTA en el host lab2.campus
.
En el host lab2.campus
, el usuario dave
recibirá un mensaje similar a You have new mail in /var/spool/mail/dave
tan pronto como entre en una sesión de shell. Este archivo contendrá el mensaje de correo electrónico en bruto enviado por emma
así como las cabeceras añadidas por el MTA:
$ cat /var/spool/mail/dave From emma@lab1.campus Sat Nov 16 00:19:13 2019 Return-Path: <emma@lab1.campus> Received: from lab1.campus (lab1.campus [10.0.3.134]) by lab2.campus (8.15.2/8.15.2) with SMTP id xAG0G7Y0000595 for dave@lab2.campus; Sat, 16 Nov 2019 00:17:06 GMT Date: Sat, 16 Nov 2019 00:16:07 GMT From: emma@lab1.campus Message-Id: <201911160017.xAG0G7Y0000595@lab2.campus> Subject: Recipient MTA Test Hi Dave, this is a test for your MTA.
La cabecera Received:
muestra que el mensaje de lab1.campus
fue recibido directamente por lab2.campus
. Por defecto, los MTAs sólo aceptan mensajes a destinatarios locales. El siguiente error probablemente ocurrirá si el usuario emma
intenta enviar un correo electrónico al usuario henry
en el host lab3.campus
, pero utilizando el MTA lab2.campus
en lugar del MTA apropiado lab3.campus
:
$ nc lab2.campus 25 220 lab2.campus ESMTP Sendmail 8.15.2/8.15.2; Sat, 16 Nov 2019 00:31:44 GMT HELO lab1.campus 250 lab2.campus Hello lab1.campus [10.0.3.134], pleased to meet you MAIL FROM: emma@lab1.campus 250 2.1.0 emma@lab1.campus... Sender ok RCPT TO: henry@lab3.campus 550 5.7.1 henry@lab3.campus... Relaying denied
Los números de respuesta SMTP que empiezan por 5, como el mensaje Relaying denied
, indican un error. Hay situaciones legítimas en las que la retransmisión es deseable, como cuando los hosts que envían y reciben correos electrónicos no están conectados todo el tiempo: se puede configurar un MTA intermedio para que acepte los correos electrónicos destinados a otros hosts, actuando como un servidor SMTP de retransmisión que puede reenviar mensajes entre MTAs.
La posibilidad de enrutar el tráfico de correo electrónico a través de servidores SMTP intermedios desaconseja el intento de conectarse directamente al host indicado por la dirección de correo electrónico del destinatario, como se muestra en los ejemplos anteriores. Además, las direcciones de correo electrónico suelen tener un nombre de dominio como ubicación (después de la @
), por lo que el nombre real del host MTA correspondiente debe ser recuperado a través de DNS. Por lo tanto, se recomienda delegar la tarea de identificar el host de destino apropiado al MTA local o al servidor SMTP remoto, cuando se utilizan buzones remotos.
Sendmail proporciona el comando sendmail
para realizar muchas operaciones relacionadas con el correo electrónico, incluyendo la asistencia en la composición de nuevos mensajes. También requiere que el usuario escriba las cabeceras del correo electrónico a mano, pero de una forma más amigable que utilizando los comandos SMTP directamente. Así que un método más adecuado para que el usuario emma@lab1.campus
envíe un mensaje de correo electrónico a dave@lab2.campus
sería:
$ sendmail dave@lab2.campus From: emma@lab1.campus To: dave@lab2.campus Subject: Sender MTA Test Hi Dave, this is a test for my MTA. .
También en este caso, el punto en una línea por sí mismo termina el mensaje. El mensaje debería ser enviado inmediatamente al destinatario, a menos que el MTA local no se haya podido contactar con el MTA remoto. El comando mailq
, si es ejecutado por root, mostrará todos los mensajes no entregados. Si, por ejemplo, el MTA de lab2.campus
no ha respondido, el comando mailq
mostrará el mensaje no entregado y la causa del fallo:
# mailq /var/spool/mqueue (1 request) -----Q-ID----- --Size-- -----Q-Time----- ------------Sender/Recipient----------- xAIK3D9S000453 36 Mon Nov 18 20:03 <emma@lab1.campus> (Deferred: Connection refused by lab2.campus.) <dave@lab2.campus> Total requests: 1
La ubicación por defecto de la cola de salida es /var/spool/mqueue/
, pero diferentes MTAs pueden utilizar diferentes ubicaciones en el directorio /var/spool/
. Postfix, por ejemplo, creará un árbol de directorios en /var/spool/postfix/
para gestionar la cola. El comando mailq
es equivalente a sendmail -bp
, debe estar presente independientemente del MTA instalado en el sistema. Para asegurar la compatibilidad con versiones anteriores, la mayoría de los MTAs proporcionan estos comandos tradicionales de administración de correo.
Si el host principal de destino del correo electrónico — cuando se proporciona desde un registro DNS MX para el dominio — es inalcanzable, el MTA intentará ponerse en contacto con las entradas con menor prioridad (si hay alguna especificada). Si ninguna de ellas es alcanzable, el mensaje permanecerá en la cola de la bandeja de salida local para ser enviado más tarde. Si se configura para ello, el MTA puede comprobar periódicamente la disponibilidad de los hosts remotos y realizar un nuevo intento de entrega. Si se utiliza un MTA compatible con Sendmail, se realizará inmediatamente un nuevo intento con el comando sendmail -q
.
Sendmail almacenará los mensajes entrantes en un archivo con el nombre del propietario de la bandeja de entrada correspondiente, por ejemplo /var/spool/mail/dave
. Otros MTA, como Postfix, pueden almacenar los mensajes de correo electrónico entrantes en ubicaciones como /var/mail/dave
, pero el contenido del archivo es el mismo. En el ejemplo, el comando sendmail
se utilizó en el host del remitente para crear el mensaje, por lo que las cabeceras de los mensajes sin procesar muestran que el correo electrónico siguió pasos adicionales antes de llegar al destino final:
$ cat /var/spool/mail/dave From emma@lab1.campus Mon Nov 18 20:07:39 2019 Return-Path: <emma@lab1.campus> Received: from lab1.campus (lab1.campus [10.0.3.134]) by lab2.campus (8.15.2/8.15.2) with ESMTPS id xAIK7clC000432 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT) for <dave@lab2.campus>; Mon, 18 Nov 2019 20:07:38 GMT Received: from lab1.campus (localhost [127.0.0.1]) by lab1.campus (8.15.2/8.15.2) with ESMTPS id xAIK3D9S000453 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT) for <dave@lab2.campus>; Mon, 18 Nov 2019 20:03:13 GMT Received: (from emma@localhost) by lab1.campus (8.15.2/8.15.2/Submit) id xAIK0doL000449 for dave@lab2.campus; Mon, 18 Nov 2019 20:00:39 GMT Date: Mon, 18 Nov 2019 20:00:39 GMT Message-Id: <201911182000.xAIK0doL000449@lab1.campus> From: emma@lab1.campus To: dave@lab2.campus Subject: Sender MTA Test Hi Dave, this is a test for my MTA.
De abajo a arriba, las líneas que comienzan con Received:
muestran la ruta seguida por el mensaje. El mensaje fue enviado por el usuario emma
con el comando sendmail dave@lab2.campus
emitido en lab1.campus
, como se indica en la primera cabecera Received:
. A continuación, todavía en lab1.campus
, el MTA utiliza ESMTPS — un superconjunto del SMTP, que añade extensiones de cifrado — para enviar el mensaje al MTA en lab2.campus
, como se indica en la última cabecera (superior) Received:
.
El MTA termina su trabajo una vez que el mensaje se guarda en la bandeja de entrada del usuario. Es habitual realizar algún tipo de filtrado del correo electrónico, como el bloqueo de spam o la aplicación de reglas de filtrado definidas por el usuario. Estas tareas son ejecutadas por aplicaciones de terceros, que trabajan conjuntamente con el MTA. El MTA podría, por ejemplo, llamar a la utilidad SpamAssassin para marcar los mensajes sospechosos utilizando sus funciones de análisis de texto.
Aunque es posible, no es conveniente leer el archivo del buzón directamente. Se recomienda utilizar en su lugar un programa cliente de correo electrónico (por ejemplo, Thunderbird, Evolution o KMail), que analizará el archivo y gestionará adecuadamente los mensajes. Estos programas también ofrecen funciones adicionales, como accesos directos a acciones comunes, subdirectorios de la bandeja de entrada, etc.
El comando mail
y los agentes de usuario de correo (MUA)
Es posible escribir un mensaje de correo electrónico directamente en su formato crudo, pero es mucho más práctico utilizar una aplicación cliente — también conocida como MUA (Agente de Usuario de Correo) — para acelerar el proceso y evitar errores. El MUA se encarga del trabajo bajo el capó, es decir, el cliente de correo electrónico presenta y organiza los mensajes recibidos y maneja la comunicación adecuada con el MTA después de que el usuario compone un correo electrónico.
Hay muchos tipos distintos de agentes de usuario de correo. Las aplicaciones de escritorio como Mozilla Thunderbird y Evolution de Gnome soportan cuentas de correo electrónico tanto locales como remotas. Incluso las interfaces de Webmail pueden considerarse un tipo de MUA, ya que interviene la interacción entre el usuario y el MTA subyacente. Sin embargo, los clientes de correo electrónico no se limitan a las interfaces gráficas. Los clientes de correo electrónico de consola se utilizan ampliamente para acceder a los buzones no integrados en una interfaz gráfica y para automatizar las tareas relacionadas con el correo electrónico dentro de los scripts del shell.
Originalmente, el comando mail
de Unix sólo estaba pensado para compartir mensajes entre usuarios del sistema local (el primer comando mail
se remonta a la primera edición de Unix, lanzada en 1971). Cuando los intercambios de correo electrónico en red se hicieron más importantes, se crearon otros programas para hacer frente al nuevo sistema de entrega y sustituyeron gradualmente al antiguo programa mail
.
Hoy en día, el comando mail
más utilizado es el proporcionado por el paquete mailx, que es compatible con todas las características modernas del correo electrónico. En la mayoría de las distribuciones de Linux, el comando mail
es sólo un enlace simbólico al comando mailx
. Otras implementaciones, como el paquete GNU Mailutils, proporcionan básicamente las mismas características que mailx
. Sin embargo, existen ligeras diferencias entre ellas, especialmente en lo que respecta a las opciones de la línea de comandos.
Independientemente de su implementación, todas las variantes modernas del comando mail
funcionan en dos modos: modo normal y modo de envío. Si se proporciona una dirección de correo electrónico como argumento al comando mail
, éste entrará en el modo de envío, de lo contrario entrará en el modo normal (lectura). En el modo normal, los mensajes recibidos se listan con un índice numérico para cada uno, de modo que el usuario puede referirse a ellos individualmente cuando escribe comandos en el prompt interactivo. El comando print 1
puede utilizarse para mostrar el contenido del mensaje número 1, por ejemplo. Los comandos interactivos pueden ser abreviados, por lo que comandos como print
, delete
o reply
pueden ser reemplazados por p
, d
o r
, respectivamente. El comando mail
siempre considerará el último mensaje recibido o el último visto cuando se omita el número de índice del mensaje. El comando quit
o q
terminará del programa.
El modo send mode es especialmente útil para enviar mensajes de correo electrónico automatizados. Puede utilizarse, para enviar un correo electrónico al administrador del sistema si un script de mantenimiento programado no realiza su tarea. En el modo de envío, mail
utilizará el contenido de la entrada estándar como cuerpo del mensaje:
$ mail -s "Maintenance fail" henry@lab3.campus <<<"The maintenance script failed at `date`"
En este ejemplo, se añadió la opción -s
para incluir un campo de asunto al mensaje. El cuerpo del mensaje fue proporcionado por la redirección Hereline a la entrada estándar, pero el contenido de un archivo o la salida de un comando también podría ser canalizado a la stdin del programa. Si no se proporciona ningún contenido mediante una redirección a la entrada estándar, el programa esperará a que el usuario introduzca el cuerpo del mensaje. En este caso, la pulsación de la tecla Ctrl+D finalizará el mensaje. El comando mail
saldrá inmediatamente después de que el mensaje se añada a la cola de salida.
Personalización de la entrega
Por defecto, las cuentas de correo electrónico en un sistema Linux están asociadas a las cuentas estándares del sistema. Por ejemplo, si el usuario Carol tiene el nombre de usuario carol
en el host lab2.campus
entonces su dirección de correo electrónico será carol@lab2.campus
. Esta asociación uno a uno entre las cuentas del sistema y los buzones de correo puede ser extendida por métodos estándares proporcionados por la mayoría de las distribuciones de Linux, en particular el mecanismo de enrutamiento de correo electrónico proporcionado por el archivo /etc/aliases
.
Un alias de correo electrónico es un destinatario de correo electrónico “virtual” cuyos mensajes recibidos se redirigen a buzones locales existentes o a otros tipos de destinos de almacenamiento o procesamiento de mensajes. Los alias son útiles, por ejemplo, para colocar los mensajes enviados a postmaster@lab2.campus
en el buzón de Carol, que es un buzón local ordinario en el sistema lab2.campus
. Para ello, se debe añadir la línea postmaster: carol
al fichero /etc/aliases
en lab2.campus
. Después de modificar el archivo /etc/aliases
, se debe ejecutar el comando newaliases
para actualizar la base de datos de alias del MTA y hacer efectivos los cambios. Los comandos sendmail -bi
o sendmail -I
también pueden utilizarse para actualizar la base de datos de alias.
Los alias se definen por línea, con el formato <alias>: <destino>
. Además de los buzones locales ordinarios, indicados por el nombre de usuario correspondiente, existen otros tipos de destino:
-
Una ruta completa (que comienza con
/
) a un archivo. Los mensajes enviados al alias correspondiente se añadirán al archivo. -
Un comando para procesar el mensaje. El
<destino>
debe comenzar con un caracter de tubería y si el comando contiene caracteres especiales (como espacios en blanco), debe ir entre comillas dobles. Por ejemplo, el aliassubscribe: |subscribe.sh
enlab2.campus
reenviará todos los mensajes enviados asubscribe@lab2.campus
a la entrada estándar del comandosubscribe.sh
. Si sendmail se ejecuta en modo shell restringido, los comandos permitidos — o los enlaces a ellos — deben estar en/etc/smrsh/
. -
Un archivo de inclusión. Un solo alias puede tener múltiples destinos (separados por comas), por lo que puede ser más práctico mantenerlos en un archivo externo. La palabra clave
:include:
debe indicar la ruta del archivo, como en:include:/var/local/destinos
. -
Una dirección externa. Los alias también pueden reenviar mensajes a direcciones de correo electrónico externas.
-
Otro alias.
Un usuario local sin privilegios puede definir alias para su propio correo electrónico editando el archivo .forward
en su directorio personal. Como los alias sólo pueden afectar a su propio buzón, sólo es necesaria la parte de <destination>
. Para reenviar todos los correos electrónicos entrantes a una dirección externa, por ejemplo, el usuario dave
en lab2.campus
podría crear el siguiente archivo ~/.forward
:
$ cat ~/.forward emma@lab1.campus
Reenviará todos los mensajes de correo electrónico enviados a dave@lab2.campus
a emma@lab1.campus
. Al igual que con el fichero /etc/aliases
, se pueden añadir (una por línea) otras reglas de redirección a .forward
. Sin embargo, el archivo .forward
debe ser escribible sólo por su propietario y no es necesario ejecutar el comando newaliases
después de modificarlo. Los archivos que comienzan con un punto no aparecen en los listados de archivos habituales, lo que podría hacer que el usuario no conociera los alias activos. Por lo tanto, es importante verificar si el archivo existe cuando se diagnostican problemas de entrega de correo electrónico.
Ejercicios guiados
-
Sin más opciones o argumentos, el comando
mail henry@lab3.campus
entra en el modo de entrada para que el usuario pueda escribir el mensaje ahenry@lab3.campus
. Después de terminar el mensaje, ¿qué tecla cerrará el modo de entrada y enviará el correo electrónico? -
¿Qué comando puede ejecutar el usuario root para listar los mensajes no entregados que se originaron en el sistema local?
-
¿Cómo puede un usuario sin privilegios utilizar el método MTA estándar para reenviar automáticamente todo su correo entrante a la dirección
dave@lab2.campus
?
Ejercicios de exploración
-
Utilizando el comando
mail
proporcionado pormailx
, ¿qué comando enviará un mensaje aemma@lab1.campus
con el archivologs.tar.gz
como adjunto y la salida del comandouname -a
como cuerpo del correo electrónico? -
Un administrador de servicios de correo electrónico quiere supervisar las transferencias de correo electrónico a través de la red, pero no quiere saturar su buzón con mensajes de prueba. ¿Cómo podría este administrador configurar un alias de correo electrónico en todo el sistema para redirigir todo el correo electrónico enviado al usuario
test
al archivo/dev/null
? -
¿Qué comando, además de
newaliases
, podría utilizarse para actualizar la base de datos de alias después de añadir un nuevo alias a/etc/aliases
?
Resumen
Esta lección cubre el papel y el uso de los Agentes de Transferencia de Correo en los sistemas Linux. El MTA proporciona un método estándar para la comunicación entre cuentas de usuario y puede combinarse con otro software para proporcionar una funcionalidad adicional. La lección trató los siguientes temas:
-
Conceptos sobre tecnologías, buzones y protocolos relacionados con el correo electrónico.
-
Cómo los MTAs de Linux intercambian mensajes a través de la red.
-
Clientes de correo electrónico de consola y MUAs (Agentes de Usuario de Correo).
-
Uso de alias y reenvío de correo electrónico local.
En esta lección fueron abordados las siguientes tecnologías, comandos y procedimientos:
-
SMTP y protocolos relacionados.
-
MTAs disponibles para Linux: Sendmail, Postfix, qmail, Exim.
-
Comandos MTA y MUA:
sendmail
ymail
. -
Archivos y comandos administrativos:
mailq
,/etc/aliases
,newaliases
,~/.forward
.
Respuestas a los ejercicios guiados
-
Sin más opciones o argumentos, el comando
mail henry@lab3.campus
entra en el modo de entrada para que el usuario pueda escribir el mensaje ahenry@lab3.campus
. Después de terminar el mensaje, ¿qué tecla cerrará el modo de entrada y enviará el correo electrónico?Al pulsar Ctrl+D el programa se cerrará y enviará el correo electrónico.
-
¿Qué comando puede ejecutar el usuario root para listar los mensajes no entregados que se originaron en el sistema local?
El comando
mailq
osendmail -bp
. -
¿Cómo puede un usuario sin privilegios utilizar el método MTA estándar para reenviar automáticamente todo su correo entrante a la dirección
dave@lab2.campus
?El usuario debe añadir
dave@lab2.campus
a~/.forward
.
Respuestas a los ejercicios de exploración
-
Utilizando el comando
mail
proporcionado pormailx
, ¿qué comando enviará un mensaje aemma@lab1.campus
con el archivologs.tar.gz
como adjunto y la salida del comandouname -a
como cuerpo del correo electrónico?uname -a | mail -a logs.tar.gz emma@lab1.campus
-
Un administrador de servicios de correo electrónico quiere supervisar las transferencias de correo electrónico a través de la red, pero no quiere saturar su buzón con mensajes de prueba. ¿Cómo podría este administrador configurar un alias de correo electrónico en todo el sistema para redirigir todo el correo electrónico enviado al usuario
test
al archivo/dev/null
?La línea
test: /dev/null
en/etc/aliases
redirigirá todos los mensajes enviados al buzón localtest
al archivo/dev/null
. -
¿Qué comando, además de
newaliases
, podría utilizarse para actualizar la base de datos de alias después de añadir un nuevo alias a/etc/aliases
?Comando
sendmail -bi
osendmail -I
.