Inviare mail attraverso server SMTP diversi



Io per leggere e scrivere le email uso mutt che, essendo un client, si appoggia a programmi esterni per eseguire l'invio e la ricezione della posta.

Tipicamente in mutt si imposta la variabile sendmail con il programma che si intende utilizzare per l'invio della posta. Ad esempio se si ha una installazione standard di debian wheezy dovremo impostare la variabile in questo modo:

set sendmail="/usr/sbin/sendmail -oem -oi"

e avremo che la posta verrà smistata da exim4.

Tutti ormai hanno account di posta su provider diversi: gmail e yahoo sono forse i più noti, ma anche chi ci fornisce l'adsl quasi sempre ci dà un indirizzo personale da poter utilizzare.

Nel caso di un solo server di posta exim4 può essere impostato in modalità smarthost in modo che rendirizzi la posta verso i server smtp di gmail invece che direttamente verso i destinatari. La cosa si complica un po' se invece si hanno server di posta diversi.

Senza perdermi nei meandri della configurazione di exim4 ho deciso di provare e alla fine di utilizzare stabilmente msmtp.

Msmtp è un client SMTP che trasmette le mail ad un server che poi si occupa dell'instradamento. La particolarità è che msmtp prevede di poter inviare a più server, scegliendo il server in base al valore del campo From della mail.

La configurazione di msmtp sta tutta nel file ~/.mstprc che, nel mio caso, ha la seguente struttura:

# Gmail
account        gmail
host           smtp.gmail.com
port           587
auth            on
tls             on
tls_starttls    on
tls_trust_file /etc/ssl/certs/ca-certificates.crt
from           me@gmail.com
user           me@gmail.com
password       XXXXXXXX
 
# Postecert
account         postecert
host            mail.postecert.it
port            465
auth            on
tls             on
# postecert non funziona se questa opzione è commentata
tls_starttls    off                     
tls_trust_file /etc/ssl/certs/ca-certificates.crt
from            me@postecert.it
user            me@postecert.it
password        YYYYYYYYYYY

Come si può vedere sono definiti due server di posta: per ognuno è descritto il campo From che msmtp userà per decidere verso quale server inviare la mail.

A questo punto non resta che configurare mutt in modo che usi msmtp e che ci permetta di modificare il campo From:

set sendmail="/usr/bin/msmtp"
set use_from=yes
set realname="Your Name"
set from=you@example.com
set envelope_from=yes

La prima opzione imposta msmtp come programma per l'invio delle mail, la seconda indica a mutt di generare il campo From mentre l'ultima indica a mutt di impostare l'opzione -f quando richiama msmtp: con questa opzione msmtp userà il campo From per decidere verso che server indirizzare la mail.

A questo punto quando siamo nella modalità Compose di mutt, con ESC-f andremo a modificare il From a seconda del server smtp che vogliamo usare.

In un prossimo post vedremo come condfigurare mutt in modo da leggere mail da account di posta diversi.

Blog: 

Programmazione: 

Aggiungi un commento