Postfix relay su Gmail

Configurare server SMTP Postfix per inoltro (relay) posta tramite SMTP Gmail

Ho già scritto in questo blog di come configurare postfix per inoltrare mail verso l'SMTP server del provider al fine di inviare mail da linea di comando

Però a volte non è possibile perchè il provider, pur essendo connesso alla sua rete, non lo ammette (ad esempio Vodafone, che per esperienza personale sconsiglio vivamente!!!).

In questi casi si può ottenere il medesimo risultato utilizzando un account Gmail o un altro server verso cui ci si può autenticare.

Per configurare un server SMTP Postfix su Ubuntu che inoltri la posta in uscita (relay) verso l'SMTP server di Gmail è sufficiente seguire le seguenti istruzioni.

Installare Postfix con il seguente comando:

sudo apt-get install postfix -y

durante l'installazione vengono richieste le informazioni per la configurazione del servizio: rispondere Nessuna configurazione perchè configuriamo manualmente dopo.

A questo punto iniziamo la configurazione copiando l'esempio standard di Debian Linux:

sudo cp /usr/share/postfix/main.cf.debian /etc/postfix/main.cf

quindi entriamo in editazione del file di configurazione /etc/postfix/main.cf ed aggiungiamo le seguenti righe:

# TLS parameters
smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
smtpd_use_tls=no
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache

# in myhostname indicate il nome del vostro server. Meglio se gli date un FQDN tipo mioserver.home.local
myhostname = mioserver.home.local

alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases

myorigin = /etc/mailname
mydestination =
relayhost = [smtp.gmail.com]:587
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = loopback-only
default_transport = smtp
relay_transport = smtp
inet_protocols = all

# SASL Settings
smtp_use_tls=yes
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous
smtp_sasl_tls_security_options = noanonymous
smtp_tls_CAfile = /etc/postfix/cacert.pem

In main.cf è importante specificare il parametro myhostname con il nome che si vuole assegnare al proprio server SMTP in locale. Esempio: mioserver.home.local

Se si vuole fare il relay verso un mail server esterno che non è quello di Google, bisogna specificarlo nel parametro relayhost con la relativa porta in ascolto SMTP:

relayhost = [mioserver.miodominio.com]:587

Creare il file /etc/mailname (se non esiste) e inserire una riga con il nome del vostro mail server. Indicare il nome che avete inserito nel parametro myhostname del file main.cf:

sudo sh -c "echo paonote.opensourceict.com > /etc/mailname"

A questo punto bisogna creare il file /etc/postfix/sasl_passwd con i riferimenti per connettersi al servizio STMP di Google:

[smtp.gmail.com]:587 gmail_username@gmail.com:gmail_password

ovviamente indicate il vostro indirizzo e-mail e password di Gmail.

anche in questo caso, se il relay è verso un altro mail server esterno indicare i riferimenti ad esso riferiti:

[mioserver.miodominio.com]:587 miamail@miodominio.com:miamail_password

Quindi mettiamo in sicurezza il file e generiamo il file .db con i seguenti comandi:

sudo chmod 400 /etc/postfix/sasl_passwd
sudo postmap /etc/postfix/sasl_passwd

Infine creiamo il certificato e riavviamo Postfix con i seguenti comandi:

sudo cat /etc/ssl/certs/thawte_Primary_Root_CA.pem | sudo tee -a /etc/postfix/cacert.pem
sudo /etc/init.d/postfix restart

A questo punto dovrebbe funzionare tutto.

Installare il pacchetto heirloom-mailx

sudo apt-get install heirloom-mailx

ed infine verificare il funzionamento inviando una mail da riga di comando. Esempio:

echo "testo della mail" | mail -s "Soggetto Mail" email-destinatario
(Letto 17.004 volte di cui 1 negli ultimi 30gg)
twitterlinkedinmailby feather

11 thoughts on “Configurare server SMTP Postfix per inoltro (relay) posta tramite SMTP Gmail

  1. Ciao, quando digito il comando
    sudo cat /etc/ssl/certs/Thawte_Premium_Server_CA.pem | sudo tee -a /etc/postfix/cacert.pem
    mi risponde “file o directory non esistente”
    In effetti il file in quella directory non c’è… devo crearne uno vuoto con quel nome e poi ridare il comando?
    Grazie mille

    1. ciao Luca, il problema è che quel certificato è stato rimosso con gli aggiornamenti più recenti di Ubuntu e Debian perchè non adatto alla nuova versione di openssl.

      Ma non c’è problema puoi usare un’altro certificato, ad esempio:

      sudo cat /etc/ssl/certs/thawte_Primary_Root_CA.pem | sudo tee -a /etc/postfix/cacert.pem

      ciao

  2. Buonasera, dovrei realizzare un server SMTP per inoltrare la posta generata dai miei clienti che utilizzano programmi tipo outlook. In pratica, dovrei realizzare il server da far inserire loro come server di posta in uscita.

    Come posso fare? Ho cercato su internet ma non ho trovato nulla di specifico.

    Grazie anticipatamente

    1. Ciao Bruno,

      se vuoi fare un mail server linux e non hai competenze linux approfondite, ti consiglio di installarti Nethserver che è una distro Linux server web managed. Una volta installato, dalla sua interfaccia di gestione web, riesci ad installare e configurare un mail server in pochissimo tempo.

  3. Buona sera, ho seguito passo passo le istruzioni dell’articolo tuttavia quando faccio la prova di invio (da me stesso a me stesso) effettivamente sembrerebbe che funzioni dato che ricompare il prompt in attesa di ulteriori comandi, ma sul mio indirizzo gmail non arriva nulla. Inoltre è successa una cosa strana: mi è arrivata una mail da gmail in cui mi si diceva che un app (probabilmente l’app di ubuntu che utilizzo su windows 10) ha cercato di forzare l’account ma gmail ha fermato l’accesso. L’indirizzo IP che mi è stato fornito dalla mail risultava quello del mio router segno del fatto che effettivamente qualcosa è successo..
    c’è per caso qualcosa di altro da aggiungere nel file di configurazione ?
    Ps: ho vodafone

    Mi scusi le troppe questioni. La ringrazio in anticipo!

    1. Devi consentire l’accesso di terze parti al tuo account Gmail. La connessione verso l’smtp di Google proveniente dalla shell di Linux viene visto come un client sconosciuto che cerca di connettersi.

  4. Buonasera.
    Ho seguito l’articolo è funziona. Ma come faccio ad inviare delle mail da altre macchine facendole passare dal relay?
    Grazie

Lascia un commento

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