Às vezes, um servidor de email pode ser de muito valor, se sabemos como tratá-la corretamente. No artigo de hoje vamos ver como usar a nossa MTA para executar ações automaticamente quando receber um e-mail específico ou com os parâmetros que a definem. Uma vez que sabemos que a teoria levantada dois estudos de caso como exemplo.
Para começar vamos precisar de um servidor Linux com qmail como MTA . Eu acho que qualquer outro servidor de correio será ( Sendmail , Postfix ), posso personalizar no Qmail , porque é o que eu conheço e uso, mas estou certo de que outros possam fazer o mesmo.
A teoria
Para entender como a idéia de que devemos primeiro entender como Qmail entrega as mensagens nas caixas de correio local. É um assunto sobre o qual há uma abundância de literatura pesquisando no Google, mas não pode ser muito claro em uma leitura rápida. Esta é a famosa bagunça de arquivos . qmail .
Cada vez que você criar um usuário do sistema deve ser criado, se você receber e-mail, a. Qmail-padrão no seu diretório de usuário.
- # cat /home/jiglesias/.qmail-default [Jiglesias Lerez @ ~] # cat / home / jiglesias /. Qmail-default
- . Maildir /
Normalmente esse arquivo é criado automaticamente quando você instalar o qmail e terá criado uma cópia deste arquivo para criar o esqueleto do usuário / etc / skel:
- # ls -la /etc/skel [Jiglesias Lerez @ ~] # ls-la / etc / skel
- 56 total
- Jul 29 18 : 29 . drwxr-xr-x 4 root root 4096 29 de julho de 1918: 29.
- Dec 30 04 : 08 .. drwxr-xr-x 97 root root 12 288 30 dez 04: 08 ..
- Feb 1 2008 .bash_logout -Rw-r-1 root root r-33 01 de fevereiro de 2008. Bash_logout
- Feb 1 2008 .bash_profile -Rw-r-1 root root r-176 01 de fevereiro de 2008. Bash_profile
- Feb 1 2008 .bashrc -Rw-r-1 root root r-124 01 de fevereiro de 2008. Bashrc
- Aug 29 2007 Maildir drwx - 5 root root 4096 29 agosto, 2007 Maildir
- Jan 2 2008 .qmail-default -Rw-r-1 root root r-12 02 de janeiro de 2008. Qmail-padrão
- Sep 12 2006 .zshrc -Rw-r-1 root root r-658 12 setembro de 2006. Script zshrc
Para quem não sabe, o esqueleto são os arquivos que são copiados para o diretório do usuário (com permissões do mesmo) toda vez que você criar um novo. Se você quiser todos os seus usuários tem um arquivo automaticamente, este é o seu site. No nosso caso, vemos que a adição. Qmail-padrão do diretório Maildir é o padrão de entrega do correio qmail. Tendo um usuário neste arquivo e este diretório, você pode receber e-mail.
Ok ok, indo rápido demais. Você não nos disse por que o. Qmail-padrão que. Direita. A. Qmail regras indicam a entrega de mensagens com base em dois parâmetros:
- O nome do arquivo. Qmail xx refere-se à conta de email em que atua.
- O manual fornece informações sobre o que fazer com o e-mail.
Suponha que um usuário (jiglesias) que recebe e-mail de duas contas distintas (jiglesias osus @ @ ... e ...).
Por padrão, todos os emails virá a sua caixa de correio como ele está indicando o arquivo. Qmail-padrão. Temos agora que o comportamento é diferente dependendo da conta a que se dirige, então a arquivos criados. Qmail para direções:
- . Qmail-jiglesias: Controla o e-mail para ser jiglesias @ ...
- Qmail-osus: Controla o e-mail para ser osus. @ ...
Podemos até ir mais longe com um arquivo. Qmail-default-jiglesias e monitorados no e-mail que vai para qualquer tipo de governo jiglesias-XXXX @ ..., ou seja, qualquer endereço que comece com jiglesias, será controlado por esse arquivo. qmail.
No caso base, que é o que vimos, a oferta é de caixa de correio do usuário (diretório Maildir), mas poderia fazer outras coisas, dependendo do conteúdo do arquivo. Taxa de entrega Qmail do processamento do e-mail:
Encaminhamento para outra conta:
- # cat /home/jiglesias/.qmail-jiglesias [Jiglesias Lerez @ ~] # cat / home / jiglesias /. Qmail-jiglesias
- reenvio@osusnet.com
Consulta de um programa / script:
- # cat /home/jiglesias/.qmail-osus [Jiglesias Lerez @ ~] # cat / home / jiglesias /. Qmail-osus
- | Preline usr / bin / programa /
A combinação destes
- # cat /home/jiglesias/.qmail-jiglesias [Jiglesias Lerez @ ~] # cat / home / jiglesias /. Qmail-jiglesias
- . Maildir /
- reenvio@osusnet.com
- | Preline usr / bin / programa /
O caso que nos interessa é o segundo, ou seja, passar a entrega de e-mail a um script que irá analisar o e-mail e tomar decisões.
Você deve ter notado a preline | o arquivo. qmail. É o sistema que prepara um e-mail para ser processado e entregue a um outro script, adicionando um cabeçalho poucos. A saída do script que o email é importante porque influencia o resultado final da entrega do correio em particular, é importante saber que, se rejeitar um e-mail que irá completar o script com uma saída (100), isto indica uma qmail deve rejeitar esta mensagem. Veremos mais tarde o valor da saída.
Prática
Uma vez que sabemos como passar o controle de um e-mail recebido de um script, veja como tratá-la. O que fazer com um script PHP . Em nosso arquivo. Qmail irá fazer algo como:
- # more .qmail-jiglesias [Jiglesias Lerez @ ~] # more. Qmail-jiglesias
- | Preline usr / bin / php / home / jiglesias / test.php
Temos já concluída no servidor de email. Vamos ver como analisar a mensagem do PHP.
A primeira coisa a fazer é pegar o conteúdo do e-mail através de script padrão de entrada, então nós podemos processar o e-mail como um texto.
- <? Php
- ?>
Com estas simples duas linhas de código em nosso script, vamos enviar e-mail de conteúdo. Agora nós apenas processá-lo. Podemos fazê-lo linha por linha sobre o nosso próprio ou confiar em qualquer biblioteca. Eu uso Mail_mimeDecode de Pêra . A vantagem desta biblioteca é que também podemos obter o texto de anexos de e-mail.
- <? Php
- 'include_bodies' ] = true ; Params ['include_bodies'] $ = true;
- 'decode_bodies' ] = true ; Params ['decode_bodies'] $ = true;
- 'decode_headers' ] = true ; Params ['decode_headers'] $ = true;
- 'input' ] = $email ; ['Input' Params] = $ email;
- ( $params ) ; Estrutura $ = Mail_mimeDecode: decode ($ params);
- ( trim ( $structure -> headers [ 'from' ] ) ) ; De $ = addslashes ( trim ($ estrutura - headers> ['a partir de']));
- [ 1 ] ; Nome = $ $ pp [1];
- ?>
Então, já podemos processar o e-mail e tomar decisões que considerem adequado. Nós inseri-lo em um banco de dados, lançamento de outros processos automáticos, envio de alertas SMS ... o que aconteceu conosco.
Estudos de Caso
A questão-chave, depois de ver a teoria, por que este me servir?. Proponho dois pedidos que eu fiz.
Sistema de Apoio
O bilhete sistema de apoio comum. No assunto do email irá arrastar o identificador do ticket, por exemplo, [# 123 445]. Vamos ter de rever o caso e verificar se a pré-padrão aparece. Se não estão enfrentando um novo bilhete e inserir os dados no nosso banco de dados, caso contrário, é uma resposta a um incidente anterior e que vamos ter o identificador. Simples certo?. Podemos ainda acrescentar que os nossos arquivos indicendias podem entrar no e-mail.
Enviando arquivos do telefone
O segundo exemplo é semelhante ao anterior tecnicamente, mas conceitualmente distintos. A maioria dos telefones (exceto os da parte alta) não é possível enviar arquivos de formas wap (<input type="submit"). A alternativa é que o usuário envia um e-mail ou MMS (a maioria das operadoras permitem o envio de endereços de e-mail) com seus arquivos. Nosso script irá processar o conteúdo de correspondência recebida, decodificar os arquivos e tratada adequadamente.
Dois exemplos simples de como usar e-mail para automatizar tarefas, mas como eu disse, nós poderíamos fazer tudo o que você pode pensar, a partir do envio de um SMS de alerta para até reiniciar o servidor ou lançar qualquer outra tarefa.










