Postfix relay tramite Google

Inoltrare le mail da postfix ai server di Google

In questa guida vediamo come configurare Postfix per inoltrare le mail inviate dal sistema tramite il server SMTP di google, utilizzando un indirizzo @gmail.com.

Capita spesso di creare degli script in bash personalizzati per effettuare delle operazioni di routine come il backup di una cartella, di un database, oppure di dover eseguire un comando tramite cron.

Possiamo implementare una funzione molto comoda che ci avverte tramite mail quando la procedura ha avuto successo o se magari è fallita, addirittura allegando un log delle operazioni effettuate.

Per fare questo abbiamo bisogno che il nostro server possa inviare mail in modo sicuro e controllato e soprattutto che queste email non finiscano nello spam, quale modo migliore se non inoltrare il tutto tramite il server SMTP di Google ?

La distribuzione di riferimento utilizzata per questo test è la Debian 8.9 64 Bit, per visualizzare nel dettaglio la versione della nostra Debian basta eseguire il comando:

cat /etc/debian_version

l’installazione di Postfix è molto semplice, basta digitare da riga di comando, assicurandosi di avere i permessi di root il seguente comando:

apt-get install postfix -y

In fase di installazione ci verrà chiesto l’utilizzo che vorremo fare del nostro server di posta come in figura, il consiglio è quello di selezionare “Internet Site”

per proseguire selezionare "Internet Site"

Opzione di configurazione server postfix

In seguito ci verrà posta un’altra domanda: il mail name. Nel nostro caso possiamo utilizzare un qualunque nome host, quello suggerito dalla configurazione va più che bene.

Configurazione mail name

Configurazione mail name del server postfix

Dopo una breve elaborazione, che dipende soprattutto dalla velocità del vostro server e dalla capacità del vostro collegamento ad internet, avremo il nostro server Postfix installato e funzionante ma con le impostazioni di default.

A questo punto ci serve configurare il demone di postfix indicandogli in che modo inoltrare le nostre email e soprattutto i parametri di autenticazione al server SMTP di Google.

Il file di configurazione di postfix si trova nella cartella /etc/postfix e si chiama main.cf. Utilizziamo l’editor di testo a noi più comodo ed effettuiamo le modifiche, cerchiamo la direttiva “relayhost”, se non è presente basta inserire queste stringhe nel file di configurazione :

relayhost = [smtp.gmail.com]:587
# Enable SASL authentication
smtp_sasl_auth_enable = yes
# Disallow methods that allow anonymous authentication
smtp_sasl_security_options = noanonymous
# Location of sasl_passwd
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
# Enable STARTTLS encryption
smtp_tls_security_level = encrypt
# Location of CA certificates
smtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crt

In questo modo abbiamo istruito il nostro server per inoltrare (relay) le mail in uscita all’host “smtp.gmail.com” sulla porta 587, e soprattutto che dovrà utilizzare il file /etc/postfix/sasl_passwd per trovare username e password dell’host di relay configurato.

Possiamo salvare il file ed andare avanti con la configurazione creando il file dove inserire username e password del nostro account Gmail da utilizzare per inviare le nostre email.

Creiamo quindi il file /etc/postfix/sasl_passwd ed inseriamo al suo interno:

[smtp.gmail.com]:587 username@gmail.com:passwordgmail

Per consentire a postfix di interpretare il file appena creato abbiamo bisogno di eseguire un’altro comando che legge i parametri dal file sasl_passwd e li converte in un formato loggibile dal demone di Postfix, il comando in questione è postmap:

postmap /etc/postfix/sasl_passwd

Questo comando crea nella cartella root di postfix, un file con il nome “sasl_passwd.db”, questo file non è leggibile quindi username e password saranno al sicuro, vi consiglio di eliminare il file sasl_passwd che contiene username e password in chiaro per validi motivi di sicurezza.

Non ci resta che riavviare il demone del nostro server di posta inviando il comando da root:

/etc/init.d/postfix restart

Per controllare che sia andato tutto liscio e non abbiamo commesso errori in fase di configurazione, possiamo consultare il log di Postfix con il comando:

tail -f /var/log/mail.log

dovremmo trovare un messaggio simile al seguente che ci informa del correetto riavvio del demone

Oct 8 00:12:27 ansible postfix/master[2645]: terminating on signal 15
Oct 8 00:12:28 ansible postfix/master[2906]: daemon started — version 2.11.3, configuration /etc/postfix

Adesso che siamo sicuri che la nostra configurazione è andata a buon fine possiamo procedere a fare qualche test. Di solito il comando mail lo ritroviamo già installato nel sistema, io suggerisco di installare il pacchetto heirloom-mailx tramite il classico comando:

apt-get install heirloom-mailx

Come al solito dopo una breve elaborazione possiamo iniziare ad utilizzare il comando, ricordo sempre che per tutte le varie opzioni utilizzabili è sempre disponibile il manuale tramite il comando mail, di seguito un riassunto dei principali:

  • -a seguito dal nome del file “Allega il file alla mail come allegato”.
  • -b seguito dall’indirizzo del destinatario “Invia la mail in copia carbone ad altri indirizzi, per inserirne più di uno separarli con la virgola.
  • -r seguito dall’indirizzo del mittente “Imposta l’indirizzo mittente della mail”
  • -s Oggetto “Imposta l’oggetto della mail”.

Quindi per testare se tutto funziona possiamo inviare il seguente comando, sostituendo ai valori di esempio, gli indirizzi validi:

echo “Testo del corpo della mail” | mailx -s “Oggetto della mail” -r mittente@mail.com destinatario@mail.com

Diamo adesso uno sguardo al log e vediamo cosa è successo, se la mail è stata inviata correttamente dobbiamo trovare un messaggio simile al seguente:

Oct 8 00:26:13 ansible postfix/pickup[2911]: A91BABFF6D: uid=0 from=<mittente@mail.com>
Oct 8 00:26:13 ansible postfix/cleanup[2968]: A91BABFF6D: message-id=<59d96295.IB7em9tIouCaLyqd%mittente@mail.com>
Oct 8 00:26:13 ansible postfix/qmgr[2912]: A91BABFF6D: from=<mittente@mail.com>, size=460, nrcpt=1 (queue active)
Oct 8 00:26:17 ansible postfix/smtp[2970]: A91BABFF6D: to=<destinatario@mail.com>, relay=smtp.gmail.com[74.125.206.109]:587, delay=3.5, delays=0.07/0.08/1.3/2, dsn=2.0.0, status=sent (250 2.0.0 OK 1507418775 b11sm11968152wrd.91 – gsmtp)
Oct 8 00:26:17 ansible postfix/qmgr[2912]: A91BABFF6D: removed

A questo punto possiamo inserire il comando di invio mail nel nostro script per segnalarne la corretta esecuzione ed inviarci il log in modo da tenere sotto controllo le operazioni, di seguito alcuni riferimenti utili all’argomento:

  1. Sito web ufficiale del pacchetto Postfix
  2. Sito web ufficiale Debian
  3. Sito web ufficiale Mailx

 

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *