Postfix e autenticazione su smtp remoto

Versione del 10 set 2015 alle 20:08 di Ferdybassi (discussione | contributi) (→‎Relay su Server SMTP multipli)
(diff) ← Versione meno recente | Versione attuale (diff) | Versione più recente → (diff)
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:

# Imposto TLS
smtpd_tls_cert_file = /etc/ssl/certs/mailserver.pem
smtpd_tls_key_file = /etc/ssl/private/mailserver.pem
smtpd_use_tls = yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtpd_tls_security_level = may
smtpd_tls_auth_only = no
smtp_use_tls = yes

# 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_tls_policy_maps = hash:/etc/postfix/tls_policy

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

Nel caso stessimo usando come server di relay Gmail creiamo il file:

# nano /etc/postfix/tls_policy

di contenuto:

[smtp.gmail.com]:587 encrypt protocols=TLSv1 ciphers=high

Eseguiamo:

# postmap /etc/postfix/tls_policy

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 TLS
smtpd_tls_cert_file = /etc/ssl/certs/mailserver.pem
smtpd_tls_key_file = /etc/ssl/private/mailserver.pem
smtpd_use_tls = yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtpd_tls_security_level = may
smtpd_tls_auth_only = no
smtp_use_tls = yes

# 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 SMTP di relay alternativi:

# nano /etc/postfix/sender_dependent_relayhost_maps

e diamogli il contenuto seguente, in base a come vogliamo smistare il traffico sui vari SMTP di relay:

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

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

# Dominio quartodominio che usa Gmail
@quartodominio.it [smtp.gmail.com]:587

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

# Relay per il quarto dominio su Gmail
[smtp.gmail.com]:587  username@gmail.com:password_gmail

Nel caso stessimo usando come server di relay Gmail creiamo il file:

# nano /etc/postfix/tls_policy

di contenuto:

[smtp.gmail.com]:587 encrypt protocols=TLSv1 ciphers=high

Eseguiamo:

# postmap /etc/postfix/tls_policy

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