質問

カスタムメール転送を試みています。 #1 QMailを使用している共有サーバー、およびオプションでProcMailにいます。

私が達成しようとしているのは、スケジュールに基づいて、1つのアドレスのカスタムメール転送です。たとえば、平日に取り組んでいる従業員のスケジュールがあり、今日機能しているランダムな従業員のメールアドレスを選択するPHPスクリプトがあります。

そこで、私はProcmailでそのスクリプトを呼び出して、フォワードラインに結果(これは単一のメールアドレスです)を出力しようとしています。

例:

#Something
LOGFILE=/usr/home/myname/procmail-log
VERBOSE=yes
EXITCODE=99
MAILDIR=/usr/boxes/myname
DEFAULT=/usr/boxes/myname/mybox
SHELL=/bin/sh
MYVAR=$(php -q /usr/home/myname/testemail/emailtester.php)

:0
! $MYVAR

これは機能していません。まったく。私も試しました:

MYVAR=`php /usr/home/myname/testemail/emailtester.php`

単にそれを前線に配管するだけでなく:

:0
! |php /usr/home/myname/testemail/emailtester.php

私はここで完全に自分の要素から外れています...私はProcmailを使用しようとさえしようとしました、そして、私はQmailから電子メール全体をPHPスクリプトにパイプしました。ヘッダーは通常の前方のように無傷のままである必要があり、それはPHPで困難であり、私の範囲を少し超えていることが証明されました。

Perlでこれをスクリプト化しようとすることもできますが、これは一度も使用したことがありませんが、Webインターフェイスから、または少なくともユーザーフレンドリーな方法で管理可能である必要があります。

この時点で支援や提案は高く評価されます、ありがとう

編集:

まあ、コメントにコードを入れることができないので、ここで編集します。

これを私のログで取得します:

Folder: /usr/local/bin/php /usr/home/idnani/testemail/emailtester.ph     1679
"rocmail: Executing "/usr/local/bin/php,/usr/home/idnani/testemail/emailtester.php
Could not open input file: /usr/home/idnani/testemail/emailtester.php

私が使用するとき:0fw私は取得します:

"rocmail: Executing "/usr/local/bin/php,/usr/home/idnani/testemail/emailtester.php
Could not open input file: /usr/home/idnani/testemail/emailtester.php
procmail: [69907] Thu Jun 16 14:04:17 2011
procmail: Program failure (1) of "/usr/local/bin/php"
procmail: Rescue of unfiltered data succeeded

編集:それを理解しました!

多くの試行錯誤の後に正しい方法を見つけました。

パイプをすべて使用しないでください、そしてあなたは必要です!フォワードシンボル:

最終規則:

:0
! `/usr/local/bin/php -f $HOME/emailtest/emailtester.php`

とてもシンプルです...私は少し怒っているので、これを理解するのに何時間もかかりました。正しい方向に私を向けてくれてありがとう!

役に立ちましたか?

解決 3

多くの試行錯誤の後に正しい方法を見つけました。

パイプをすべて使用しないでください、そしてあなたは必要です!フォワードシンボル:

このルールは、PHPスクリプトに1つの電子メールを尋ねてから、そのメールに転送することです。最終規則:

:0
! `/usr/local/bin/php -f $HOME/emailtest/emailtester.php`

とてもシンプルです...私は少し怒っているので、これを理解するのに何時間もかかりました。正しい方向に私を向けてくれてありがとう!

マイケルの答えは、それが機能するはずのように見えます、そして多分それは別の状況の下で起こるでしょうか?私はそれを手に入れることができませんでした、だから私はこれに答えています。

新しい編集:

注:STDINを介してPHPの電子メール全体を取得できます

注:最初の行でこのようなスクリプト自体に/usr/local/bin/phpを配置できます。

#!/usr/local/bin/php

他のヒント

あなたはとても近くでした...あなたはそれをパイプする必要があります それなし ! 前方:

:0
|/usr/bin/php /usr/home/myname/testemail/emailtester.php

編集 Procmail'sの場合に備えて、PHPへのフルパスに入れました $PATH 不完全です。実際のPHPパスが何であれ、それを変更します。

電子メールループを避けるために、私はこのようなことをしました:

PATH=/usr/local/bin:/bin:/usr/bin
MAILDIR=$HOME/Mail
DEFAULT=$HOME/Mail/inbox
LOGFILE=$HOME/procmail.`date +%Y-%m`.log
SHELL=/usr/bin/ksh

MY_XLOOP='X-Loop: emailtester.php'

:0
* ! ^$MY_XLOOP
{
    # add a header
    # 'f' = filter: continue processing results of program
    # 'w' = wait for program to return
    # 'h' = pass message headers to program
    :0fwh
    | formail -A "$MY_XLOOP"

    # then forward the message
    # 'c' = send a copy to recipient and continue processing
    :0c
    | php /usr/home/myname/testemail/emailtester.php
}

# if we get here, then the message has an X-Loop header.
# let it fall into $DEFAULT
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top