Usando Raspbian y Ubunntu 16.04 LTS, necesito una solución genérica de Linux.
El requisito es simple:
Necesito una forma de enviar mensajes de correo electrónico de una línea desde la línea de comandos.
He configurado una cuenta de gmail solo para este Rpi3 en particular, con la dirección de [email protected], sin 2FA
Así que ahora necesito poder enviar mensajes de correo de una línea desde cualquier lugar (incluido cron) sin intervención del usuario.
También me gustaría poder enviar archivos de texto; básicamente, cualquier cosa de stdin.

Respuestas:
La respuesta más simple para enviar mensajes de una línea a través de gmail es usar ssmtp
Instálalo con los siguientes comandos:
Editar
/etc/ssmtp/ssmtp.confpara verse así:Envíe una línea como esta:
o
Luego, fiel a * nix, solo obtienes el aviso en unos segundos.
Verifique su cuenta [email protected], y listo, ¡está ahí!
Esto también funciona bien al enviar un archivo, así:
Y el programa aparecerá en el buzón
Si el archivo es un archivo de texto, puede tener una primera línea que dice
Subject: xxxxxxEsto se puede usar con varios trabajos cron y puede enviarme datos con líneas de asunto que indican el contenido.
Esto funcionará con cualquier cosa que prepare un mensaje que se canaliza a ssmtp a través de stdin.
Para obtener más detalles, como proteger estos archivos contra otros usuarios, visite este artículo:
Enviar correo electrónico desde la línea de comandos de Raspberry Pi
Asegúrese de mirar también a continuación la respuesta publicada
Ruiacerca del bloqueo de laFROM:dirección que podría modificarse en los archivos de mensajes formateados, si es necesario.Ahora, si solo pudiera descubrir cómo enviar SMS de la misma manera.
fuente
ssmtpen mis máquinas virtuales, muy ligero. +1sendmailsolo no tiene el MTA - Agente de transporte de correo para comunicarse fuera de la máquina. Por defecto, dado que Unixen es multiusuario por diseño,sendmailenviará mensajes a otros usuarios en el mismo cuadro pero no fuera.ssmtpes el MTA que creo que es más sencillo de configurar para gmail.ssmtpes solo uno de los muchos envoltorios de Sendmail. Todos estos aceptan un mensaje en la entrada estándar y, opcionalmente, una lista de direcciones como argumentos de línea de comandos, y todos ofrecen un nombre binariosendmailque implementa (al menos las características básicas de) la API tradicional de línea de comandos Sendmail. Pero hablando correctamente, ese mensaje debe ser un mensaje RFC822 bien formado. Como mínimo, debe tener unSubject:encabezado.(Con
ssmtp,sendmailes solo un enlace simbólico assmtp. Postfix, Exim, y creo que cualquier otro MTA queProvides: mail-transport-agenttenga una disposición similar, excepto, por supuesto,sendmaildonde elsendmailbinario es "lo real").Más comúnmente, puede armar un mensaje de correo electrónico simple con un documento aquí.
(La
-topción Sendmail dice que tome la lista de destinatarios de los encabezados del mensaje que recibe en la entrada estándar. La ruta precisa a Sendmail diferirá entre las plataformas).Otra variación común es combinar la salida de algunos comandos. Tenga cuidado de tener una línea vacía (un "cuello") entre los encabezados y el cuerpo del mensaje.
Para cualquier cosa más allá de los mensajes de texto ASCII muy simples, debe comprender cómo redactar un mensaje MIME adecuado, momento en el que generalmente tiene más sentido usar una herramienta como
mutt. Algunas plataformas tienen unmailomailxque sabe cómo enviar archivos adjuntos y texto que no es ASCII, pero esto no es totalmente portátil.El desafío aquí no es encontrar un cliente que pueda tomar un mensaje de correo electrónico e intentar enviarlo, es configurarlo para los detalles específicos de Gmail, lo que requiere que el MTA conozca el nombre de usuario y la contraseña para usar en el servidor remoto. para poder usarlo como el smarthost saliente.
Detrás de escena, a la mayoría de los clientes les gusta
mutt,mailxetc., normalmente solo se ejecutansendmaildetrás de escena para sacar el mensaje del sistema.fuente
Agregando al OP propia respuesta:
Al configurar
ssmtp, también puede prohibir o permitir que los usuarios definan From, y también anular el dominio; es posible que desee hacerlo por varias razones, incluido el mensaje que no cae en la carpeta Spam.Puedes agregar a
/etc/ssmtp/ssmtp.conf:Tenga en cuenta que si bien YES se puede usar en una frambuesa casera, es posible que no sea aconsejable en un sistema multiusuario desde el punto de vista de la seguridad.
fuente
¿Qué hay de malo con el "correo"?
"mail" es / etc / enlace alternativo a / usr / bin / bsd-mailx del paquete bsd-mailx. Creo que está ahí por defecto. Gran utilidad para enviar correo desde scripts cron, por ejemplo.
Funciona también en Ubuntu y FreeBSD.
fuente
mailxes solo un front end. Requiere que se configure algo de MTA para que el mensaje salga del sistema local. Existen múltiples versiones incompatibles de uso común, aunque si su plataforma de destino es solo Debian, puede confiar en un comportamiento BSD razonablemente reciente.Estoy realmente interesado en usar
mailxesto:fuente
-aopción en particular sería maravillosa si fuera universalmente compatible, pero solo examine lasmailxpreguntas aquí para ver que ciertamente este no es el caso.Utilizo sendEmail para enviar correos electrónicos automáticos simples a través del servidor SMTP de un proveedor externo:
Paso todo en una línea, por lo que hacer esto en una línea de comando probablemente muestre todos los parámetros (incluida la contraseña smtp) a todos los usuarios, si se ejecutan un
ps -eftiempo, estoy ejecutando el comando. Lo uso dentro de un script de shell.fuente
Mi servidor es CEntOS 7 y tiene sendmail pero no mailx, etc. En lugar de instalar un nuevo programa, probé usando sendmail directamente y descubrí que esto funciona:
Para mí, esta parece ser la forma más sencilla de enviar un correo electrónico corto, ya que no requiere ejecutar o configurar un servidor o demonio, y puede hacerse en una sola línea de comando.
La idea es que un mensaje simplemente me alertará de que cierto programa arrojó un error, sin revelar ninguna información potencialmente confidencial, y luego enviaré SSH al servidor para inspeccionar sus registros. De esta manera, no hay necesidad de molestarse con complicaciones como adjuntar archivos o cifrar el transporte.
Notas:
-ele dice a echo que interprete '\ n' y otros escapes.-tle dice a sendmail que obtenga las direcciones de los destinatarios de 'Para:' en el encabezado del mensaje.tail /var/log/maillogpara ver mensajes de error.fuente
sendmail, pero no veo esta respuesta que demuestre que funciona con gmail como se especifica en la pregunta original ...