#1 Le 28/03/2007, à 13:41
- zerros
[Résolu]execution d'un script avec postfix & mysql
Bonjour,
J'ai un serveur de mail qui tourne avec postfix et mysql. Mes utilisateurs recoivent et peuvent checker leurs mails en imap sans probleme. Je n'ai pas encore mis d'antispam ni d'antivirus et pas de web interface encore (manque de temps). Je vais au plus urgent.
Je voudrai pouvoir exécuter une script à l'arrivée d'un mail dans un compte bien défini.
exemple : script@toto.com va executer un script qui aura pour effet d'extraire les champs et les rentrer en base.
J'ai essayer en créant l'utilisateur dans la bdd et en lui créant un maildir dans /var/spool/vmail/script/
dans la racine de ce maildir j'ai mis un .forward qui contient :
"| /usr/bin/php -q /var/spool/vmail/test.php"
pour le moment j'execute un script php juste pour tester que l'exécution fonctionne. Le script final est en perl.
le code de test.php :
<?php mail("imonnom@mondomaine.com","sujet","mail recu","From:Test script<toto@aol.com>\n"); ?>
Comment puis-je mettre en place ce système ?
Merci d'avance pour votre aide.
Dernière modification par zerros (Le 02/04/2007, à 14:28)
Hors ligne
#2 Le 28/03/2007, à 14:39
- toniotonio
Re : [Résolu]execution d'un script avec postfix & mysql
depuis procmail ou maildrop tu dois pouvoir faire ce que tu veux
Tutoriaux Postfix sur www.starbridge.org/spip
Messagerie Dédiée, Relais Mail Antispam/Antivirus, Infogérance 24/7: http://www.eole-its.com
Hors ligne
#3 Le 28/03/2007, à 14:44
- zerros
Re : [Résolu]execution d'un script avec postfix & mysql
Humm .. etant nouveau dans la configuration de serveur de mail, n'y aurait-il pas plus simple
pour exécuter mon script que de configurer un procmail en parallèle de mon postfix ?
Hors ligne
#4 Le 28/03/2007, à 14:49
- toniotonio
Re : [Résolu]execution d'un script avec postfix & mysql
je viens de voir que tu utilises mysql donc on oublie procmail.
Donc maildrop (celui de courier) est, a mon avis, la maniere la plus propre dès qu'on veut commencer à manipuler les mails à la livraison.
si tu utilises le maildrop de postfix tu ne peux pas faire ce genre de choses.
Tutoriaux Postfix sur www.starbridge.org/spip
Messagerie Dédiée, Relais Mail Antispam/Antivirus, Infogérance 24/7: http://www.eole-its.com
Hors ligne
#5 Le 28/03/2007, à 14:55
- zerros
Re : [Résolu]execution d'un script avec postfix & mysql
ou la la. tu commences à me parler chinois la lol.
concretement comment ca marche ?
Hors ligne
#6 Le 28/03/2007, à 15:31
- toniotonio
Re : [Résolu]execution d'un script avec postfix & mysql
en gros le systeme de livraison virtuelle (virtual) de postfix ne permet pas de faire autre chose que de la livraison (pas de filtrages, de redirection, de quotas)
procmail ne gere pas mysql donc il est out
si tu veux vraiment faire ca proprement tu peux donc utiliser le maildrop de courier
lis la doc de postfix sur les domaines virtuels et sur maildrop
Dernière modification par toniotonio (Le 28/03/2007, à 15:33)
Tutoriaux Postfix sur www.starbridge.org/spip
Messagerie Dédiée, Relais Mail Antispam/Antivirus, Infogérance 24/7: http://www.eole-its.com
Hors ligne
#7 Le 28/03/2007, à 16:09
- zerros
Re : [Résolu]execution d'un script avec postfix & mysql
Donc si je comprends bien, il faut que je reprenne tout le schémas de configuration de mon serveur mail ?
aie aie aie. je suis pas sorti de l'auberge moi :s
Hors ligne
#8 Le 28/03/2007, à 16:52
- Uggy
Re : [Résolu]execution d'un script avec postfix & mysql
Je voudrai pouvoir exécuter une script à l'arrivée d'un mail dans un compte bien défini.
exemple : script@toto.com va executer un script qui aura pour effet d'extraire les champs et les rentrer en base.
Voila ce que je ferais:
Dans le fichier /etc/aliases
adresseMailScript: |/chemin/vers/mon/script
Les mails envoyés a <adresseMailScript@taMachine> seront "donnés" à ton script qui pourra parser ce qu'il veut dans le mail...pour faire les actions qu'il veut.
Extrait du "man aliases"
name: value1, value2, ..
The name is a local address (no domain part).
|command
Mail is piped into command. [...]
Hors ligne
#9 Le 28/03/2007, à 17:00
- zerros
Re : [Résolu]execution d'un script avec postfix & mysql
bonjour, merci pour la réponse, mais je suis en mysql pour la gestion des users et alias.
Ca y est maildrop est installé et configuré avec le support mysql :
root@zerrosmail:/usr/local/src# maildrop -v
maildrop 1.5.3 Copyright 1998-2003 Double Precision, Inc.
Maildir quota extension enabled.
Virtual user database via MySQL extension enabled.
This program is distributed under the terms of the GNU General Public
License. See COPYING for additional information.
j'ai modifier le master.cf de la sorte :
#maildrop unix - n n - - pipe
# flags=DRhu user=vmail argv=/usr/local/bin/maildrop -d ${recipient}
maildrop unix - n n - - pipe
flags=R user=vmail argv=/usr/bin/maildrop -d ${recipient}
J'ai tester un mail en envoi et en reception : OK (mais je sais pas s'il passe réellement par maildrop ou pas. Comment le voir ?).
Log mail.log :
Mar 28 15:56:44 zerrosmail postfix/pickup[18767]: B82415B611: uid=0 from=<root>
Mar 28 15:56:44 zerrosmail postfix/cleanup[18793]: B82415B611: message-id=<20070328135644.B82415B611@mail.xxxxx.fr>
Mar 28 15:56:44 zerrosmail postfix/qmgr[18766]: B82415B611: from=<root@xxxxx.fr>, size=336, nrcpt=1 (queue active)
Mar 28 15:56:44 zerrosmail postfix/virtual[18799]: B82415B611: to=<azer@xxxxxx.fr>, relay=virtual, delay=0, status=sent (delivered to maildir)
Mar 28 15:56:44 zerrosmail postfix/qmgr[18766]: B82415B611: removed
Comment tester l'envoi du mail vers un script maintenant ?
Merci d'avance pour votre réponse.
Dernière modification par zerros (Le 24/11/2007, à 18:24)
Hors ligne
#10 Le 28/03/2007, à 18:00
- toniotonio
Re : [Résolu]execution d'un script avec postfix & mysql
non il ne passe pas par maildrop car il faut que tu es relay=maildrop dans le log
c'est dans ton main.cf quil faut specifier le transport:
virtual_transport = maildrop
maildrop_destination_recipient_limit = 1
la 2eme ligne est importante ne l'oublie pas
mais n'oublie pas de parametrer maildrop pour communiquer avac la base sql, sinon c'a ne marchera pas.
en revanche tu as pris un ancienne version de maildrop (c'est la 2 et des poussieres maintenant) mais bon tu peux tester deja comme ca.
Tutoriaux Postfix sur www.starbridge.org/spip
Messagerie Dédiée, Relais Mail Antispam/Antivirus, Infogérance 24/7: http://www.eole-its.com
Hors ligne
#11 Le 29/03/2007, à 13:48
- zerros
Re : [Résolu]execution d'un script avec postfix & mysql
bon eh ben, j'ai refait une nouvelle install eb suivant la doc officielle.
A la seule différence que j'ai intégré le type de transport dans la bdd.
J'ai donc un utilisateur avec un transport maildrop.
J'ai créé mon fichier :
root@zerrosmail:~# more /etc/maildropmysql.config
hostname localhost
port 3306
database mail
dbuser postfix
dbpw postfix
dbtable postfix_users
default_uidnumber 5000
default_gidnumber 5000
uid_field email
uidnumber_field uid
gidnumber_field gid
maildir_field maildir
homedirectory_field homedir
quota_field quota
mailstatus_field postfix
where_clause AND postfix = 'y'
et dans les logs j'ai une belle erreur :
Mar 29 10:54:29 zerrosmail postfix/pickup[7402]: 1AC995B5DD: uid=0 from=<root>
Mar 29 10:54:29 zerrosmail postfix/cleanup[7628]: 1AC995B5DD: message-id=<20070329085429.1AC995B5DD@mail.xxxx.fr>
Mar 29 10:54:29 zerrosmail postfix/qmgr[7403]: 1AC995B5DD: from=<root@xxxxx.fr>, size=334, nrcpt=1 (queue active)
Mar 29 10:54:29 zerrosmail postfix/pipe[7632]: 1AC995B5DD: to=<azer@xxxx.fr>, relay=maildrop, delay=0, status=deferred (temporary failure. Command output: maildrop: signal 0x0B )
Mar 29 10:56:07 zerrosmail postfix/pickup[7402]: 4ACEA5B5E5: uid=0 from=<root>
Mar 29 10:56:07 zerrosmail postfix/cleanup[7628]: 4ACEA5B5E5: message-id=<20070329085607.4ACEA5B5E5@mail.xxxx.fr>
Mar 29 10:56:07 zerrosmail postfix/qmgr[7403]: 4ACEA5B5E5: from=<root@xxxx.fr>, size=337, nrcpt=1 (queue active)
Mar 29 10:56:07 zerrosmail postfix/pipe[7632]: 4ACEA5B5E5: to=<azer@xxxxx.fr>, relay=maildrop, delay=0, status=deferred (temporary failure. Command output: maildrop: signal 0x0B )
Mar 29 11:02:11 zerrosmail postfix/pickup[7402]: ED46E5B612: uid=0 from=<root>
Mar 29 11:02:11 zerrosmail postfix/cleanup[7686]: ED46E5B612: message-id=<20070329090211.ED46E5B612@mail.xxxxx.fr>
Mar 29 11:02:12 zerrosmail postfix/qmgr[7403]: ED46E5B612: from=<root@xxxxx.fr>, size=343, nrcpt=1 (queue active)
Mar 29 11:02:12 zerrosmail postfix/pipe[7693]: ED46E5B612: to=<eric@xxxx.fr>, relay=maildrop, delay=1, status=deferred (temporary failure. Command output: maildrop: signal 0x0B )
En virtual, ca fonctionne niquel.
Une idée comment résoudre le prob ?
Dernière modification par zerros (Le 24/11/2007, à 18:25)
Hors ligne
#12 Le 29/03/2007, à 13:59
- toniotonio
Re : [Résolu]execution d'un script avec postfix & mysql
essye en ligne de commande pour voir si maildrop trouve bien ton user dans la base:
maildrop -V 7 -d user@domain.tld
Tutoriaux Postfix sur www.starbridge.org/spip
Messagerie Dédiée, Relais Mail Antispam/Antivirus, Infogérance 24/7: http://www.eole-its.com
Hors ligne
#13 Le 29/03/2007, à 14:07
- zerros
Re : [Résolu]execution d'un script avec postfix & mysql
Et voilà le résultat de la commande :
vmail@zerrosmail:~$ maildrop -V 7 -d azer@xxxx.fr
maildrop: signal 0x0B
ca sent le roussi non ?
Dernière modification par zerros (Le 24/11/2007, à 18:25)
Hors ligne
#14 Le 29/03/2007, à 14:10
- toniotonio
Re : [Résolu]execution d'un script avec postfix & mysql
comment as tu installé maildrop ? (compilation ?)
as tu egalement installé le authdaemon avec le module mysql ?
sous ubuntu je ne sais pas si des paquets existent pour tout ca.
Dernière modification par toniotonio (Le 29/03/2007, à 14:10)
Tutoriaux Postfix sur www.starbridge.org/spip
Messagerie Dédiée, Relais Mail Antispam/Antivirus, Infogérance 24/7: http://www.eole-its.com
Hors ligne
#15 Le 29/03/2007, à 14:14
- zerros
Re : [Résolu]execution d'un script avec postfix & mysql
j'ai compilé maildrop :
root@zerrosmail:/var/spool/vmail/xxxxxx.fr# more /usr/local/src/maildrop-1.5.3/debian/rules
#!/bin/sh -ex
export DH_COMPAT=2
tmp=`pwd`/debian/maildrop
CFLAGS="-g -D_GNU_SOURCE"
if echo $DEB_BUILD_OPTIONS | grep -vq noopt; then
CFLAGS="$CFLAGS -O2"
fi
case "$1" in
build)
dh_testdir
# trust on the auto-detect of qmail failing (for sendmail compability)
[ -f config.status ] || CPPFLAGS="$CFLAGS" ./configure --prefix=/usr \
--mandir='${prefix}/share/man' --libexecdir='${prefix}/lib/maildrop' \
--sysconfdir=/etc \
--enable-use-dotlock=1 --enable-use-flock=1 \
--enable-sendmail=/usr/sbin/sendmail --enable-maildirquota \
--enable-syslog=1 --enable-maildropmysql --with-mysqlconfig=/etc/maildropmysql.config --without-db \
--enable-maildrop-uid=5000 --enable-maildrop-gid=5000 --enable-trusted-users="root postfix vmail"
[ -f maildrop/maildrop ] || make
...
...
courier-authdaemon est bien installé avec le support mysql :
root@zerrosmail:/var/spool/vmail/xxxxx.fr# dpkg --list | grep courier
ii courier-authda 0.47-4 Courier Mail Server - Authentication daemon
ii courier-authmy 0.47-4 Courier Mail Server - MySQL authentication
ii courier-base 0.47-4 Courier Mail Server - Base system
ii courier-imap 3.0.8-4 Courier Mail Server - IMAP server
root@zerrosmail:/var/spool/vmail/xxxxxx.fr# maildrop -v
maildrop 1.5.3 Copyright 1998-2003 Double Precision, Inc.
Maildir quota extension enabled.
Virtual user database via MySQL extension enabled.
This program is distributed under the terms of the GNU General Public
License. See COPYING for additional information.
Dernière modification par zerros (Le 24/11/2007, à 18:26)
Hors ligne
#16 Le 29/03/2007, à 14:20
- toniotonio
Re : [Résolu]execution d'un script avec postfix & mysql
as tu relancé le authdaemon ?
que disent les logs du authdaemon ?
ton maildir de ton user est il crée ?
loggue aussi les requetes mysql pour voir si quelque chose se passe dans la base
Tutoriaux Postfix sur www.starbridge.org/spip
Messagerie Dédiée, Relais Mail Antispam/Antivirus, Infogérance 24/7: http://www.eole-its.com
Hors ligne
#17 Le 29/03/2007, à 14:24
- zerros
Re : [Résolu]execution d'un script avec postfix & mysql
authdaemon est bien relancé. Ou puis-je trouver les logs de authdaemon ?
Voici les logs mail.lo et mysql.log :
root@zerrosmail:/var/spool/vmail/xxxx.fr# tail -f /var/log/mysql.log
137 Query select destination from postfix_transport where domain = 'azer@xxxxx.fr'
137 Query select destination from postfix_transport where domain = 'xxxxx.fr'
140 Query select destination from postfix_relocated where email = 'azer@xxxxx.fr'
140 Query select destination from postfix_relocated where email = 'azer'
140 Query select destination from postfix_relocated where email = '@xxxxx.fr'
070329 13:15:21 141 Quit
138 Quit
139 Quit
137 Quit
140 Quit
070329 13:25:38 142 Connect postfix@localhost on mail
142 Query select destination from postfix_transport where domain = '*'
142 Query select destination from postfix_transport where domain = '*'
143 Connect postfix@localhost on mail
143 Query select destination from postfix_virtual where email = 'azer@xxxxxx.fr'
143 Query select destination from postfix_virtual where email = 'azer'
143 Query select destination from postfix_virtual where email = '@xxxxx.fr'
root@zerrosmail:/var/spool/vmail/xxxxx.fr/azer# tail -f /var/log/mail.log
Mar 29 13:14:21 zerrosmail postfix/pickup[8751]: A6EB65B571: uid=0 from=<root>
Mar 29 13:14:21 zerrosmail postfix/cleanup[8762]: A6EB65B571: message-id=<20070329111421.A6EB65B571@mail.xxxxx.fr>
Mar 29 13:14:21 zerrosmail postfix/qmgr[8752]: A6EB65B571: from=<root@xxxxxxx.fr>, size=339, nrcpt=1 (queue active)
Mar 29 13:14:21 zerrosmail postfix/pipe[8764]: A6EB65B571: to=<azer@xxxxxx.fr>, relay=maildrop, delay=0, status=deferred (temporary failure. Command output: maildrop: signal 0x0B )
Mar 29 13:25:38 zerrosmail postfix/pickup[8751]: 112865B5BB: uid=0 from=<root>
Mar 29 13:25:38 zerrosmail postfix/cleanup[8830]: 112865B5BB: message-id=<20070329112538.112865B5BB@mail.xxxxxx.fr>
Mar 29 13:25:38 zerrosmail postfix/qmgr[8752]: 112865B5BB: from=<root@xxxxxx.fr>, size=345, nrcpt=1 (queue active)
Mar 29 13:25:38 zerrosmail postfix/pipe[8834]: 112865B5BB: to=<azer@xxxxx.fr>, relay=maildrop, delay=0, status=deferred (temporary failure. Command output: maildrop: signal 0x0B )
Les maildir existent puisque si je change le transport en virtual, les mails arrivent bien.
Je peux t'ouvrir un accès sur le serveur si tu peux m'orienter + facilement ?
Dernière modification par zerros (Le 24/11/2007, à 18:26)
Hors ligne
#18 Le 29/03/2007, à 15:04
- toniotonio
Re : [Résolu]execution d'un script avec postfix & mysql
comme ca a vue de nez maildrop ne se connecte pas a sql.
pour me connecter je ne peux pas depuis le taf
Tutoriaux Postfix sur www.starbridge.org/spip
Messagerie Dédiée, Relais Mail Antispam/Antivirus, Infogérance 24/7: http://www.eole-its.com
Hors ligne
#19 Le 29/03/2007, à 15:35
- zerros
Re : [Résolu]execution d'un script avec postfix & mysql
Bon je vais chercher encore un peu. Si je n'arrive pas à résoudre le problème et si ca ne te dérange pas de
te connecter depuis chez toi, alors je t'ouvrirai un accès ssh (sans te déranger bien entendu !!).
Merci pour ton aide.
Hors ligne
#20 Le 29/03/2007, à 15:43
- toniotonio
Re : [Résolu]execution d'un script avec postfix & mysql
j'ai pas de conf sous les yeux mais regarde du coté du port de mysql voir si tu ne peux pas te connecter plutot par un socket.
regarde aussi les droit sur les binaires maildrop et le var/run de maildrop
les log de authdaemon doivent etre dans /var/log/daemon.log
Dernière modification par toniotonio (Le 29/03/2007, à 15:46)
Tutoriaux Postfix sur www.starbridge.org/spip
Messagerie Dédiée, Relais Mail Antispam/Antivirus, Infogérance 24/7: http://www.eole-its.com
Hors ligne
#21 Le 29/03/2007, à 22:37
- toniotonio
Re : [Résolu]execution d'un script avec postfix & mysql
pour utiliser le socket plutot que le reseau pour la connexion a mysql j'utilise ca
hostname localhost
#port 3306
socket /var/run/mysqld/mysqld.sock
database postfix
dbuser postfix
dbpw xxxxxx
dbtable mailbox
default_uidnumber 20001
default_gidnumber 20001
uid_field username
maildir_field maildir
homedirectory_field homedir
uidnumber_field uidnumber
gidnumber_field gidnumber
quota_field quota
Tutoriaux Postfix sur www.starbridge.org/spip
Messagerie Dédiée, Relais Mail Antispam/Antivirus, Infogérance 24/7: http://www.eole-its.com
Hors ligne
#22 Le 31/03/2007, à 14:46
- zerros
Re : [Résolu]execution d'un script avec postfix & mysql
bon eh bien voilà les nouvelles infos :
droit du binaire maildrop :
root@zerrosmail:/etc# ll /usr/bin/maildrop
-rwxr-xr-x 1 vmail vmail 146K 2007-03-28 15:41 /usr/bin/maildrop
Je n'ai rien dans /var/run/maildrop (c'est juste un binaire qui ets exécuté).
j'ai remplacé le port 3306 par le socket mysql :
070331 13:44:24 175 Connect postfix@localhost on mail
175 Query select destination from postfix_transport where domain = '*'
175 Query select destination from postfix_transport where domain = '*'
176 Connect postfix@localhost on mail
176 Query select destination from postfix_virtual where email = 'xxxxxx.fr'
177 Connect postfix@localhost on mail
177 Query select maildir from postfix_users where email = 'xxxx.fr' and postfix = 'y'
175 Query select destination from postfix_transport where domain = 'azer@xxxx.fr'
175 Query select destination from postfix_transport where domain = 'xxxxx.fr'
178 Connect postfix@localhost on mail
178 Query select destination from postfix_relocated where email = 'azer@xxxx.fr'
178 Query select destination from postfix_relocated where email = 'azer'
178 Query select destination from postfix_relocated where email = '@xxxxx.fr'
et enfin postfix :
Mar 31 13:44:24 zerrosmail postfix/pipe[14643]: 112865B5BB: to=<azer@xxxxx.fr>, relay=maildrop, delay=173926, status=deferred (temporary failure. Command output: maildrop: signal 0x0B )
Mar 31 13:44:24 zerrosmail postfix/pipe[14644]: A6EB65B571: to=<azer@xxxxx.fr>, relay=maildrop, delay=174603, status=deferred (temporary failure. Command output: maildrop: signal 0x0B )
Mar 31 13:44:24 zerrosmail postfix/pipe[14647]: 5FF3F5B58B: to=<azer@xxxxxxxx.fr>, relay=maildrop, delay=175705, status=deferred (temporary failure. Command output: maildrop: signal 0x0B )
Je ne vois pas du tout o๠est le problème. Une idée ?
Dernière modification par zerros (Le 24/11/2007, à 18:27)
Hors ligne
#23 Le 02/04/2007, à 09:37
- toniotonio
Re : [Résolu]execution d'un script avec postfix & mysql
verifie les permissions et owner/group sur le fichier /etc/maildropmysql.config
Tutoriaux Postfix sur www.starbridge.org/spip
Messagerie Dédiée, Relais Mail Antispam/Antivirus, Infogérance 24/7: http://www.eole-its.com
Hors ligne
#24 Le 02/04/2007, à 10:38
- zerros
Re : [Résolu]execution d'un script avec postfix & mysql
Hello, passé un bon week end ? Je reviens t'embêter un peu lol.
Voici les droits du fichier :
root@zerrosmail:~# ll /etc/maildropmysql.config
-rw------- 1 vmail vmail 373 2007-04-01 09:37 /etc/maildropmysql.config
Hors ligne
#25 Le 02/04/2007, à 10:49
- toniotonio
Re : [Résolu]execution d'un script avec postfix & mysql
dans ce fichier tu es sur que le le default_uidnumber et default_gidnumber correspondent bien a celui de ton user/group vmail ?
que dit le /var/log/daemon.log ?
ta version de maildrop est ancienne, peut etre peux tu essayer de compiler a partir des sources directement la derniere version
Tutoriaux Postfix sur www.starbridge.org/spip
Messagerie Dédiée, Relais Mail Antispam/Antivirus, Infogérance 24/7: http://www.eole-its.com
Hors ligne