Logo Informatizzati

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

Commenti offerti da CComment