informatique:reseau:messagerie:gnarwl

Gnarwl

apt-get install gnarwl
adduser --system --home /var/lib/gnarwl --no-create-home --gid 8 gnarwl
chown gnarwl: -R /var/lib/gnarwl /etc/gnarwl.cfg

Fichier /etc/postfix/master.cf :

# Gnarwl
gnarwl    unix  -       n       n       -       1       pipe flags=F
  user=gnarwl argv=/usr/bin/gnarwl -c /etc/gnarwl.cfg -a ${nexthop}

Fichier /etc/gnarwl.cfg :

map_sender $sender
map_receiver $recepient
map_subject $subject
map_field $begin vacationStart
map_field $end vacationEnd 
map_field $fullname cn
map_field $deputy vacationForward
server ldap.example.com
port 389
scope sub
login uid=gnarwl,ou=sysaccounts,o=example
password mdpldap
protocol 0
base o=example
queryfilter (&(|(mail=$recepient)(mailAlternateAddress=$recepient))(vacationActive=TRUE))
result vacationInfo
blockfiles /var/lib/gnarwl/block/
umask 0644
blockexpire 48
mta /usr/sbin/sendmail -F $recepient -t $sender
maxreceivers 64
maxheader 512
charset UTF-8
badheaders /var/lib/gnarwl/badheaders.db
blacklist /var/lib/gnarwl/blacklist.db
forceheader /var/lib/gnarwl/header.txt
forcefooter /var/lib/gnarwl/footer.txt
recvheader To Cc
loglevel 2

Fichier /var/lib/gnarwl/header.txt :

From: $fullname <$recepient>
To: $sender
X-mailer: GNARWL
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
Subject: Re: $subject

Il suffira ensuite d'envoyer le mail automatiquement sur le transport gnarwl:. Différente solutions existent pour cela :

Le principe : Utiliser un mapping LDAP pour ajouter automatiquement une adresse mail destinatrice en BCC via la directive recipient_bcc_maps. L'adresse mail ajouté sera dans un domaine spécial dont les mails seront destinés au transport gnarwl:

Fichier /etc/postfix/main.cf :

transport_maps = proxy:ldap:gnarwl_transport

ldap_mailbox_vacation_bcc_server_host = ldap0.example.com,ldap1.example.com
ldap_mailbox_vacation_bcc_server_port = 389
ldap_mailbox_vacation_bcc_search_base = o=example
ldap_mailbox_vacation_bcc_timeout = 30
ldap_mailbox_vacation_bcc_query_filter = (&(|(mail=%s)(mailAlternateAddress=%s))(vacationActive=TRUE))
ldap_mailbox_vacation_bcc_result_attribute = uid
ldap_mailbox_vacation_bcc_result_format = %s@autoreponse.example.com
ldap_mailbox_vacation_bcc_expansion_limit = 1
ldap_mailbox_vacation_bcc_scope = sub
ldap_mailbox_vacation_bcc_bind = yes
ldap_mailbox_vacation_bcc_version = 3
ldap_mailbox_vacation_bcc_bind_dn = uid=postfix,ou=sysaccounts,o=example
ldap_mailbox_vacation_bcc_bind_pw = mdpldap

recipient_bcc_maps = ldap:ldap_mailbox_vacation_bcc

gnarwl_transport_server_host = ldap0.example.com,ldap1.example.com
gnarwl_transport_server_port = 389
gnarwl_transport_search_base = o=example
gnarwl_transport_domain = autoreponse.example.com
gnarwl_transport_query_filter = (&(vacationActive=TRUE)(uid=%u))
gnarwl_transport_result_attribute = mail
gnarwl_transport_result_format = gnarwl:%s
gnarwl_transport_expansion_limit = 1
gnarwl_transport_scope = sub
gnarwl_transport_bind = yes
gnarwl_transport_version = 3
gnarwl_transport_cache = no
gnarwl_transport_bind_dn = uid=postfix,ou=sysaccounts,o=example
gnarwl_transport_bind_pw = mdpldap

Le principe est de repasser la valeur de l'attribut vacationActive à FALSE lorsque la date dans l'attribut vacationEnd est dépassée. Cela n'est dans l'absolu pas forcément nécessaire car gnarwl vérifie également que la date d'expiration n'est pas dépassée avant d'envoyer le mail. En outre, cela permet :

  • de le plus envoyer de mail vers le transport gnarwl inutilement
  • de désactiver visuellement le message d'auto-réponse pour l'utilisateur dans son interface de gestion

Le script est téléchargeable ici. Il utilise en dépendance la librairie mylib installable de la manière suivante :

apt-get install git python-ldap
cd /usr/local/src
git clone http://git.zionetrix.net/git/python-mylib

Ce script doit idéalement être installé dans /usr/local/sbin et être exécuté par cron au moins une fois par jour.

  • informatique/reseau/messagerie/gnarwl.txt
  • Dernière modification : 2016/07/25 09:28
  • de bn8