Sembra che qualcun altro abbia già risposto, ma ho pensato di scrivere una risposta specifica per te.
Userei procmail e userei una ricetta nel tuo .procmailrc simile a questa:
#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
Avrai anche bisogno di una ricetta predefinita in fondo per indirizzare la posta nella tua maildir.
È possibile utilizzare /etc/aliases per reindirizzare la posta elettronica direttamente a un programma da elaborare, quindi se si desidera eseguire uno script per elaborare tutta la posta a [email protected], inserire questa riga in /etc/aliases (funziona per postfix, sendmail, ecc.):
test: "|/usr/local/bin/processtestemail.php"
Quindi eseguire "newaliases" per aggiornare il database.
Quindi assicurati di avere un programma funzionante in /usr/local/bin chiamato processtestemail.php.
Può essere scritto in php, bash, perl, python, qualunque cosa tu voglia e qualunque cosa tu abbia per un interprete. Potresti persino lanciare un binario compilato scritto in c/c++, ecc.
Ci sono stati suggerimenti per l'utilizzo di procmail sopra, è un ottimo prodotto, ma onestamente quella che ho presentato è la soluzione più veloce e semplice e funziona in più versioni di *NIX con più programmi di posta rispetto a qualsiasi altra.
Inoltre, nessuna delle altre risposte ti dice davvero come elaborare il messaggio in entrata e quindi, nel tuo script, leggi l'input dallo standard "in" (stdin) e poi analizzi quei dati usando qualsiasi algoritmo potresti dover elaborare correttamente come segue:
<?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:facciamo tutto in grande o in piccolo tekops.com
Ecco un buon howto sull'elaborazione della posta in arrivo. La cosa più semplice da fare è usare il .forward
meccanismo come descritto, per convogliare un messaggio attraverso uno script. Crea un file mode 600 .forward nella home directory dell'utente e inserisci una pipe in uno script al suo interno:
"|$HOME/bin/your.program -and some arguments"
Tuttavia, dovresti considerare l'uso di procmail invece, come spiegano i dettagli dell'howto. Procmail ti offre molti vantaggi, come la registrazione e l'elaborazione della posta più sofisticate. Ecco un semplice esempio di .procmailrc (di nuovo dallo stesso howto):
:0
* !^FROM_DAEMON
* !^FROM_MAILER
* !^X-Loop: [email protected]
| $HOME/bin/my.script
che ha alcune caratteristiche interessanti, come la capacità di rilevare e fermare i loop di posta.