Pagina 1 di 1

script email da shell

Inviato: mercoledì 14 ottobre 2020, 11:43
da emmx
Ubuntu 20.04 LTS

Buongiorno,
ho la necessità di ricevere quotidianamente un file di log via email.
Ho configurato msmtp in questo modo:
/home/linux/.msmtprc

#esempio
account gmail
tls on
tls_certcheck off
auth on
host smtp.gmail.com
port 587
user pippo@gmail.com
from pippo@gmail.com
password pippo

faccio il test di invio:
cat /var/log/esito | msmtp -a gmail miaemail@dominio.it
ma non accade nulla, e non va neppure a cancelletto.
Sapete darmi un aiuto? O altra soluzione per ricevere un file via email?
Grazie

Re: script email da shell

Inviato: mercoledì 14 ottobre 2020, 11:50
da emmx
Aggiungo che non ho necessità di configurare un server di posta, ma solo utilizzare un client-email per l'invio di un semplice file.
Grazie

Re: script email da shell

Inviato: mercoledì 14 ottobre 2020, 13:04
da thece
:ciao:

il problema potrebbero essere le impostazioni di sicurezza del tuo account di Google, devi consentire l'uso delle app meno sicure.

Per fare ciò che vuoi tu io uso sendemail. Di seguito uno script di esempio

sendEmailWithGMail.sh

Codice: Seleziona tutto

#!/bin/bash

# Requisiti
#
# - sendemail
# - libio-socket-ssl-perl
# - libnet-ssleay-perl

# Note
#
# Nelle impostazioni dell'account di Google consentire l'uso delle app meno sicure

FROM_ADDRESS="-f ACCOUNT@gmail.com"
TO_ADDRESS="-t RECEIVER@SOMEWHERE.ORG"
SMTP_MAIL_SERVER="-s smtp.gmail.com:587 -o tls=yes"
SMTP_USER="-xu ACCOUNT@gmail.com"
SMTP_PASSWORD="-xp PASSWORD"
SUBJECT="-u \"Subject of SendEmailWithGMail\""
MESSAGE="-m \"Message of SendEmailWithGMail.\""
ATTACHMENT="-a /PATH/ATTACHMENT"

sendemail $FROM_ADDRESS -o message-header="From: FIRST_NAME LAST_NAME <ACCOUNT@gmail.com>" $TO_ADDRESS $SMTP_MAIL_SERVER $SMTP_USER $SMTP_PASSWORD $SUBJECT $MESSAGE $ATTACHMENT

exit 0

Re: script email da shell

Inviato: mercoledì 14 ottobre 2020, 15:00
da emmx
Ho pensato alle impostazioni di google per abilitare le app meno sicure, ma ho provato anche con un altro account che non fosse gmail ma da il solito risultato.

Comunque se usassi il tui script di esempio c'è modo di allegare un file all'email?

Re: script email da shell

Inviato: mercoledì 14 ottobre 2020, 15:21
da thece
emmx ha scritto:
mercoledì 14 ottobre 2020, 15:00
Comunque se usassi il tui script di esempio c'è modo di allegare un file all'email?
Certo che si, devi usare/aggiungere l'opzione -a

Codice: Seleziona tutto

sendemail --help
Ho aggiunto questa possibilità allo script sopra.

Re: script email da shell

Inviato: mercoledì 14 ottobre 2020, 15:46
da emmx
server sendemail[65622]: ERROR => No TLS support! SendEmail can't load required libraries. (try installing Net::SSLeay and IO::Socket::SSL)


quali sono i pacchetti che mi mancano?

Re: script email da shell

Inviato: mercoledì 14 ottobre 2020, 15:54
da thece
emmx ha scritto:
mercoledì 14 ottobre 2020, 15:46
quali sono i pacchetti che mi mancano?
E' indicato nel contenuto dello script (Requisiti)

Re: script email da shell

Inviato: mercoledì 14 ottobre 2020, 17:26
da emmx
Perfetto

Volendo rendere lo script ancora più "fino", invece di inserire l'allegato nella mail c'è modo di inserire il testo dell'allegato nel body della mail?

ho provato ad inserire -o message-file=/home/fdos/esito.doc
ma non ottengo il risultato sperato.

Re: script email da shell

Inviato: mercoledì 14 ottobre 2020, 17:32
da thece
emmx ha scritto:
mercoledì 14 ottobre 2020, 17:26
... invece di inserire l'allegato nella mail c'è modo din inserire il testo dell'allegato nem body della mail?
Quindi non è più un allegato, diventa parte del corpo della mail! Ma se mi fai un esempio è meglio
Certo. Nello script devi comporre il corpo della mail.

Re: script email da shell

Inviato: mercoledì 14 ottobre 2020, 17:35
da Filoteo
@thece $FROM_ADDRESS lo decido io? Quindi posso inserirne un mittente falso, come se la mia mai provenisse dalla Casa Bianca?

Re: script email da shell

Inviato: mercoledì 14 ottobre 2020, 17:45
da emmx
thece ha scritto:
mercoledì 14 ottobre 2020, 17:32

Quindi non è più un allegato, diventa parte del corpo della mail! Ma se mi fai un esempio è meglio
Certo. Nello script devi comporre il corpo della mail.

Inizialmente pensavo di allegare il file esito.doc ma visto il tuo script mi sarebbe piaciuto integrare nel body dell'email il testo del file esito.doc
conviene salvare nella variabile MESSAGE un "cat /home/fdos/esito.doc" ?

Re: script email da shell

Inviato: mercoledì 14 ottobre 2020, 18:40
da Janvitus
Prova a mandare un messaggio con mail e con sendmail:

Codice: Seleziona tutto

echo "Questa è una prova di msmtp" | sendmail -v email@email.it

Codice: Seleziona tutto

mail -s "proviamo msmtp" email@email.it
msmtp fa un po' i capricci con permessi e gruppi.

Re: script email da shell

Inviato: mercoledì 14 ottobre 2020, 23:27
da thece
Filoteo ha scritto:
mercoledì 14 ottobre 2020, 17:35
@thece $FROM_ADDRESS lo decido io? Quindi posso inserirne un mittente falso, come se la mia mai provenisse dalla Casa Bianca?
Si, teoricamente ci puoi scrivere quello che vuoi. Nella pratica poi la mail è passata al vaglio dell'SMTP server, quindi se non supera le regole imposte - in questo caso da Google - non viene inoltrata a valle.

emmx ha scritto:
mercoledì 14 ottobre 2020, 17:45
... ma visto il tuo script mi sarebbe piaciuto integrare nel body dell'email il testo del file esito.doc
I corpo di una mail è puro testo. Testo "piatto" oppure formattato in HTML, ma sempre testo rimane. Un file .doc non è un file di testo (*) quindi non può essere inglobato così com'è nel corpo di una mail.
Detto ciò, escludendo l'attachment, con sendmail hai due possibilità:

- opzione -m STRINGA

nello script integri la logica di programmazione necessaria per comporre la STRINGA di testo come più ti è utile

- opzione -o message-file=/PATH/FILE

nello script integri la logica di programmazione necessaria per comporre il FILE di testo come più ti è utile


(*) Un file .doc è un archivio .zip. Non ci credi? Cambia l'estensione al file ...


Scusami, ho notato solo adesso che mi avevi già fatto l'esempio
emmx ha scritto:
mercoledì 14 ottobre 2020, 17:26
... ho provato ad inserire -o message-file=/home/fdos/esito.doc ma non ottengo il risultato sperato ...

Re: script email da shell

Inviato: giovedì 15 ottobre 2020, 9:35
da emmx
ok funziona togliendo $MESSAGE e aggiungendo -o message-file=/home/fdos/esito.doc

la cosa che non mi piace molto è la password in chiaro, c'è modo di nasconderla?

Re: script email da shell

Inviato: giovedì 15 ottobre 2020, 9:48
da thece
emmx ha scritto:
giovedì 15 ottobre 2020, 9:35
ok funziona togliendo $MESSAGE e aggiungendo -o message-file=/home/fdos/esito.doc
Funziona? Ma sei proprio sicuro? Ma quel file esito.doc è un documento di MS Office oppure è un file di testo che ha semplicemente estensione .doc?
emmx ha scritto:
giovedì 15 ottobre 2020, 9:35
la cosa che non mi piace molto è la password in chiaro, c'è modo di nasconderla?
Non credo ma per sicurezza leggi la documentazione. In alternativa direi che devi lavorare sui permessi associati allo script.

Re: script email da shell

Inviato: venerdì 16 ottobre 2020, 18:01
da emmx
thece ha scritto:
giovedì 15 ottobre 2020, 9:48

Funziona? Ma sei proprio sicuro? Ma quel file esito.doc è un documento di MS Office oppure è un file di testo che ha semplicemente estensione .doc?

Si funziona perchè non è un vero file .doc ma rinominato da me per permettere agli utenti windows di aprirlo con office.

Re: script email da shell

Inviato: martedì 24 novembre 2020, 14:40
da smurf
Ciao.
Anche io sto esplorando l'invio di mail da bash usando Google.
Il fatto è che quell'opzione di usare "app meno sicure" verrà eliminata a partire da febbraio 2021. Esiste un altro metodo Autrnticazione con Xoauth2, ma è piuttosto complicato ed ancora non l'ho del tutto risolto, oppure usare la verifica in due passi, ma quest'utltima non è chiaro se sparirà a febbraio o no.
Comunque se volete potete dare un'occhiata a questa discussione.

Re: script email da shell

Inviato: martedì 24 novembre 2020, 14:54
da smurf
thece ha scritto:
mercoledì 14 ottobre 2020, 23:27

- opzione -m STRINGA

- opzione -o message-file=/PATH/FILE
Scusatemi, però nel man di sendmail dice:

Codice: Seleziona tutto

 
 -m (ignored)
  Backwards compatibility.
              
-oAalias_database
   Non-default alias database. Specify pathname or type:pathname. See postalias(1) for details.

-O option=value (ignored)
   Set the named option to value. Use the equivalent configuration parameter in main.cf instead.                
Forse mi sono perso qualcosa?

Re: script email da shell

Inviato: martedì 24 novembre 2020, 14:58
da thece
smurf ha scritto:
martedì 24 novembre 2020, 14:54
Scusatemi, però nel man di sendmail dice:
...
Forse mi sono perso qualcosa?
Probabilmente stai usando una versione di sendemail più aggiornata della mia

Codice: Seleziona tutto

sendemail

sendemail-1.56 by Brandon Zehm <caspian@dotconf.net

Re: script email da shell

Inviato: martedì 24 novembre 2020, 15:19
da smurf
Che strano, me ne accorgo adesso:
tu parli di sendemail , mentre io ho guardato il man di sendmail. Ma il mio pc non conosce sendemail e non lo può installare.
Ho unbuntu mate 20.10.

Edit:
l'ho trovato, adesso lo vedo. Quindi è stato tutta una confusione dovuta ad una "e", scusami.