sSMTP (Español)
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.
Instalación
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íneaAuthUser
y use la contraseña de 16 caracteres generada en la líneaAuthPass
(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
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 -e 'Subject: prueba\n\nProbando los ajustes' | 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í)
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
/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.