SMTP autenticato con Postfix, SASL e LDAP¶
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.
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.
Configurazione di Postfix¶
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:
# TLS smtpd_use_tls = yes smtpd_tls_auth_only = yes smtpd_tls_key_file = /etc/ssl/private/dominio.it-key.pem smtpd_tls_cert_file = /etc/ssl/certs/dominio.it-cert.pem smtpd_tls_CAfile = /etc/ssl/certs/ca-cert.pem smtpd_tls_loglevel = 1 smtpd_tls_received_header = yes smtpd_tls_session_cache_timeout = 3600s tls_random_source = dev:/dev/urandom
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:
# per autenticazione sasl lato server smtpd_sasl_auth_enable = yes smtp_sasl_application_name = smtpd smtpd_sasl_local_domain = $myhostname broken_sasl_auth_clients = yes
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:
smtpd_recipient_restrictions = check_sender_access hash:/etc/postfix/access, check_recipient_access hash:/etc/postfix/access, check_client_access hash:/etc/postfix/access, permit_sasl_authenticated, reject_unauth_pipelining, reject_rbl_client zen.spamhaus.org, reject_invalid_hostname, reject_non_fqdn_sender, reject_non_fqdn_recipient, reject_unknown_sender_domain, permit_mynetworks, reject_unauth_destination
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:
pwcheck_method: saslauthd mech_list: plain login
Configurazione di SASL (saslauthd
) per LDAP¶
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:
apt-get install sasl2-bin libsasl2-modules-ldap
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:
... # Should saslauthd run automatically on startup? (default: no) START=yes ... # Example: MECHANISMS="pam" MECHANISMS="ldap" ... # Example for postfix users: "-c -m /var/spool/postfix/var/run/saslauthd" OPTIONS="-c -m /var/spool/postfix/var/run/saslauthd"
Inoltre per consentire a Postfix l'accesso al socket occorre aggiugerlo al gruppo sasl
con:
adduser postfix sasl
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):
# LDAP server ldap_servers: ldap://127.0.0.1 ldap_search_base: ou=people,dc=dominio,dc=it ldap_filter: (uid=%u)
Una volta fatto questo di potrà riavviare il servizio con service saslauthd restart
e si potrà verificare il funzionamento con:
# testsaslauthd -u user -p password -f /var/spool/postfix/var/run/saslauthd/mux 0: OK "Success."
A questo punto si potrà riavviare Postfix e verificare che la spedizione della posta funzioni correttamente con:
# env ssl-verify=ignore smtp-use-starttls=true smtp=mail.dominio.it smtp-auth-user=user smtp-auth-password=password smtp-auth=login \ heirloom-mailx -v -s prova -r mittente@dominio.it destinatario@dominio.it test test .
Updated by Simone Piccardi over 11 years ago · 3 revisions