Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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

zerros a écrit :

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