GNU/Linux >> Linux の 問題 >  >> Linux

メール サーバーにメールが届いたときにスクリプトを実行する方法は? (デビアン)

他の誰かがすでにこれに回答しているようですが、私はあなたのために具体的な回答を書き留めておきたいと思いました.

私なら procmail を使用し、.procmailrc で次のようなレシピを使用します:

#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

また、メールを maildir に送るために、下部にデフォルトのレシピも必要です。


/etc/aliases を使用して、電子メールを処理するプログラムに直接パイプすることができます。そのため、すべての電子メールを [email protected] に処理するスクリプトを実行する場合は、この行を /etc/aliases に入れます (postfix、 sendmail など):

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

次に、「newaliases」を実行してデータベースを更新します。

次に、/usr/local/bin に processtestemail.php という名前の作業プログラムがあることを確認してください。

これは、php、bash、perl、python など、必要なものは何でも、インターピーター用に持っているものは何でも記述できます。 c/c++ などで書かれたコンパイル済みバイナリを起動することもできます。

上記の procmail の使用に関する提案がありました。これは素晴らしい製品ですが、正直なところ、私が提示したのは最も速くて簡単なソリューションであり、他のどのメーラーよりも多くのバージョンの *NIX で動作します。

あまりにも、他の回答はインバウンドメッセージの処理方法を実際に教えてくれるわけではないので、スクリプトで標準の「in」(stdin)から入力を読み取り、適切に処理するために必要なアルゴリズムを使用してそのデータを解析します。以下:

<?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:規模の大小を問わずすべて対応しますtekops.com


受信メールの処理に関する適切なハウツーを次に示します。 .forward を使用するのが最も簡単です。 説明されているように、スクリプトを介してメッセージをパイプするメカニズム。ユーザーのホーム ディレクトリにモード 600 の .forward ファイルを作成し、その中にスクリプトへのパイプを配置します。

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

ただし、ハウツーの詳細にあるように、代わりに procmail の使用を検討する必要があります。 Procmail には、より洗練されたロギングやメール処理など、多くの利点があります。簡単な .procmailrc の例を次に示します (これも同じハウツーから):

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

これには、メール ループを検出して停止する機能など、いくつかの優れた機能があります。


Linux
  1. Debian –64ビットのDebian/ ubuntuで32ビットのプログラムを実行する方法は?

  2. 「find-exec{};?」を実行する方法

  3. Rsync プロセスをバックグラウンドで実行する方法

  1. DebianクラウドサーバーにLocateをインストールする方法

  2. Golang Web サーバーをバックグラウンドで実行するにはどうすればよいですか?

  3. Debian サーバーで受信した電子メールを読む方法

  1. スクリプトを実行する方法??

  2. ファイルまたはディレクトリが変更されたときにシェルスクリプトを実行する方法は?

  3. サーバーでスケジューラを使用してノードjsスクリプトを自動的に実行するにはどうすればよいですか