Qmail Ldap

Qmail-Ldap dot info

La risorsa italiana dedicata al server di posta Qmail Ldap
Manuale di installazione, configurazione, funzionamento e amministrazione del mailserver Unix sicuro utilizzato da migliaia di utenti, postmaster e amministratori di sistema.
Qmail ldap
 
Openldap
Configurazione Ldap
 
Installazione Qmail
Configurazione
Servizi
  Qmail-Send
  Smtpd
Account
Maildrop
Autenticazione SMTP
Avvio di Qmail
 
Qmail Suite
 
POP3
IMAP
  Imap Courier
  Imap Dovecot
 
Antivirus
Antispam
Simscan scanner
 
Gestione coda
 
Logging
  QmailMrtg7
  Isoqlog
 
Riepilogo comandi
Risorse

Account LDAP

Oltre alle impostazioni configurate nei vari file /var/qmail/control/, è necessario impostare gli account di Qmail Ldap seguendo alcune regole e ricorrendo ad alcune scelte di configurazione.
La regola è che se un attributo utente ldap è specificato, questo annulla l'impostazione di default indicata nei file di configurazione.
Così, assegnare la quota a un utente in un attributo ldap, sovrascrive l'impostazione generale di /var/qmail/control/defaultquotasize.

Ogni casella di posta, naturalmente, richiede un DN (Distinguished Name) univoco.

Alcuni attributi sono obbligatori, altri facoltativi: permettono di configurare con estrema accuratezza ogni account, singolarmente.

Attributi obbligatori per ogni account:

dn: il distinguished name. Es.: uid=nome@dominio.it,ou=users,dc=mioserver,dc=net
uid: per comodità contiene lo stesso valore di mail
mail: la casella di posta
mailHost: l'host del server di posta (es.: mail.mioserver.net)
cn: il "common name", cioè nome e cognome

userPassword: la password dell'utente.
OpenLdap supporta gli algoritmi di crittazione {SHA}, {SSHA}, {MD5}, {SMD5}, {MD4}, {RMD160} e {CRYPT}.
Supporta anche la password in chiaro qualora sia stato specificato in fase di configurazione nel file Makefile.


mailMessageStore: la path assoluta della maildir dell'utente
oppure
homeDirectory: alternativo a mailmessagestore, il suo utilizzo dipende dalle vostre esigenze particolari. Si consiglia di utilizzare l'attributo "homeDirectory" qualora l'account appartenga a un utente di sistema o se questo necessità di un account Posix. In tutti gli altri casi, mailmessagestore è più indicato.

Attributi obbligatori relativi alla struttura LDAP:

objectClass: top
objectClass: person
objectClass: inetOrgPerson
objectClass: qmailUser


Attributi facoltativi:

qmailUID: valore numerico Uid del servizio. Bypassa la direttiva in /var/qmail/control/ldapuid
qmailGID: valore numerico GID (gruppo) del servizio. Bypassa la direttiva in /var/qmail/control/ldapgid

accountstatus: "active" (default), "nopop" (solo webmail) o "disabled". Se non specificato, l'account si considera attivo.

mailQuotaSize: quota max (bytes). 0 per disabilitare la quota. Bypassa la direttiva /var/qmail/control/defaultquotasize

mailQuotaFile: numero massimo di email accumulate per account. 0 per disabilitare il filequota. Bypassa la direttiva specificata in /var/qmail/control/defaultquotacount

mailSizeMax: dimensioni massima consentita per una email in ricezione.

deliveryProgramPath: path del programma utilizzato per il delivery locale

deliveryMode: tipologia di delivery legata all'account. Multilinea.
Valori possibili:
- forwardonly (esegue solo il forward)
- noforward (non esegue il forward)
- nolocal (non consegna la copia locale)
- noprogram (ignora le impostazioni deliveryProgramPath)

qmailDotMode: bypassa le informazioni contenute in /var/control/ldapdefaultdotmode e indica con quali modalità il server interpreta il file ".qmail", il file che gestisce il delivery locale per ogni utente, personalizzando le sue impostazioni.
Valori possibili:
- both (il server consulta l'attributo LDAP e il file .qmail)
- ldaponly (il server consulta solamente l'attributo LDAP)
- ldapwithprog (il server consulta l'attributo LDAP e esegue il programma indicato in deliveryProgramPath)
- dotonly (il server consulta solamente il file .qmail ignorando LDAP)

mailForwardingAddress: ogni attributo contiene un indirizzo di forward. Multilinea.
mailAlternateAlias: ogni attributo indica un alias dell'account.

mailReplyText: testo da inviare automaticamente al mittente una volta ricevuta una mail. Tale attributo fa le veci dell'autoresponder. Se è vuoto, l'autoresponder per l'account è disattivato.

qmailAccountPurge: data al sopraggiungere della quale l'account verrà eliminato. La data è espressa in secondi seguendo il formato epoch, cioè calcolando il numero di secondi intercorsi tra il primo gennaio 1970 00:00:00 la data prescelta


Impostare gli account



Ora possiamo immettere uno o più account nel nostro server di posta.
Vi sono diversi modi per gestire le liste degli utenti. Il primo approccio è operare manualmente (a manazza, come si dice) con i file LDIF.

Per ottenere una password criptata nel formato indicato da OpenLdap si puo' ricorrere al comando slappasswd.
Facciamo un esempio.
Criptiamo la password "segreto" con l'algoritmo MD5.
slappasswd -h{MD5} -s segreto

Otterremo la stringa criptata nello standard output:

{MD5}Ul1dTwz7lNBFxIlxqhqpdA==

Ecco un esempio di file LDIF che puo' essere utilizzato per immettere un account virtuale nel nostro server.
Utilizzeremo la password segreto appena criptata:
Editiamo il file /usr/local/src/adduser.ldif
dn: uid=postmaster@primo-dominio.it,dc=mioserver,dc=net
uid=postmaster@primo-dominio.it
objectClass: top
objectClass: person
objectClass: inetOrgPerson
objectClass: qmailUser
cn: Mattia SysAdmin
sn: Sysadmin
mailHost: mail.mioserver.net
mail: postmaster@primo-dominio.it
mailAlternateAddress: sysadmin@primo-dominio.it
mailQuotaSize: 10000000
mailQuotaCount: 20000
userPassword: {MD5}Ul1dTwz7lNBFxIlxqhqpdA==
accountStatus: active
mailMessageStore: /home/vmail/primo-dominio.it/mattia

e inseriamo le entry nel server Ldap:

ldapadd -D "cn=Manager,dc=mioserver,dc=net" -x -W -f /usr/local/src/adduser.ldif



cd /var/qmail/control/
echo "secondo-dominio.com" >> rcpthosts
echo "secondo-dominio.com" >> locals
make


Aggiungere un altro dominio
Inseriamo un altro dominio, ipotizzando sia denominato secondo-dominio.com.
Dopo aver opportunamente modificato il DNS, configuriamo locals e rcpthosts e ricostruiamo i loro corrispettivi .cdb:

cd /var/qmail/control/
echo "secondo-dominio.com" >> rcpthosts
echo "secondo-dominio.com" >> locals
make

Inseriamo l'account postmaster (la password utilizzata è quella dell'esempio precedente, "segreto").
Editiamo il file
/usr/local/src/newpostmaster.ldif
dn: uid=postmaster@secondo-dominio.com,dc=mioserver,dc=net
uid=postmaster@secondo-dominio.com
objectClass: top
objectClass: person
objectClass: inetOrgPerson
objectClass: qmailUser
cn: Postmaster
sn: Secondo-dominio.com
mailHost: mail.mioserver.net
mail: postmaster@secondo-dominio.com
mailAlternateAddress: admin@secondo-dominio.com
mailAlternateAddress: abuse@secondo-dominio.com
deliveryProgramPath: /usr/local/bin/maildrop
deliveryMode: ldapwithprog
qmailUID: 3000
qmailGID: 3000
userPassword: {MD5}Ul1dTwz7lNBFxIlxqhqpdA==
accountStatus: active
mailMessageStore: /home/vmail/secondo-dominio.com/postmaster

In questo esempio abbiamo inserito gli attributi deliveryProgramPath e deliveryMode configurando l'account per l'utilizzo di maildrop.
Per inserire l'account nel sistema:

ldapadd -D "cn=Manager,dc=mioserver,dc=net" -x -W -f /usr/local/src/newpostmaster.ldif


QLAP
Naturalmente questo approccio manuale non puo' essere impiegato in realtà medie o medio grandi. Se si devono gestire decine di account, è necessario dotarsi di un software apposito che amministri gli account, pereferibilmente per ogni dominio, dando la possibilità ai postmaster di ogni dominio di gestire i suoi utenti.
La soluzione è costituita da Qlap (Qmail Ldap Administration Panel), scritto in PHP5.
Contiene alcuni eseguibili CLI per la gestione dei domini, utilizzabili solo dall'utente root, e un'interfaccia web (Qlap postmaster) con la quale i postmaster locali possono amministrare gli account di posta per il loro dominio.