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
Grazie per il preciso articolo,
mi mancava questo fondamentale comando –> sudo postmap /etc/postfix/sasl_passwd
Ovviamente.
ciao
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
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:
ciao
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
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.
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!
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.
Buonasera.
Ho seguito l’articolo è funziona. Ma come faccio ad inviare delle mail da altre macchine facendole passare dal relay?
Grazie