|
Questo articolo descrive come implementare un risponditore automatico con exim4 e ldap. Questo servizio viene normalmente usato per rispondere alle email in entrata e comunicare automaticamente un'assenza prolungata (fuori sede o vacation).
Per dare all'utente un'interfaccia web che lo renda autonomo nell'impostazione di questi parametri è possibile usare un plugin di squirrelmail: Vacation plugin for QMAIL with LDAP authentication (vedi articolo che descrive come installare il plugin vacation di squirrelmail )
LDAP Innanzitutto devi verificare di avere incluso lo schema ISPEnv2 nel file di configurazione di ldap /etc/ldap/slapd.conf. Se non c'è inseriscilo:
include /etc/ldap/schema/ISPEnv2.schema
Poi devi creare le voci necessarie nell'albero ldap, per comodità ti consiglio di usare phpldapadmin. Spostati sull'utente al quale desideri attivare il risponditore automatico - inserisci l'objectClass Vacation - verrà automaticamente aggiunto l'attributo vacationActive, servirà per abilitare/disabilitare il servizio - inserisci TRUE o FALSE (in maiuscolo!) come valore obbligatorio di VacationActive - aggiungi l'attributo vacationInfo, conterrà il testo della email da inviare automaticamente
E' necessario dare all'utente i permessi per modificare quei campi. Apri il file /etc/ldap/slapd.conf e aggiungi:
access to attrs=vacationActive,vacationInfo by dn.regex="cn=admin,o=dominio,c=it" write by self write by * read
Riavvia il servizio ldap
EXIM4 Passiamo alla configurazione di exim. Di seguito trovi due query di esempio da inserire nel file di configurazione /etc/exim4/exim4.conf.template. Puoi inserirle all'inizio del file.
Query per leggere il testo scritto nel campo vacationInfo dell'albero ldap LDAP_Q_VACATION=ldap:///ou=${quote_ldap:$domain},ou=Domini,o=dominio,c=it?vacationInfo?one?(mail=${quote_ldap:$local_part}@${quote_ldap:$domain}) Query per controllare se vacationActive è abilitato o meno LDAP_Q_ENABLEVACATION=ldap:///ou=${quote_ldap:$domain},ou=Domini,o=dominio,c=it?vacationActive?one?(mail=${quote_ldap:$local_part}@${quote_ldap:$domain})
Spostati nella sezione "router" e inserisci questo codice. Ricorda che i router vengono eseguiti in sequenza, quindi posizionati nel punto adeguato della tua configurazione.
vacation_msg: debug_print = "R: vacation_msg for $local_part@$domain" driver = accept condition = ${if and { {eq {${lookup ldap {LDAP_Q_ENABLEVACATION}}}{TRUE}} { ! eq {$h_Auto-Submitted:} {auto-replied}}}{true}{false}} domains = +local_domains transport = vacation_autoreply unseen
Infine questa è la parte relativa alla configurazione della sezione "transport", in questo caso non è importante l'ordine con il quale vengono inseriti.
vacation_autoreply: #messaggio di debug visualizzato nei log debug_print = "T: vacation_autoreply for $local_part@$domain" driver = autoreply from = ${local_part}\@${domain} #file scritto nella cartella della posta dell'utente nel quale vengono registrate le mail inviate. Usato per evitare che vengano spedite più risposte allo stesso mittente once = ${lookup ldap {LDAP_Q_HOMEDIRECTORY} {$value} fail}/vacation.db #numero di ripetizioni delle risposte per singolo mittente once_repeat = 1d subject = RE: $h_Subject: [RISPOSTA AUTOMATICA] #esecuzione query ldap per recuperare il testo del messaggio da inviare text = "${lookup ldap {LDAP_Q_VACATION} {$value} fail}" to = $sender_address user = <utente con cui parte exim> group = <gruppo con cui parte exim>
Riavvia il servizio di exim
|