Project

General

Profile

PosfixSaslLDAP » History » Version 2

Simone Piccardi, 06/07/2013 04:16 PM

1 1 Simone Piccardi
h1. SMTP autenticato con Postfix, SASL e LDAP
2 1 Simone Piccardi
3 1 Simone Piccardi
La configurazione di un servizio SMTP autenticato può risultare utile per consentire la spedizione di posta dall'esterno della propria rete. Postfix può gestire in vari modi l'autenticazione SMTP, il più semplice dei quali è appoggiarsi a Dovecot (che già supporta nativamente moltissimi schemi di autenticazione) in modo da effettuare la configurazione una volta sola. Qualora però si abbia un servizio che deve solo inoltrare la posta e non riceverla, l'installazione di Dovecot può essere eccessiva, inoltre si possono avere esigenze diverse, ad esempio una gestione multidominio fatta su database, (come quella illustrata in [[PostfixAdminInstall]])  a cui si aggiungono altri utenti mantenuti su LDAP. 
4 1 Simone Piccardi
5 1 Simone Piccardi
Vedremo in questo caso come si può utilizzare l'autenticazione classica con SASL per fornire un accesso SMTP autenticato a Postfix, configurando @saslauthd@ per effettuare l'autenticazione con i dati di un server LDAP. 
6 1 Simone Piccardi
7 1 Simone Piccardi
h2. Configurazione di Postfix
8 1 Simone Piccardi
9 1 Simone Piccardi
Postfix supporta l'autenticazione SASL in maniera nativa, per abilitarla occorrono comunque alcuni passi, il primo è quello di aggiungere a @main.cf@ le seguenti direttive di configurazione:
10 1 Simone Piccardi
11 1 Simone Piccardi
<pre>
12 1 Simone Piccardi
# TLS
13 1 Simone Piccardi
smtpd_use_tls = yes
14 1 Simone Piccardi
smtpd_tls_auth_only = yes
15 1 Simone Piccardi
smtpd_tls_key_file = /etc/ssl/private/dominio.it-key.pem
16 1 Simone Piccardi
smtpd_tls_cert_file = /etc/ssl/certs/dominio.it-cert.pem
17 1 Simone Piccardi
smtpd_tls_CAfile = /etc/ssl/certs/ca-cert.pem
18 1 Simone Piccardi
smtpd_tls_loglevel = 1
19 1 Simone Piccardi
smtpd_tls_received_header = yes
20 1 Simone Piccardi
smtpd_tls_session_cache_timeout = 3600s
21 1 Simone Piccardi
tls_random_source = dev:/dev/urandom
22 1 Simone Piccardi
</pre>
23 1 Simone Piccardi
24 1 Simone Piccardi
per forzare l'uso di TLS per l'accesso in autenticazione, impostando la cifratura delle connessione al server che consenta di evitare la trasmissione in chiaro delle credenziali; per abilitare l'autenticazione con SASL occorre invece aggiungere le ulteriori direttive di configurazione:
25 1 Simone Piccardi
26 1 Simone Piccardi
<pre>
27 1 Simone Piccardi
# per autenticazione sasl lato server
28 1 Simone Piccardi
smtpd_sasl_auth_enable = yes
29 1 Simone Piccardi
smtp_sasl_application_name = smtpd
30 1 Simone Piccardi
smtpd_sasl_local_domain = $myhostname
31 1 Simone Piccardi
broken_sasl_auth_clients = yes
32 1 Simone Piccardi
</pre>
33 1 Simone Piccardi
34 1 Simone Piccardi
per abilitare l'uso di SASL; a queste si aggiunge la necessità di ipostare correttamente la direttiva @smtpd_recipient_restrictions@ aggiungendovi la condizione @permit_sasl_authenticated@, una possibile configurazione potrebbe essere la seguente:
35 1 Simone Piccardi
36 1 Simone Piccardi
<pre>
37 1 Simone Piccardi
smtpd_recipient_restrictions =
38 1 Simone Piccardi
        check_sender_access hash:/etc/postfix/access,
39 1 Simone Piccardi
        check_recipient_access hash:/etc/postfix/access,
40 1 Simone Piccardi
        check_client_access hash:/etc/postfix/access,
41 1 Simone Piccardi
        permit_sasl_authenticated,
42 1 Simone Piccardi
        reject_unauth_pipelining,
43 1 Simone Piccardi
        reject_rbl_client zen.spamhaus.org,
44 1 Simone Piccardi
        reject_invalid_hostname,
45 1 Simone Piccardi
        reject_non_fqdn_sender,
46 1 Simone Piccardi
        reject_non_fqdn_recipient,
47 1 Simone Piccardi
        reject_unknown_sender_domain,
48 1 Simone Piccardi
        permit_mynetworks,
49 1 Simone Piccardi
        reject_unauth_destination
50 1 Simone Piccardi
</pre>
51 1 Simone Piccardi
52 1 Simone Piccardi
Con queste configurazioni Postfix si appoggerà a @libsasl2-2@ per l'autenticazione, le modalità con questa questa viene realizzata dovranno essere configurate nel file @/etc/postfix/sasl/smtpd.conf@, in questo file va indicato quale metodo deve essere utilizzato per eseguire il controllo delle password e quale "_meccanismo_" di autenticazione deve essere utilizzato con:
53 1 Simone Piccardi
54 1 Simone Piccardi
<pre>
55 1 Simone Piccardi
pwcheck_method: saslauthd
56 1 Simone Piccardi
mech_list: plain login
57 1 Simone Piccardi
</pre>
58 1 Simone Piccardi
59 1 Simone Piccardi
60 1 Simone Piccardi
h2. Configurazione di SASL (@saslauthd@) per LDAP
61 1 Simone Piccardi
62 1 Simone Piccardi
La modalità più semplice per utilizzare SASL per la verifica delle password con Postfix è utilizzare il demoane @saslauthd@, come indicato nell'estratto di configurazione precedente, a questo poi va aggiunto il modulo per gestire l'autenticazione su LDAP, per questo è necessario installare i pacchetti:
63 1 Simone Piccardi
64 1 Simone Piccardi
<pre>
65 1 Simone Piccardi
apt-get install sasl2-bin libsasl2-modules-ldap
66 1 Simone Piccardi
</pre>
67 1 Simone Piccardi
68 1 Simone Piccardi
L'installazione di  @saslauthd@ non attiva il servizio, questo deve essere abilitato esplicitamente in @/etc/default/saslauthd@, inoltre occorre specificare nello stesso file l'uso di LDAP ed impostare la creazione del socket per la comunicazione con il servizio nel chroot di Postfix, questo significa modificare le seguenti righe del file:
69 1 Simone Piccardi
70 1 Simone Piccardi
<pre>
71 1 Simone Piccardi
...
72 1 Simone Piccardi
# Should saslauthd run automatically on startup? (default: no)
73 1 Simone Piccardi
START=yes
74 1 Simone Piccardi
...
75 1 Simone Piccardi
# Example: MECHANISMS="pam"
76 1 Simone Piccardi
MECHANISMS="ldap"
77 1 Simone Piccardi
...
78 1 Simone Piccardi
# Example for postfix users: "-c -m /var/spool/postfix/var/run/saslauthd"
79 1 Simone Piccardi
OPTIONS="-c -m /var/spool/postfix/var/run/saslauthd"
80 1 Simone Piccardi
</pre>
81 1 Simone Piccardi
82 1 Simone Piccardi
Inoltre per consentire a Postfix l'accesso al socket occorre aggiugerlo al gruppo @sasl@ con:
83 1 Simone Piccardi
84 1 Simone Piccardi
<pre>
85 1 Simone Piccardi
adduser postfix sasl
86 1 Simone Piccardi
</pre>
87 1 Simone Piccardi
88 1 Simone Piccardi
Infine occorre creare il file @/etc/saslauthd.conf@ con la configurazione per poter accedere ai dati di LDAP, con qualcosa del tipo (si assume che il server LDAP sia in locale, se è remoto si usi ldaps://indirizzo e si configuri correttamente @/etc/ldap/ldap.conf@ per consentire l'acesso in maniera corretta (per la gestione dei certificati): 
89 1 Simone Piccardi
90 1 Simone Piccardi
<pre>
91 1 Simone Piccardi
# LDAP server
92 1 Simone Piccardi
ldap_servers: ldap://127.0.0.1
93 1 Simone Piccardi
ldap_search_base: ou=people,dc=dominio,dc=it
94 1 Simone Piccardi
ldap_filter: (uid=%u)
95 1 Simone Piccardi
</pre>
96 1 Simone Piccardi
97 1 Simone Piccardi
Una volta fatto questo di potrà riavviare il servizio con @service saslauthd restart@ e si potrà verificare il funzionamento con:
98 1 Simone Piccardi
99 1 Simone Piccardi
<pre>
100 1 Simone Piccardi
# testsaslauthd -u user -p password -f /var/spool/postfix/var/run/saslauthd/mux
101 1 Simone Piccardi
0: OK "Success."
102 1 Simone Piccardi
</pre>
103 2 Simone Piccardi
104 2 Simone Piccardi
A questo punto si potrà riavviare Postfix e verificare che la spedizione della posta funzioni correttamente con:
105 2 Simone Piccardi
106 2 Simone Piccardi
<pre>
107 2 Simone Piccardi
# env ssl-verify=ignore smtp-use-starttls=true smtp=mail.dominio.it smtp-auth-user=user smtp-auth-password=prova smtp-auth=password heirloom-mailx -v -s prova -r mittente@dominio.it destinatario@dominio.it
108 2 Simone Piccardi
test
109 2 Simone Piccardi
test
110 2 Simone Piccardi
.
111 2 Simone Piccardi
112 2 Simone Piccardi
</pre>