Zdá se, že na to již odpověděl někdo jiný, ale myslel jsem, že vám napíšu konkrétní odpověď.
Použil bych procmail a použil bych recept ve vašem .procmailrc podobný tomuto:
#turn this off when you're finished testing :)
VERBOSE=on
LOGFILE=/home/user/procmail.log
:0 c #the c means continue on after this recipe is parsed
| /path/to/your/script
Budete také potřebovat výchozí recept v dolní části pro přesměrování pošty do vašeho maildir.
Můžete použít /etc/aliases k přenosu e-mailů přímo do programu ke zpracování, takže pokud byste chtěli spustit skript pro zpracování všech e-mailů na [email protected], vložte tento řádek do /etc/aliases (funguje pro postfix, sendmail atd.):
test: "|/usr/local/bin/processtestemail.php"
Poté spusťte "newaliases" pro aktualizaci databáze.
Pak se ujistěte, že máte funkční program v /usr/local/bin s názvem processtestemail.php.
Může být napsán v php, bash, perl, python, cokoli chcete a co máte pro tlumočníka. Můžete dokonce spustit zkompilovaný binární soubor napsaný v c/c++ atd.
Výše byly návrhy na použití procmailu, je to skvělý produkt, ale upřímně řečeno, to, co jsem představil, je nejrychlejší a nejjednodušší řešení a funguje ve více verzích *NIX s více mailery než kterýkoli jiný.
Žádná z dalších odpovědí vám také ve skutečnosti neříká, jak zpracovat příchozí zprávu, a tak byste ve svém skriptu načetli vstup ze standardního „in“ (stdin) a poté tato data analyzovali pomocí jakýchkoli algoritmů, které budete muset zpracovat správně jako následuje:
<?php
$fd = fopen('php://stdin','r');
if ($fd) then
{
$email = ''; // initialize buffer
while (!feof ($fd)) // read as long as message
{
$rawemail .= fread($fd,1024); // read up to 1K at a time
ProcessTheMessageChunk($rawEmail);
}
fclose($fd); // done so close file handle
$fd=NULL; // clear file handle
}
else
{
print("ERROR: Could could open stdin...");
};
/*
** Now write your code to fill in the function ProcessMessageChunk()
** and then process the data you have collected altogether using
** that function/subroutine.
*/
?>
ThanksSA Experts for Hire:děláme to všechno ve velkém nebo v smalltekops.com
Zde je dobrý návod na zpracování příchozí pošty. Nejjednodušší věc, kterou můžete udělat, je použít .forward
mechanismus, jak je popsán, k přenosu zprávy prostřednictvím skriptu. Vytvořte soubor .forward režimu 600 v domovském adresáři uživatele a vložte do něj kanál pro skript:
"|$HOME/bin/your.program -and some arguments"
Místo toho byste se však měli podívat na použití procmailu, protože to jsou podrobnosti o tom, jak na to. Procmail vám poskytuje spoustu výhod, jako je sofistikovanější protokolování a zpracování pošty. Zde je jednoduchý příklad .procmailrc (opět ze stejného návodu):
:0
* !^FROM_DAEMON
* !^FROM_MAILER
* !^X-Loop: [email protected]
| $HOME/bin/my.script
který má některé pěkné funkce, jako je schopnost detekovat a zastavit zacyklení pošty.