Postfix e autenticazione su smtp remoto

Edit-clear-history.png Attenzione. Questa guida è da considerarsi abbandonata, per via del tempo trascorso dall'ultima verifica.

Potrà essere resa obsoleta, previa segnalazione sul forum, se nessuno si propone per l'adozione.


Debian-swirl.png Versioni Compatibili

Debian 6 "squeeze"
Debian 7 "wheezy"
Debian 8 "jessie"

Introduzione

Questa guida si propone di risolvere il problema di molti utenti che cercano di configurare un server di posta incorrendo nella necessità di inserire, per l'utilizzo del server del proprio provider come relay host, l'username e la password.

Per risolvere questo useremo sasl.

Installazione

Prima di tutto è necessario installare i seguenti pacchetti:

  • libsasl2
  • libsasl2-modules
  • postfix-tls
# apt-get install libsasl2-2 libsasl2-modules mailutils ca-certificates

Configurazione

La configurazione è molto semplice e consiste nel modificare il file /etc/postfix/main.cf aggiungendo le seguenti righe:

# Relay su mio ISP
relayhost = [mail.provider.it]
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_auth_enable = yes
smtp_sasl_security_options = # se non inserite opzioni commentare all'inizio

# Relay su GMail - In alternativa al precedente
#relayhost = [smtp.gmail.com]:587
#smtp_sasl_auth_enable = yes
#smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
#smtp_sasl_security_options = noanonymous
#smtp_tls_CAfile = /etc/postfix/cacert.pem
#smtp_use_tls = yes

Le opzioni disponibili sono :

noanonymous	 Don't use mechanisms that permit anonymous authentication. 
noplaintext	 Don't use mechanisms that transmit unencrypted username and password information. 
nodictionary	 Don't use mechanisms that are vulnerable to dictionary attacks. 
forward_secrecy	 Require forward secrecy between sessions (breaking one session does not break earlier sessions). 
mutual_auth	 Use only mechanisms that authenticate both the client and the server to each other.

Creare il file /etc/postfix/sasl_passwd con un contenuto simile a questo:

[mail.provider.it]     username:password

# In caso di Gmail
[smtp.gmail.com]:587    USERNAME@gmail.com:PASSWORD

dove mail.provider.it è lo stesso indicato prima e username e password vanno sostituite con i propri dati di accesso.

Impostare i giusti permessi

# chown root:root /etc/postfix/sasl_passwd && chmod 600 /etc/postfix/sasl_passwd

eseguire poi:

# postmap hash:/etc/postfix/sasl_passwd

Decommentare la riga:

-o smtpd_sasl_auth_enable=yes

nel file /etc/postfix/master.cf .

Validiamo il certificato:

# cat /etc/ssl/certs/Thawte_Premium_Server_CA.pem | tee -a /etc/postfix/cacert.pem

L'unica cosa che resta da fare è riavviare Postfix:

# /etc/init.d/postfix reload

e controllare che funzioni verificando il log /var/log/mail.warn.

Relay su Server SMTP multipli

In alcuni casi può esserci la necessità di smistare le mail in uscita su server SMTP di relay diversi. Ad esempio:

  • il server predefinito di relay deve essere smtppredefinito.dominio.it
  • l'utente pippo@secondodominio.it deve spedire attraverso smtp.secondodominio.it
  • tutti gli utenti del dominio terzodominio.it devono spedire attraverso smtp.terzodominio.it

Postfix permette anche questo.
La configurazione è molto semplice e consiste nel modificare il file /etc/postfix/main.cf aggiungendo le seguenti righe:

# Imposto autenticazione su SMTP di relay
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_auth_enable = yes
smtp_sasl_security_options = # se non inserite opzioni commentare all'inizio

# Relay su ISP predefinito
relayhost = [smtppredefinito.dominio.it]:submission

# Server SMTP di relay alternativi
smtp_sender_dependent_authentication = yes
sender_dependent_relayhost_maps = hash:/etc/postfix/sender_dependent_relayhost_maps

Quindi creiamo il file di transport con i nostri SMTPdi relay alternativi:

# nano /etc/postfix/sender_dependent_relayhost_maps

e diamogli il contenuto seguente:

# Utente Pippo
pippo@secondodominio.it   smtp.secondodominio.it

# Dominio Terzodominio
@terzodominio.it   smtp.terzodominio.it

Infine aggiorniamo il file contenente le credenziali di autenticazione verso i server di relay:

# nano /etc/postfix/sasl_passwd
# Relay per utente Pippo
pippo@secondodominio.it              userpippo:password_pippo

# Il relay di default
smtppredefinito.dominio.it     username:password

# Relay per il terzo dominio
smtp.terzodominio.it   user_terzodominio:password_terzodominio

Ricreiamo il database delle password:

# postmap hash:/etc/postfix/sasl_passwd

Ricreiamo il database dei server di relay:

# postmap hash:/etc/postfix/sender_dependent_relayhost_maps

e riavviamo Postfix:

# /etc/init.d/postfix restart





Guida scritta da: MaXeR   Debianized 60%
Estesa da:
mm-barabba 06-04-2013
ferdybassi 31-03-2014
Verificata da:
mm-barabba 06-04-2013
ferdybassi 31-03-2014

Verificare ed estendere la guida | Cos'è una guida Debianized