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>
Commenti offerti da CComment