PosfixSaslLDAP » History » Version 1
Simone Piccardi, 06/07/2013 04:10 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> |