Roundcube : plugin de gestion des vacations
- Mardi 27 octobre 2009
- Publié dans Réalisations
- Par Boris HUISGEN
- Ecrire
Voici la nouvelle version de mon plugin de gestion des répondeurs pour RoundCube version 0.3. Elle s’appuie à présent sur l’API plugin de RoundCube, ce qui permet une installation en moins de cinq minutes. Au niveau des nouveautés, les drivers de stockage permettent une configuration sur mesure. Sont fournis le driver SQL et le driver LDAP qui couvrent entre autres l’utilisation de PostfixAdmin et Gnarwl. Si cela ne suffit pas, à vous de coder votre driver !
plugin-vacation-0.3-20091008.tar.gz
ChangeLog :
- support de l’API plugin RC.
- driver de stockage : SQL, LDAP.
- support des messages au format HTML.

Bonjour,
D’abord merci pour ce plugin.
Je l’installe sans pb, mais j’ai erreur de traitement à l’utilisation, cela vient du fait que je n’ai pas bien paramétrer le fichier de config.
Si je choisi le driver sql, il faut créer je pense la table vacation dans une base de donnée?
Quelles sont les champs ? et le type ?
Avez vous éventuellement une requête SQL ?
Merci de m’aiguiller …
Cordialement dominique martineau
Vous pouvez utiliser l’outil suivant et son schéma : http://postfixadmin.sourceforge.net/
La structure de la table vacation est la suivante :
CREATE TABLE IF NOT EXISTS `vacation` (
`email` varchar(255) NOT NULL,
`subject` varchar(255) NOT NULL,
`body` text NOT NULL,
`cache` text NOT NULL,
`domain` varchar(255) NOT NULL,
`created` datetime NOT NULL default ’0000-00-00 00:00:00′,
`active` tinyint(1) NOT NULL default ’1′,
PRIMARY KEY (`email`)
) DEFAULT CHARSET=utf8′;
Les requêtes SQL sont celles fournies par défaut.
N’oubliez pas que le téléchargement de la dernière version de rc-vacaiton est dispo ici : http://github.com/bhuisgen/rc-vacation/downloads
@Boris HUISGEN
Merci Boris, tant qu’a faire le boulet …
j’ai créé la table vacation dans la base vacation, j’ai créé un user vacation (tant qu’a faire) avec les droits sur la table MYSQL, dans le fichier config, j’inscris ça :
$rcmail_config['vacation_sql_dsn'] =
‘mysql://vacation:vacation@localhost/vacation’;
J’ai pas bon … erreur de connexion …
Un p’tit coup de main ?
Essaie une connexion en console. Ensuite active le debug log de roundcube et regarde si tu n’as pas une erreur avec le module PEAR MDB2/DB.
@Boris HUISGEN
J’ai une erreur :
[26-Mar-2010 17:21:34 +0100]: DB Error: _doConnect: [Error message: unable to establish a connection]
[Native code: 0]
** mysql(mysql)://vacation:xxx@IPSERVEUR/vacation in /var/www/webmail/program/include/rcube_mdb2.php on line 100 (POST /webmail/?_task=settings&_action=plugin.vacation-save?_task=&_action=)
@domi
J’ai pu trouver pour la connexion grâce au log merci.
Bonjour,
Merci pour ce plugins !
J’essaye de le mettre en place en utilisant le driver LDAP, mais lorsque je clique sur « répondeur » dans les paramètres, j’ai « erreur de traitement » qui s’affiche en rouge.
Dans le fichier de configuration est-ce que « %email_local » et « %email_domain » doivent être défini en dur dans le code ?
Merci d’avant pour vos réponses.
Ok j’avait une erreur dans le « objectClass= », je n’ai plus l’erreur de traitement mais l’agent d’absence ne s’active pas ( ou ne reste pas actif )
I have the next error:
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
MDB2 Error: no such table (-18): _doQuery: [Error message: Could not execute statement] [Last executed query: DELETE from vacation_notification WHERE on_vacation='prueba@artevia.com';] [Native code: 1146] [Native message: Table 'da_roundcube.vacation_notification' doesn't exist]
DB Error: MDB2 Error: no such table Query: _doQuery: [Error message: Could not execute statement] [Last executed query: DELETE from vacation_notification WHERE on_vacation='prueba@artevia.com';] [Native code: 1146] [Native message: Table 'da_roundcube.vacation_notification' doesn't exist] in /var/www/html/roundcubemail-0.3.1/program/include/rcube_mdb2.php on line 627 (POST /roundcube/?_task=settings&_action=plugin.vacation-save?_task=&_action=)
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Can you confirm what is the structure of vacation table??
Thanks!
@Roberto
This is the schema of the vacation table from postfixadmin (the schema is included in his package) :
CREATE TABLE IF NOT EXISTS `vacation` (
`email` varchar(255) NOT NULL,
`subject` varchar(255) NOT NULL,
`body` text NOT NULL,
`cache` text NOT NULL,
`domain` varchar(255) NOT NULL,
`created` datetime NOT NULL default ’0000-00-00 00:00:00′,
`active` tinyint(1) NOT NULL default ’1′,
PRIMARY KEY (`email`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT=’Postfix Admin – Virtual Vacation’;
@Boris HUISGEN
Sorry, i didn’t see the schema in the package.
But the error show « Table ‘da_roundcube.vacation_notification’ doesn’t exist », it’s not neccesary create notification field?
Thanks!
I have just created the table ‘vacation_notification’:
CREATE TABLE `vacation_notification` (
`on_vacation` varchar(255) NOT NULL,
`notified` varchar(255) NOT NULL,
`notified_at` timestamp NOT NULL default CURRENT_TIMESTAMP,
PRIMARY KEY (`on_vacation`,`notified`),
CONSTRAINT `vacation_notification_ibfk_1` FOREIGN KEY (`on_vacation`) REFERENCES `vacation` (`email`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT=’Postfix Admin – Virtual Vacation Notifications’
But now the error is « Table ‘da_roundcube.alias’ doesn’t exist », what’s the schema of alias table?
Thanks!
Download and install postfixadmin. The installation creates the schema. The vacation script is included in the package.
I have install your plugin and i have a problem. The autoresponder make the reply with an adress like user#domain@autoreply.my.domain so it doesn’t work
@aglidic
You can change this setting in the configuration file.
Juste au cas où : sur mon environnement, j’utilise maildrop pour disposer de quotas et du répondeur. J’ai donc rapidement fait un driver pour gérer maildrop, de manière plutôt directe (gestion de la présence / absence du fichier contenant le message, dans la boite aux lettres de l’utilisateur).
Si ça intéresse quelqu’un, disez-moi sinon je le garde dans ma culotte ! En tout cas, merci pour le plugin, ultra simple à customiser !
Un détail dans vacation/vacation.php, function vacation_form(), génération du contrôle html_checkbox : je voulais pouvoir conserver le message même si le répondeur est inactif. Or la case à cocher passe à disabled les contrôles de saisie. Conséquence : on se retrouve avec des champs vides lors du POST. J’ai corrigé via un paramètre de plus (vacation_force_empty) pour ne pas avoir le onclick qui m’embêtait.
Là encore, si ça intéresse quelqu’un…
@Sylvain Langlade
Envoie moi ton driver maildrop + ton patch pour l’option force_empty qui devient nécessaire. Je me chargerai de les intégrer.
A+
Bonjour ,
J’ai installé le plugin avec le driver ldap mais lorsque je désire mettre a jour le champs vacationActive a yes j’ai l’erreur dans les logs :
Could not modify entry: Could not replace attribute vacationActive values: Strong(er) authentication required: LDAP_STRONG_AUTH_REQUIRED: (1000):
Bien sur l’erreur est du a l’authentification mais je n’arrive pas a avancer plus sur ce problème , comment est gérer l’authentifation en écriture ? quels sont les pistes a explorer ?
Merci
franck
@mos
Vérifie avec un browser LDAP que ton login/pass LDAP fonctionnent et te permettent un accès resd-write sur ta base LDAP.
@boris
merci ca fonctionne . j’ai un autre problème pour que cela fonctionne il faut que je mette uid=admin et le password de l’admin de la base ldap dans bind dn et bind passwd.
Seulement cela m’embête de mette ce mot de passe dans la conf , y a t’il un moyen de récupérer le user et le mot de passe de l’utilisateur connecté dans roundcube , puisque l’utilisateur lambda a le droit d’écriture dans les champs vacationactive et vacationmessage ? .
je sais pas si c’est tres claire ..lol
Merci pour tes informations .
franck
Bonjour,
Vous avez réussi à faire un répondeur avec Postfix ??
Qu’avez-vous mis comme packages/commendes pour faire cela ?
Merci d’avance, je tourne en rond !
bonjour
j’ai installer la version 0.4 de rc-vacation
je bloque sur le message d’erreur « erreur de traitement »
dans mes logs, j’ai
231 Connect postfix@localhost on
231 Init DB postfix
231 Query SET NAMES utf8
231 Query DELETE FROM vacation WHERE email=’gilles@xxxx.re’ AND domain=’xxxx.re’
230 Quit
231 Quit
comment sortir de cette situation ?? merci de m’eclairer