Configurare Postfix come smtp Gmail Relay

By | March 27, 2013

Può essere molto comodo, come ad esempio per chi utilizza servizi come zoneminder, rtorrent ecc, avere in casa una sorta di “Gmail Relay” per inviare posta dal proprio account Gmail. In questa guida vedremo come configurare postfix per inviare email con il nostro account di posta @gmail.com.

Installiamo innanzi tutto i pacchetti necessari:

# pacman -Sy postfix ca-certificates

una volta completata l’installazione entriamo nella directory di configurazione di postfix:

# cd /etc/postfix

e salviamo il file di configurazione di default con i comando:

# cp main.cf main.cf-old

a questo punto cancelliamo l’intero contenuto del file main.cf con il comando:

# echo "" > main.cf

e inseriamo all’interno del file main.cf le seguenti righe:

daemon_directory = /usr/lib/postfix

myorigin = dominio-vero.com
mydomain = dominio-vero.com
myhostname = dominio-vero.com

smtp_generic_maps = hash:/etc/postfix/generic
header_checks = regexp:/etc/postfix/header_checks

relayhost = [smtp.gmail.com]:587
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd_gmail
smtp_sasl_security_options = noanonymous
smtp_tls_CAfile = /etc/postfix/cacert.pem
smtp_use_tls = yes
smtp_tls_security_level = encrypt
smtp_enforce_tls = yes

disable_dns_lookups = yes

message_size_limit = 35651584

smtp_destination_rate_delay = 60
relay_destination_rate_delay = 60

mynetworks = 127.0.0.1

alias_maps = hash:/etc/aliases

Salviamo il file main.cf sostituendo ovviamente “dominio-vero.com” con il vostro nome del dominio (es. pippo.dyndns.org), se non lo si ha è possibile lasciarlo invariato.

Creiamo il file sasl_passwd_gmail con il comando:

# touch /etc/postfix/sasl_passwd_gmail

e inseriamo all’interno:

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

sostituendo ovviamente “username” e “miapassword” con le nostre credenziali gmail.

Aggiungiamo alla fine del file /etc/postfix/header_checks le seguenti righe:

/^To:.*@hostname.localnet/ REDIRECT username@gmail.com 
/^From:(.*@dominio-vero.com[>]*)/ PREPEND Reply-To:$1

sostituendo anche questa volta “username” con il nostro account gmail e “dominio-vero.com” con il nome inserito anche nel main.cf. Salviamo e aggiungiamo alla fine del file /etc/postfix/generic le seguenti righe:

root@dominio-vero.com         username@gmail.com
root@hostname.localnet        username@gmail.com
sudoer@hostname.localnet    username@gmail.com

sostituendo anche qui “username” e “dominio-vero.com“.

A questo punto lanciamo, come utente root, i comandi:

# postmap /etc/postfix/generic
# postmap /etc/postfix/sasl_passwd_gmail
# cat /etc/ssl/certs/Equifax_Secure_CA.pem >/etc/postfix/cacert.pem
# ln -s /etc/postfix/aliases.db /etc/aliases.db
# postconf -e alias_maps=hash:/etc/aliases

Avviamo postfix con il comando:

# systemct start postfix

e rendiamolo eseguibile all’avvio con il comando:

# systemctl enable postfix

A questo punto se andato tutto bene, possiamo testare inviando una mail con il comando:

$ echo "testo del messaggio" | mail -r "username@gmail.com" -s "Oggetto della mail" destinatario@email.com

per verificare il corretto invio possiamo in ogni momento visionare il log /var/log/mail.log e tenere traccia delle email inviate.

Se si vuole inviare email da remoto, ad esempio da un pc delle stessa rete, bisogna per prima cosa inserire nel file main.cf in mynetworks l’ip del cilent, riavviare postfix e nel client lanciare il comando:

$ echo "testo del messaggio" | mail -r "username@gmail.com" -s "Oggetto della mail" -S smtp=IPPOSTFIX destinatario@email.com

sostituendo “IPPOSTFIX” con l’ip della macchina dove abbiamo configurato postfix.

Se vogliamo abilitare tutta la rete, è possibile inserire nella direttiva mynetworks tutta la subnet, ad esempio 192.168.0.0/24.