Ssmtp
Attenzione. Questa guida è da considerarsi abbandonata, per via del tempo trascorso dall'ultima verifica.
Potrà essere resa obsoleta, previa segnalazione sul forum, se nessuno si propone per l'adozione. |
Versioni Compatibili Debian 8 "jessie" |
Introduzione
Ssmtp è un semplice MTA che permette l'invio di email da un computer ad un hub mail (server smtp) senza la necessità di avere un ambiente grafico installato. È estremente leggero, essenziale e non richiede l'esecuzione di servizi permanenti (daemons) in background, tuttavia non permette ne di gestire code ne di ricevere mail, nemmeno quelle locali.
L'invio di mail può essere effettuato sia direttamente tramite l'eseguibile ssmtp
che configurando opportunamente il proprio MUA (es. Mutt).
ssmtp ed exim
ssmtp
non può coesistere con exim
, il MTA predefinito di debian, pertanto installare il primo comporta necessariamente la rimozione del secondo.
Questo fatto può costituire un problema per coloro i quali trovano utile continuare a ricevere in locale le mail di sistema, infatti come già accennato ssmtp
non permette in alcun modo la ricezione di email, nemmeno quelle locali, a differenza di exim.
In poche parole, se si ha a che fare con una macchina cui si accede prevalentemente via LAN, allora l'installazione di ssmtp
può risultare non ottimale in quanto tutte le mail, anche quelle di sistema, verrebbero dirottate verso un server smtp esterno per poi essere di fatto rispedite indietro all'utente.
In tutti quei casi invece in cui la macchina non appartiene alla propria LAN e si ha bisogno di un sistema molto semplice e leggero per l'invio delle mail (di sistema e non), allora ssmtp
risulta essere una soluzione molto valida.
Installazione
ssmtp
è disponibile direttamente da repository:
apt-get install ssmtp
Configurazione
I file di configurazione di ssmtp
sono due ed entrambi assolutamente minimali.
/etc/ssmtp/ssmtp.conf
Ecco un esempio generico di file di configurazione adatto a servizi gratuiti come gmail, yahoo, ecc. che supportano TLS:
# # Config file for sSMTP sendmail # # The person who gets all mail for userids < 1000 # Make this empty to disable rewriting. root=nome_account_email@dominio # The place where the mail goes. The actual machine name is required no # MX records are consulted. Commonly mailhosts are named mail.domain.com UseTLS=YES UseSTARTTLS=YES mailhub=indirizzo_server_smtp:587 # Where will the mail seem to come from? #rewriteDomain= # The full hostname hostname=hostname_della_propria_macchina # Are users allowed to set their own From: address? # YES - Allow the user to specify their own From: address # NO - Use the system generated From: address #FromLineOverride=YES # Authentication parameters AuthMethod=LOGIN AuthUser=nome_account_email@dominio AuthPass=password_account_mail
Significato dei parametri usati:
- root definisce l'indirizzo mail a cui saranno inviate tutte le mail di sistema, ovvero quelle generate dagli utenti con UID < 1000
- UseTLS e UseSTARTTLS devono avere valore
YES
se si intende usare il protocollo TLS. - mailhub specifica l'indirizzo del server smtp, comprensivo di porta, cui spedire le mail (ad esempio
smtp.gmail.com:587
nel caso di gmail). È possibile definire più parametri mail hub e quindi specificare diversi server smtp, tuttavia si tenga presente che non è comunque possibile definire più di una coppia di credenziali di accesso. - hostname, parametro che definisce il nome host della propria macchina. Normalmente non necessita di essere modificato in quanto generato automaticamente durante l'installazione. Provare a commentarlo in caso di problemi durante l'invio delle email.
- FromLineOverride permette di modificare il campo from di una mail con un valore arbitrario. Il valore predefinito inserito nelle mail da
ssmtp
coincide connome_utente_linux@nome_host
. Si Sconsiglia caldamente sia di abilitare tale opzione che mantenere il valore predefinito, in quanto entrambi i casi provocano spesso il rifiuto delle email da parte dei server smtp di società come gmail e yahoo. Vedere a tal proposito il file di configurazione/etc/sstmp/revaliases
- AuthMethod, definisce il metodo di login. Le alternative di solito sono tra i valori
LOGIN
ePLAIN
, tuttavia il primo risulta essere (al momento in cui si scrive) il valore più comune per i servizi come gmail e affini. Non è possibile definire più di una volta questo parametro. - AuthUser e AuthPass definiscono banalmente le credenziali necessarie ad autenticarsi presso il (o i) mail hub specificati. Entrambi i parametri possono essere specificati al più una volta.
Restringere l'accesso a ssmtp.conf
Limitarsi a cambiare i permessi del suddetto file in 640
significa anche restringere l'utilizzo di ssmtp.conf
all'utente root.
Per "salvare capra e cavoli" è sufficiente seguire la seguente procedura:
# chmod 640 /etc/ssmtp/ssmtp.conf
# groupadd ssmtp
# chown :ssmtp /etc/ssmtp/ssmtp.conf
# chown :ssmtp /usr/sbin/ssmtp
# chmod g+s /usr/sbin/ssmtp
Naturalmente l'utente è libero di scegliere un qualsiasi nome per il nuovo gruppo, la scelta di chiamarlo ssmtp
è del tutto arbitraria. Quello che conta è che nessun utente normale appartenga a tale gruppo.
L'ultimo comando fa si che l'eseguibile /usr/sbin/ssmtp
risulti appartenere al gruppo ssmtp
quando eseguito, a prescindere dall'utente che ha effettivamente lanciato tale applicativo. In tal modo l'utente continua a non poter accedere al file di configurazione, ma l'eseguibile sì.
/etc/sstmp/revaliases
Ecco un esempio generico di file di configurazione adatto a servizi gratuiti come gmail, yahoo, ecc. che supportano TLS:
# sSMTP aliases # # Format: local_account:outgoing_address:mailhub # # Example: root:your_login@your.domain:mailhub.your.domain[:port] # where [:port] is an optional port number that defaults to 25. root:nome_account_email@dominio:indirizzo_server_smtp:587 nome_utente_linux:nome_account_email_utente@dominio:indirizzo_server_smtp:587
Il formato di ogni riga è come facilmente visibile:
nome_utente_linux : nome_account_email_utente@dominio : indirizzo_server_smtp:587
Per quanto riguarda il primo e il terzo parametro non vi è nulla da aggiungere, mentre per quanto riguarda il secondo si fa notare che tale parametro definisce il mittente (cioè il valore predefinito del campo From
) delle email che si spediscono. Tale valore sostituisce quello predefinito di sistema, ma può essere a sua volta sostituito dagli utenti se in /etc/ssmtp/ssmtp.conf
è stato impostato FromLineOverride=YES
.
Si consiglia sempre di far coincidere l'indirizzo del mittente con quello usato per autenticarsi presso il server smtp (cioè quello specificato dal parametro AuthUser
nel file /etc/ssmtp/ssmtp.conf
), pena il rischio di verdersi rifiutare l'invio delle mail e anche la chiusura temporanea del suddetto account (es. gmail).
Esempi
gmail.com
/etc/ssmtp/ssmtp.conf
root=nome_account@gmail.com UseTLS=YES UseSTARTTLS=YES mailhub=smtp.gmail.com:587 hostname=nome_host AuthMethod=LOGIN AuthUser=nome_account@gmail.com AuthPass=password_account
/etc/ssmtp/ssmtp.conf
root:nome_account@gmail.com:smtp.gmail.com:587
Note:
- evitare di specificare come indirizzo mittente un indirizzo diverso da quello usato per autenticarsi presso il server smtp;
- è probabile che sia necessario abilitare l'uso di applicazioni meno sicure dalla pagina del proprio account gmail (account personale --> app e siti collegati --> consenti app meno sicure);
- se si modifica il mittente o si specificano impostazioni che gmail mal sopporta è possibile che cercando di inviare più mail (N > 3) il proprio account gmail venga chiuso temporaneamente con richiesta di verifica attraverso l'invio di un sms sul proprio cellulare.
gmx.com
/etc/ssmtp/ssmtp.conf
root=nome_account@gmx.com UseTLS=YES UseSTARTTLS=YES mailhub=mail.gmx.com:587 hostname=nome_host AuthMethod=LOGIN AuthUser=nome_account@gmx.com AuthPass=password_account
/etc/ssmtp/ssmtp.conf
root:nome_account@gmx.com:mail.gmx.com:587
Note:
- evitare di specificare come indirizzo mittente un indirizzo diverso da quello usato per autenticarsi presso il server smtp.
yahoo.it
/etc/ssmtp/ssmtp.conf
root=nome_account@yahoo.it UseTLS=YES UseSTARTTLS=YES mailhub=smtp.mail.yahoo.it:587 hostname=nome_host AuthMethod=LOGIN AuthUser=nome_account@yahoo.it AuthPass=password_account
/etc/ssmtp/ssmtp.conf
root:nome_account@yahoo.it:smtp.mail.yahoo.it:587
Nota, evitare di specificare come indirizzo mittente un indirizzo diverso da quello usato per autenticarsi presso il server smtp poiché altrimenti si riceve il seguente messaggio d'errore:
553 From: address not verified;<br/> "see http://help.yahoo.com/l/us/yahoo/mail/original/manage/sendfrom-07.html"
Invio mail
Come già accennato nell'introduzione è possibile inviare mail sia usando l'eseguibile ssmtp
che un qualsiasi MUA di propria scelta.
ssmtp
È possibile inviare mail sia in modo interattivo che specificando un file testuale contenente il messaggio della mail.
Si noti che ssmtp
è inserito nel path degli eseguibili disponibili solo per root
, gli utenti normali invece, pur potendolo eseguire, devono o aggiungere manualmente il suo percorso all'elenco che definisce dove cercare i vari eseguibili, oppure specificare ogni volta il percorso completo di ssmtp
.
invio interattivo
Digitare:
$ ssmtp indirizzo_mail_destinatario@dominio
e premere "invio". Nella nuova riga digitare:
To: indirizzo_mail_destinatario@dominio
e premere "invio". Nella nuova riga digitare:
Subject: oggetto della mail
e premere "invio". Nella nuova riga scrivere il corpo del messaggio e quindi premere CTRL + D
per inviare il messaggio.
In sintesi prima si inseriscono i vari campi della mail e solo per ultimo il messaggio da inviare:
- destinatario (
To:
); - eventuali destinatari in copia (
Cc:
) uno per riga; - mittente se diverso da quello predefinito e se non crea problemi come descritto sopra (
From:
); - oggetto della mail (
Subject:
); - corpo della mail.
invio da file testuale
La formattazione da seguire è la medesima descritta al punto precedente, ma tutti i dati devo essere inseriti in un file testuale contenente qualcosa di simile a quanto segue:
To: indirizzo destinatario Cc: indirizzo destinatario copia 1 Cc: indirizzo destinatario copia N Subject: oggetto della mail Corpo della mail
Si noti che tra Subject:
e corpo della mail deve NECESSARIAMENTE esserci una riga vuota.
Per inviare la mail è sufficiente digitare:
$ ssmtp indirizzo_destinatario@dominio < nome_file
Mutt
Premesso che chi scrive non ha mai provato ad usare Mutt in combinazione con ssmtp, la configurazione di questo MUA dovrebbe essere semplice.
Creare, se già non esiste, un file di nome ~/.muttrc
(copiandolo per esempio da /etc/Muttrc
), quindi editarlo inserendo le seguenti linee:
set sendmail="/usr/sbin/ssmtp" set from="indirizzo_account@dominio" set use_from=yes
Come già ripetuto in precedenza, evitare di indicare come indirizzo del mittente un indirizzo differente da quello usato per autenticarsi al server ssmtp specificato in smtp.conf
(a meno di non essere assolutamente sicuri che ciò non crei problemi col proprio provider di posta).
Approfondimenti
Man pages
man ssmtp
man ssmtp.conf
Sitografia
Guida scritta da: Wtf 16:03, 11 gen 2016 (CET) | Debianized 20% |
Estesa da: | |
Verificata da: | |
Verificare ed estendere la guida | Cos'è una guida Debianized |