Progetto

Generale

Profilo

PosfixSaslLDAP » Cronologia » Versione 2

Simone Piccardi, 07-06-2013 16:16

1 1 Simone Piccardi
h1. SMTP autenticato con Postfix, SASL e LDAP
2
3
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
5
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
7
h2. Configurazione di Postfix
8
9
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
11
<pre>
12
# TLS
13
smtpd_use_tls = yes
14
smtpd_tls_auth_only = yes
15
smtpd_tls_key_file = /etc/ssl/private/dominio.it-key.pem
16
smtpd_tls_cert_file = /etc/ssl/certs/dominio.it-cert.pem
17
smtpd_tls_CAfile = /etc/ssl/certs/ca-cert.pem
18
smtpd_tls_loglevel = 1
19
smtpd_tls_received_header = yes
20
smtpd_tls_session_cache_timeout = 3600s
21
tls_random_source = dev:/dev/urandom
22
</pre>
23
24
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
26
<pre>
27
# per autenticazione sasl lato server
28
smtpd_sasl_auth_enable = yes
29
smtp_sasl_application_name = smtpd
30
smtpd_sasl_local_domain = $myhostname
31
broken_sasl_auth_clients = yes
32
</pre>
33
34
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
36
<pre>
37
smtpd_recipient_restrictions =
38
        check_sender_access hash:/etc/postfix/access,
39
        check_recipient_access hash:/etc/postfix/access,
40
        check_client_access hash:/etc/postfix/access,
41
        permit_sasl_authenticated,
42
        reject_unauth_pipelining,
43
        reject_rbl_client zen.spamhaus.org,
44
        reject_invalid_hostname,
45
        reject_non_fqdn_sender,
46
        reject_non_fqdn_recipient,
47
        reject_unknown_sender_domain,
48
        permit_mynetworks,
49
        reject_unauth_destination
50
</pre>
51
52
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
54
<pre>
55
pwcheck_method: saslauthd
56
mech_list: plain login
57
</pre>
58
59
60
h2. Configurazione di SASL (@saslauthd@) per LDAP
61
62
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
64
<pre>
65
apt-get install sasl2-bin libsasl2-modules-ldap
66
</pre>
67
68
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
70
<pre>
71
...
72
# Should saslauthd run automatically on startup? (default: no)
73
START=yes
74
...
75
# Example: MECHANISMS="pam"
76
MECHANISMS="ldap"
77
...
78
# Example for postfix users: "-c -m /var/spool/postfix/var/run/saslauthd"
79
OPTIONS="-c -m /var/spool/postfix/var/run/saslauthd"
80
</pre>
81
82
Inoltre per consentire a Postfix l'accesso al socket occorre aggiugerlo al gruppo @sasl@ con:
83
84
<pre>
85
adduser postfix sasl
86
</pre>
87
88
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
90
<pre>
91
# LDAP server
92
ldap_servers: ldap://127.0.0.1
93
ldap_search_base: ou=people,dc=dominio,dc=it
94
ldap_filter: (uid=%u)
95
</pre>
96
97
Una volta fatto questo di potrà riavviare il servizio con @service saslauthd restart@ e si potrà verificare il funzionamento con:
98
99
<pre>
100
# testsaslauthd -u user -p password -f /var/spool/postfix/var/run/saslauthd/mux
101
0: OK "Success."
102
</pre>
103 2 Simone Piccardi
104
A questo punto si potrà riavviare Postfix e verificare che la spedizione della posta funzioni correttamente con:
105
106
<pre>
107
# 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
test
109
test
110
.
111
112
</pre>