GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana cara menjalankan skrip ketika surat tiba di server surat? (Debian)

Sepertinya orang lain telah menjawab ini, tetapi saya pikir saya akan memberikan jawaban khusus untuk Anda.

Saya akan menggunakan procmail dan menggunakan resep di .procmailrc Anda mirip dengan ini:

#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

Anda juga memerlukan resep default di bagian bawah untuk mengarahkan email ke direktori mail Anda.


Anda dapat menggunakan /etc/aliases untuk mengirim email langsung ke program untuk diproses, jadi jika Anda ingin menjalankan skrip untuk memproses semua email ke [email protected] Anda akan meletakkan baris ini di /etc/aliases (berfungsi untuk postfix, sendmail, dll.):

test:              "|/usr/local/bin/processtestemail.php"

Kemudian jalankan "newaliases" untuk memperbarui basis data.

Kemudian pastikan Anda memiliki program yang berfungsi di /usr/local/bin bernama processtemail.php.

Itu dapat ditulis dalam php, bash, perl, python, apa pun yang Anda inginkan dan apa pun yang Anda miliki untuk seorang interpeter. Anda bahkan dapat meluncurkan biner terkompilasi yang ditulis dalam c/c++, dll.

Ada saran untuk menggunakan procmail di atas, ini adalah produk yang hebat, tetapi sejujurnya apa yang saya sajikan adalah solusi tercepat dan paling sederhana dan berfungsi di lebih banyak versi *NIX dengan lebih banyak mailer daripada yang lain.

Juga, tidak ada jawaban lain yang benar-benar memberi tahu Anda cara memproses pesan masuk dan Anda akan melakukannya, dalam skrip Anda membaca input dari standar "in" (stdin) dan kemudian mem-parsing data itu menggunakan algoritme apa pun yang mungkin Anda miliki untuk memprosesnya dengan benar sebagai berikut:

<?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:kami melakukan semuanya, besar atau keciltekops.com


Inilah cara yang bagus untuk memproses surat masuk. Hal paling sederhana yang harus dilakukan adalah menggunakan .forward mekanisme seperti yang dijelaskan, untuk menyalurkan pesan melalui skrip. Buat file mode 600 .forward di direktori home pengguna dan letakkan pipa ke skrip di dalamnya:

"|$HOME/bin/your.program -and some arguments" 

Namun, Anda harus melihat menggunakan procmail sebagai gantinya, seperti detail howto. Procmail memberi Anda banyak keuntungan, seperti pencatatan dan pemrosesan surat yang lebih canggih. Berikut adalah contoh .procmailrc sederhana (sekali lagi dari howto yang sama):

:0
* !^FROM_DAEMON
* !^FROM_MAILER
* !^X-Loop: [email protected]
| $HOME/bin/my.script 

yang memiliki beberapa fitur bagus, seperti kemampuan untuk mendeteksi dan menghentikan loop email.


Linux
  1. Debian – Bagaimana Cara Menjalankan Program 32-bit Pada Debian/ubuntu 64-bit?

  2. Bagaimana Menjalankan “find -exec {};?

  3. Bagaimana Menjalankan Skrip??

  1. Bagaimana menjalankan proses Rsync di latar belakang

  2. Bagaimana cara menjalankan server web Golang saya di latar belakang?

  3. Cara membaca email yang diterima di server Debian

  1. Cara Menginstal Lokasi di Server Cloud Debian

  2. Bagaimana cara menjalankan skrip Shell ketika file atau direktori berubah?

  3. Bagaimana saya bisa menjalankan skrip node js saya secara otomatis menggunakan penjadwal di server