Parfois, un serveur de messagerie peut être d'une grande utilité si nous savons comment la gérer correctement. Dans l'article d'aujourd'hui, nous allons voir comment utiliser notre MTA d'exécuter automatiquement des actions lors de la réception d'un e-mail spécifique ou définir les paramètres. Une fois que nous connaissons la théorie soulèvera deux études de cas à titre d'exemples.
Pour commencer nous avons besoin d'un serveur Linux avec Qmail comme MTA . Je suppose que n'importe quel autre serveur de messagerie ( Sendmail , Postfix ), je personnaliser en Qmail parce que c'est celui que je connais et j'utilise, mais je suis sûr que d'autres puissent faire de même.
Théorie
Pour comprendre comment l'idée que nous devons d'abord comprendre comment qmail effectue la livraison des messages aux boîtes aux lettres locales. C'est un sujet sur lequel il existe une littérature considérable de recherche Google, mais peut-être pas clair dans une lecture rapide. C'est le fameux gâchis de fichiers . qmail .
Chaque fois que vous créez un utilisateur du système doit être créé, si vous recevez des emails, un. Qmail par défaut dans votre répertoire home.
- # cat /home/jiglesias/.qmail-default [Jiglesias @ Lérez ~] # cat / home / jiglesias. / Qmail-default
- . / Maildir /
Normalement, ce fichier est automatiquement créé parce que lorsque vous installez qmail aura créé une copie de ce fichier dans la création de l'utilisateur squelette / etc / skel
- # ls -la /etc/skel [Jiglesias @ Lérez ~] # ls-la / etc / skel
- Total 56
- Jul 29 18 : 29 . drwxr-xr-x 4 root root 4096 29 Juillet, 18: 29.
- Dec 30 04 : 08 .. drwxr-xr-x 97 root root 12288 30 décembre Avril: 08 ..
- Feb 1 2008 .bash_logout -Rw-r-r-1 root root 33 Février 1 2008. Bash_logout
- Feb 1 2008 .bash_profile -Rw-r-r-1 root root 176 1 Février 2008. Bash_profile
- Feb 1 2008 .bashrc -Rw-r-r-1 root root 124 1 Février 2008. Bashrc
- Aug 29 2007 Maildir drwx - 5 root root 4096 29 août 2007 Maildir
- Jan 2 2008 .qmail-default -Rw-r-r-1 root root 12 janvier Février 2008. Qmail-défaut
- Sep 12 2006 .zshrc -Rw-r-r-1 root root 658 12 septembre 2006. Zshrc
Pour ceux qui ne connaissent pas, le squelette sont les fichiers qui sont copiés dans le répertoire de l'utilisateur (avec des droits de celui-ci) à chaque fois que vous créez un nouveau. Si vous voulez que tous vos utilisateurs dans un fichier automatiquement, c'est votre place. Dans notre cas, nous voyons que, en plus de répertoire Maildir. Qmail-défaut est la livraison par défaut du courrier dans qmail. Compte tenu d'un utilisateur de ce fichier et ce répertoire, vous pouvez recevoir du courrier.
Bon ok, vous allez trop vite. Vous n'avez pas expliqué pour le service. Qmail-défaut. Droit. . Les règles de Qmail indiquent livraison des messages en fonction de deux paramètres:
- Le nom du fichier. Qmail-xx désigne le compte de messagerie sur lequel il agit.
- Le contenu indique ce qu'il faut faire avec le courrier.
Supposons qu'un utilisateur (jiglesias) recevoir du courrier à partir de deux comptes différents (jiglesias @ ... et OSUS @ ...).
Par défaut, tout votre courrier ira à votre boîte aux lettres et il est indiquant que le fichier. Qmail-défaut. Nous avons maintenant que le comportement est différent selon le compte de qui elle est adressée, puis les fichiers créés pour Qmail directions.:
- . Qmail-jiglesias: vérifier le courrier électronique pour être jiglesias @ ...
- . Qmail-OSUS: vérifier le courrier électronique pour être OSUS @ ...
On peut même aller un peu plus loin avec un. Qmail-jiglesias par défaut, et nous contrôler le courrier qui va à tout type pilotage jiglesias-XXXX @ ..., c'est une adresse commençant par jiglesias-sera contrôlée par ce fichier. qmail.
Dans le cas de base, qui est ce que nous avons vu, la livraison est faite à la boîte aux lettres de l'utilisateur (répertoire Maildir) mais on pourrait faire d'autres choses en fonction du contenu du fichier Qmail responsable du traitement du courrier.:
Renvoi à un autre compte:
- # cat /home/jiglesias/.qmail-jiglesias [Jiglesias @ Lérez ~] # cat / home / jiglesias. / Qmail-jiglesias
- reenvio@osusnet.com
Transmettre à un programme / script:
- # cat /home/jiglesias/.qmail-osus [Jiglesias @ Lérez ~] # cat / home / jiglesias. / Qmail-OSUS
- | Preline / usr / bin /
La combinaison de ce qui précède
- # cat /home/jiglesias/.qmail-jiglesias [Jiglesias @ Lérez ~] # cat / home / jiglesias. / Qmail-jiglesias
- . / Maildir /
- reenvio@osusnet.com
- | Preline / usr / bin /
L'affaire en question est la deuxième, soit la livraison de l'e-mail pour passer à un script qui va analyser le courrier électronique et prendre des décisions.
Vous serez frappé par l' | preline . qmail. C'est le système qui prépare un courriel à être traités et livrés à un autre script en ajoutant quelques têtes. La sortie du script qui reçoit le message est important car il influe sur l'issue de la dernière livraison du courrier électronique, en particulier, est important de savoir que si nous rejetons un email devra terminer le script avec la sortie (100), ce qui indique une qmail devrait rejeter ce message. Nous verrons l'utilité de cette sortie.
Pratique
Une fois que nous savons comment passer commande d'un email reçu à un script, nous allons voir comment la traiter. Qu'allons-nous faire avec un script PHP . . Dans notre stock Qmail faire quelque chose comme:
- # more .qmail-jiglesias [Jiglesias @ Lérez ~] # more. Qmail-jiglesias
- | Preline / usr / bin / php / home / jiglesias / test.php
Avec cela, nous avons terminé le travail sur le serveur de messagerie. Voyons comment analyser l'e-mail de PHP.
La première chose à faire est de ramasser le contenu du courrier électronique à partir du script de l'entrée standard, alors nous pouvons traiter le courrier électronique comme une chaîne de texte.
- <? Php
- >
Avec ces deux simples lignes de code dans notre script, nous contenu des emails. Maintenant, nous ne traitons. Nous pouvons le faire ligne par ligne sur notre propre ou se fonder sur n'importe quelle librairie. J'utilise Mail_mimeDecode de poire . L'avantage de cette bibliothèque est que nous pouvons obtenir, en plus du texte de l'e-mail, pièces jointes.
- <? Php
- 'include_bodies' ] = true ; $ Params ['include_bodies'] = true;
- 'decode_bodies' ] = true ; $ Params ['decode_bodies'] = true;
- 'decode_headers' ] = true ; $ Params ['decode_headers'] = true;
- 'input' ] = $email ; $ Params ['input'] = $ email;
- ( $params ) ; $ Structure = Mail_mimeDecode :: decode ($ params);
- ( trim ( $structure -> headers [ 'from' ] ) ) ; De = addslashes ( garniture ($ structure -> têtes ['from']));
- [ 1 ] ; $ Nom = $ p [1];
- >
Ainsi, nous pouvons maintenant traiter le courrier électronique et décider que nous jugeons appropriées. Nous l'insérer dans une base de données, lancer d'autres processus automatisés, envoyer des alertes SMS ... ce qui vient à l'esprit.
Études de cas
La question clé, après avoir vu la théorie, pourquoi devrais-je l'utiliser?. Je vous propose deux applications que j'ai faites.
Support System
Le système de ticket de support typique. Dans l'objet du courriel faisant glisser l'identifiant de billet, par exemple [# 123445]. Nous aurons à discuter de la question et voir si le modèle prédéfini apparaît. S'il ya en face un nouveau billet et insérer les données dans notre base de données, sinon il est une réponse à un incident précédent et que nous aurons l'identifiant. Simple n'est-ce pas?. On peut même attacher à nos fichiers indicendias qui peut être atteint par email.
Envoi de fichiers depuis un téléphone mobile
Le deuxième exemple est similaire à la précédente techniquement mais conceptuellement distinctes. La plupart des téléphones (sauf le haut de gamme) ne peut pas envoyer des fichiers de formes wap (<input type="file">). L'alternative est que l'utilisateur d'envoyer un e-mail ou MMS (la plupart des opérateurs permettent d'envoyer à des adresses e-mail) avec vos fichiers. Notre script va traiter le contenu du courrier reçu, décrypter et traités comme il convient.
Ce sont deux exemples simples de la façon d'utiliser le courriel pour automatiser des tâches, mais, comme je l'ai dit, nous pourrions faire tout ce que vous pouvez penser, d'envoyer un SMS d'alerte à même redémarrer notre serveur ou lancer une autre tâche.













