SSMTP (Español)

From ArchWiki
Jump to navigation Jump to search
Estado de la traducción
Este artículo es una traducción de SSMTP, revisada por última vez el 2019-11-22. Si advierte que la versión inglesa ha cambiado puede ayudar a actualizar la traducción, bien por usted mismo o bien avisando al equipo de traducción.

SSMTP es un programa que entrega correo electrónico desde un ordenador local a un servidor de correo configurado (mailhub). No es un servidor de correo (como si lo es el servidor de correo rico en funciones sendmail) y no recibe correo, ni expande alias, ni administra una cola. Uno de sus usos principales es reenviar el correo electrónico automatizado (como las alertas del sistema) desde su equipo a una dirección de correo electrónico externa.

Nota: ssmtp está desatendido Considere usar algo como msmtp o OpenSMTPD en su lugar.

Instalación

Instale el paquete ssmtpAUR.

Reenviar a un servidor de correo de Gmail

Para configurar SSMTP, deberá editar su archivo de configuración (/etc/ssmtp/ssmtp.conf) e ingresar la configuración de su cuenta.

  • Si su cuenta de Gmail está protegida con autenticación de dos factores, debe generar una App Password única para usar en ssmtp.conf. Puede hacerlo en su página App Passwords de Google. Use su nombre de usuario de Gmail (no el nombre de la aplicación) en la línea AuthUser y use la contraseña de 16 caracteres generada en la línea AuthPass (se pueden omitir espacios en la contraseña).
  • Si no usa la autenticación de dos factores, debe permitir el acceso a aplicaciones no seguras. Puede hacerlo en su página Less Secure Apps de Google.
/etc/ssmtp/ssmtp.conf

# El usuario que recibe todos los correos (UID <1000, generalmente el administrador)
root=username@gmail.com

# El servidor de correo (donde se envía el correo), tanto el puerto 465 como el 587 deberían ser aceptables
# Véase también https://support.google.com/mail/answer/78799
mailhub=smtp.gmail.com:587

# La dirección de donde proviene el correo para la autenticación del usuario
rewriteDomain=gmail.com

# El nombre de equipo completo. Debe estar formado correctamente el nombre de dominio completo o GMail rechazará la conexión.
hostname=yourlocalhost.yourlocaldomain.tld

# Utilice SSL/TLS antes de comenzar la negociación
TLS_CA_FILE=/etc/ssl/certs/ca-certificates.crt
UseTLS=Yes
UseSTARTTLS=Yes

# Usuario/Contraseña
AuthUser=username
AuthPass=password
AuthMethod=LOGIN

# 'From header' del correo electrónico, ¿puede sobrescribir el dominio predeterminado?
FromLineOverride=yes
Nota: tenga en cuenta que la configuración que se muestra es un ejemplo para Gmail. Puede que tenga que usar otras configuraciones. Si no funciona como se esperaba, lea la página de manual ssmtp(8).

Crear alias para nombres de usuario locales (opcional):

/etc/ssmtp/revaliases
root:username@gmail.com:smtp.gmail.com:587
mainuser:username@gmail.com:smtp.gmail.com:587

Para probar si el servidor de Gmail reenviará correctamente su correo electrónico:

$ echo -n 'Subject: test\n\nTesting ssmtp' | sendmail -v tousername@example.com

Cambie el texto de 'From' editando /etc/passwd para recibir correo de 'root at myhost' en lugar de solo 'root'.

# chfn -f 'root at myhost' root
# chfn -f 'mainuser at myhost' mainuser

Que cambia /etc/passwd a:

$ grep myhost /etc/passwd
root:x:0:0:root at myhost,,,:/root:/bin/bash
mainuser:x:1000:1000:mainuser at myhost,,,:/home/mainuser:/bin/bash

Seguridad

Debido a que su contraseña de correo electrónico se almacena como texto sin formato en /etc/ssmtp/ssmtp.conf, es importante que este archivo sea seguro. Por defecto, todo el directorio /etc/ssmtp es accesible solo por root y el grupo mail. El binario /usr/bin/ssmtp se ejecuta como el grupo mail y puede leer este archivo. No hay ninguna razón para agregarse usted u otros usuarios al grupo mail.

Enviar correo electrónico

Para enviar correos electrónicos desde el terminal, haga lo siguiente:

$ echo -e "Subject: this is the subject\n\nthis is the body" | mail user@example.com

o interactivamente como:

$ sendmail username@example.com
Subject: este es mi asunto
CC: opcional@ejemplo.com

(Ahora puede escribir el texto aquí)
Nota: cuando utilice «mail» de forma interactiva, después de escribir Subject: asunto y otros encabezados, presione «intro» dos veces y luego escriba el texto. Presione Ctrl+d en una línea en blanco para finalizar su mensaje y enviarlo automáticamente.

Un método alternativo para enviar correos electrónicos es crear un archivo de texto y enviarlo con ssmtp o mail

test-mail.txt
To:nombreusuario@ejemplo.com
From:sucuenta@gmail.com
Subject: Prueba

Este es un correo de prueba.

Envíe el archivo test-mail.txt:

$ sendmail -t < test-mail.txt

Algunos usuarios pueden preferir la sintaxis de mail con s-nail, mailutils, u otros proveedores de mailx en su lugar. Por ejemplo, mail tiene opciones para proporcionar el «subject» como un argumento. mail requiere sendmail y puede usar ssmtpAUR como sendmail.

Archivos adjuntos

Si necesita agregar archivos adjuntos, instale y configure Mutt y Msmtp y luego vea la sugerencia en nixcraft.

Alternativamente, puede adjuntar usando uuencode de sharutils. Para adjuntar 'file.txt' como 'myfile.txt':

$ uuencode file.txt myfile.txt | sendmail user@example.com

Correo a usuarios locales

Los mensajes enviados a usuarios locales (o cualquier otra dirección que no termine en @fqdn se tratan de una de estas dos maneras:

  • el usuario de destino tiene UID < 1000 — la dirección se reemplaza por la dirección definida por root=user@fqdn en /etc/ssmtp/ssmtp.conf;
  • el usuario de destino tiene UID ≥ 1000 o el usuario es desconocido — el valor de rewriteDomain= en /etc/ssmtp/ssmtp.conf se agrega al final del identificador del usuario.

Esto puede generar problemas si los usuarios locales en su sistema no son también usuarios válidos en su rewriteDomain, pero están recibiendo correo de los servicios del sistema, especialmente si su dominio de reescritura es un servicio público comogmail.com.

Para evitar esto, puede usar mail desde s-nail. La orden mail puede leer los alias definidos en /etc/mail.rc. Ejemplo:

$ grep alias /etc/mail.rc
alias git git<username@example.com>
alias archuser 'My Name'<someone@example.com>

Luego puede canalizar mensajes en mail en lugar de sendmail:

$ echo -e "Hey archuser." | mail archuser
Nota: es posible que tenga la tentación de vincular sendmail a /bin/mail. No haga eso. sendmail y mail tienen una sintaxis diferente para los argumentos y la entrada estándar. Es mejor encontrar los procesos que utiliza «sendmail» directamente y configurarlos para usar «mail» en su lugar.

Referencias