Manchmal ist ein Mail-Server kann von großem Nutzen sein, wenn wir wissen, wie man es richtig zu behandeln. Im heutigen Artikel werden wir sehen, wie wir unsere verwenden MTA automatisch Aktionen ausführen, wenn ein bestimmtes E-Mail oder Parameter definieren. Sobald wir wissen, die Theorie werden zwei Fallstudien als Beispiele zu erhöhen.
Zunächst brauchen wir einen Linux-Server mit Qmail als MTA . Ich denke, jede andere Mail-Server ( Sendmail , Postfix ), I in persönlicher Qmail , weil es die, die ich kenne und zu bedienen ist, aber ich bin sicher, dass andere das gleiche tun.
Lehre
Um zu verstehen, wie die Idee, müssen wir zuerst verstehen, wie qmail die Nachrichtenübermittlung zu lokalen Mailboxen ausführt. Es ist ein Thema, zu dem es beträchtliche Literatur Google-Suche, kann aber nicht in einer schnellen Lese klar. Es ist die berühmte Durcheinander von Dateien . qmail .
Jedes Mal, wenn Sie ein System Benutzer muss erstellt werden, wenn Sie E-Mails empfangen, ein. Qmail-default in Ihrem Home-Verzeichnis.
- # cat /home/jiglesias/.qmail-default [Jiglesias @ Lérez ~] # cat / home / jiglesias /. Qmail-default
- . / Maildir /
Normalerweise wird diese Datei wird automatisch erstellt, denn wenn man qmail installieren Sie eine Kopie dieser Datei in der Erstellung eines Benutzers Skelett / etc / skel angelegt haben
- # ls -la /etc/skel [Jiglesias @ Lérez ~] # ls-la / etc / skel
- Insgesamt 56
- Jul 29 18 : 29 . drwxr-xr-x 4 root root 4096 29. Juli 18: 29.
- Dec 30 04 : 08 .. drwxr-xr-x 97 root root 12288 Dezember 30. April: 08 ..
- Feb 1 2008 .bash_logout -Rw-r-r-1 root root 33 1. Februar 2008. Bash_logout
- Feb 1 2008 .bash_profile -Rw-r-r-1 root root 176 1. Februar 2008. Bash_profile
- Feb 1 2008 .bashrc -Rw-r-r-1 root root 124 1. Februar 2008. Bashrc
- Aug 29 2007 Maildir drwx - 5 root root 4096 29. August 2007 Maildir
- Jan 2 2008 .qmail-default -Rw-r-r-1 root root 12. Januar Februar 2008. Qmail-default
- Sep 12 2006 .zshrc -Rw-r-r-1 root root 658 12. September 2006. Zshrc
Für diejenigen, die nicht wissen, sind das Skelett die Dateien, die dem Benutzer-Verzeichnis (mit Berechtigungen davon) jedes Mal, wenn Sie eine neue kopiert werden. Wenn Sie alle Benutzer in einer Datei automatisch möchten, ist dies der richtige Ort. In unserem Fall sehen wir, dass zusätzlich zu. Qmail-default Maildir-Verzeichnis ist die Standardeinstellung Postzustellung in qmail. Da ein Benutzer diese Datei und das Verzeichnis können Sie E-Mails empfangen.
Okay okay, du gehst zu schnell. Sie haben nicht für die Bedienung erklärt. Qmail-default dass. Richtig. . Qmail Die Regeln geben die Zustellung von Nachrichten auf zwei Parametern:
- Der Name der Datei. Qmail-xx bezieht sich auf die E-Mail-Konto, auf dem es wirkt.
- Der Inhalt zeigt, was mit der Mail zu tun.
Angenommen, ein Benutzer (jiglesias) Mail-Empfang von zwei verschiedenen Konten (jiglesias @ ... und OSUs @ ...).
Standardmäßig werden alle Ihre E-Mail wird an Ihre Mailbox gehen, und es wird die die Datei angibt. Qmail-default. . Wir jetzt, dass das Verhalten anders ist je nach Konto, auf das sie gerichtet ist, dann werden die Dateien für Qmail Richtungen erstellt:
- . Qmail-jiglesias: Prüfen Mail an jiglesias sein @ ...
- . Qmail-OSUs: Prüfen Mail an OSUs sein @ ...
Wir können sogar ein wenig weiter gehen mit einem. Qmail-jiglesias-default, und würde die Mail, die auf jede Art Lenkung jiglesias-XXXX @ geht ..., das heißt, jede Adresse wird von Beginn jiglesias-wird durch diese Datei gesteuert werden steuern. qmail.
In der Base-Case, das ist, was wir gesehen haben, ist die Lieferung an das Postfach des Benutzers (Maildir-Verzeichnis) gemacht, aber wir konnten anderem abhängig vom Inhalt der Datei Qmail verantwortlich für die Verarbeitung Postversand tun.:
Weiterleitung auf ein anderes Konto:
- # cat /home/jiglesias/.qmail-jiglesias [Jiglesias @ Lérez ~] # cat / home / jiglesias /. Qmail-jiglesias
- reenvio@osusnet.com
Uns auf ein Programm / Skript:
- # cat /home/jiglesias/.qmail-osus [Jiglesias @ Lérez ~] # cat / home / jiglesias /. Qmail-OSUs
- | PreLine / usr / bin / Programm
Kombination der obigen
- # cat /home/jiglesias/.qmail-jiglesias [Jiglesias @ Lérez ~] # cat / home / jiglesias /. Qmail-jiglesias
- . / Maildir /
- reenvio@osusnet.com
- | PreLine / usr / bin / Programm
Der betreffende Fall ist die zweite, also die Lieferung der E-Mail, um ein Skript, das die E-Mail analysieren und Entscheidungen zu treffen passieren.
Sie werden von der geschlagen werden preline | . Datei qmail. Es ist das System, das eine E-Mail verarbeitet und geliefert werden, um einem anderen Skript Hinzufügen einiger Header bereitet. Die Ausgabe des Skripts, das die E-Mail erhält, ist wichtig, da sie das Ergebnis der endgültigen Auslieferung von E-Mails beeinflusst, insbesondere ist es wichtig zu wissen, dass, wenn wir ablehnen, eine E-Mail müssen Sie das Skript mit exit (100) zu beenden, zeigt dies ein qmail sollte lehnen diese Nachricht. Wir werden sehen, die Nützlichkeit dieser Ausgabe.
Übung
Sobald wir wissen, wie man die Kontrolle einer empfangenen E-Mail an ein Skript übergeben, mal sehen, wie sie zu behandeln. Was sollen wir tun, mit einem Skript PHP . . In unserem Lager Qmail so etwas wie:
- # more .qmail-jiglesias [Jiglesias @ Lérez ~] # mehr. Qmail-jiglesias
- | PreLine / usr / bin / php / home / jiglesias / test.php
Damit haben wir die Arbeit auf dem Mail-Server abgeschlossen. Lassen Sie uns sehen, wie man die E-Mail von PHP analysieren.
Das erste, was zu tun ist, holen Sie den Inhalt der E-Mail aus dem Skript durch Standard-Eingabe, dann können wir die E-Mail als Text-String zu verarbeiten.
- <? Php
- ?>
Mit diesen einfachen zwei Codezeilen in unserem Skript mailen wir Inhalte. Jetzt müssen wir nur verarbeiten. Wir können es Zeile für Zeile auf eigene oder verlassen sich auf jeder Buchhandlung. Ich benutze Mail_mimeDecode der Birne . Der Vorteil dieser Bibliothek ist, dass wir erhalten, zusätzlich zu dem Text der E-Mail, Anhänge.
- <? 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' ] ) ) ; Von $ = addslashes ( trim ($-Struktur -> headers ['von']));
- [ 1 ] ; $ Name = $ p [1];
- ?>
So können wir nun die E-Mail zu bearbeiten und zu entscheiden, wie wir für angemessen halten. Wir setzen Sie sie in einer Datenbank, starten andere automatisierte Prozesse, SMS Benachrichtigung ... was in den Sinn kommt.
Case Studies
Die entscheidende Frage, nachdem er die Theorie, warum sollte ich das?. Ich schlage vor, zwei Anwendungen, die ich getan habe.
Support System
Der typische Support-Ticket-System. In der E-Mail Betreff Ziehen der Kennzeichnung für Tickets, z. B. [# 123445]. Wir haben, um das Problem zu besprechen und sehen, ob vordefinierte Muster erscheint. Wenn es vor einer neuen Fahrkarte sind und legen Sie die Daten in unsere Datenbank, sonst ist es eine Antwort auf einen früheren Vorfall, und dass wir die Kennung haben. Einfach ist es nicht?. Wir können sogar unsere indicendias Dateien, die per E-Mail erreicht werden kann befestigen.
Senden Sie Dateien von mobilen
Das zweite Beispiel ist ähnlich wie das vorherige technisch aber konzeptionell verschieden. Die meisten Telefone (mit Ausnahme der High-End) können keine Dateien von wap Formen (<input type="file">). Die Alternative ist, dass der Benutzer eine E-Mail oder MMS (die meisten Betreiber zu ermöglichen, E-Mail-Adressen gesendet) mit Ihren Dateien zu senden. Unser Skript verarbeitet den Inhalt der E-Mail empfangen, Dateien entschlüsseln und so behandelt, als angemessen.
Dies sind zwei einfache Beispiele, wie man E-Mail verwenden, um Aufgaben zu automatisieren, aber, wie ich schon sagte, wir könnten alles, was man sich vorstellen kann zu tun, von Senden einer SMS-Warnung an sogar neu starten unseren Server oder starten Sie eine andere Aufgabe.













