※ ChatGPTを利用し、要約された質問です(原文:Postfixでメールを受信したらPerlスクリプトを実行したい)
Postfixでメールを受信したらPerlスクリプトを実行したい
このQ&Aのポイント
Solaris10で構築したサーバにて、ユーザー宛のメールを受信したらPerlで記述したスクリプトを実行する方法について教えてください。
手順1と手順2の方法を試しましたが、スクリプトが実行されませんでした。
main.cfやmaster.cfに追加の設定が必要なのでしょうか?また、環境はSolaris10(Sparc)でMTAはpostfix-2.5.3です。
Postfixでメールを受信したらPerlスクリプトを実行したい
Solaris10で構築したサーバにて、ユーザー宛のメールを受信したら
Perlで記述したスクリプトを実行したい為、下に記載の手順1及び2の
方法で受信メールを渡すパイプを記述したのですがスクリプトが実行されませんでした。
手順1,2共に他のメールアドレスへ転送させた場合、メールの転送は正常に行われました。
メールを受信したらPerlスクリプトを実行するには、どのように設定すればよいのでしょうか?
main.cfやmaster.cfに更なる設定の記述が必要なのでしょうか?
主な環境は下記の様になっているのですが不足がありましたら御指摘下さい。
申し訳ありませんがよろしくお願いします。
【手順1】~/.forwardによるスクリプト起動
(1)~/.forwardに、下記の様な記述をしましたがスクリプト起動せず。
(.forwardの記述)
(パターン1) \username,"|/home/username/test.pl"
(パターン2) "|/home/username/test.pl"
(パターン3) |"/home/username/test.pl"
(パターン4) "|/usr/local/bin/perl /home/username/test.pl"
※下記のような転送は処理されました
\username,username@test.ne.jp
【手順2】main.cf修正によるスクリプト起動
(1)/usr/local/etc/postfix/main.cfに下記行を作成
alias_maps = hash:/usr/local/etc/postfix/aliases,hash:/usr/local/etc/postfix/usr_alias
(usr_aliasの記述) username: :include:/home/username/include
(includeの記述) |"/home/username/test.pl"
他に上記.forwardの記述の4パターンを試しましたが全てスクリプト起動せずでした。
【サーバ環境】
OS:Solaris10(Sparc)
MTA:postfix-2.5.3
【test.plの内容】
#!/usr/local/bin/perl
open(DATA_FILE, "> test_log.txt");
print DATA_FILE "Test_OK!!!\n";
close(DATA_FILE);
※備考
・保存場所:/home/username/test.pl
・パーミション:test.plと/home/username共に777
(オーナはusername)
【main.cfについて】
念のために
allow_mail_to_files = alias,forward,include
allow_mail_to_commands = alias,forward,include
の記述を追加しています。
お礼
>起動できないと判断したのはどういう事から? >その判断の仕方が間違っている可能性もあります。 テストスクリプトでファイルが作成されないために 起動していないと判断していました。 ご指摘の通り、誤った判断をしていました。 syslogを見るとテストスクリプトにメールが渡されていることが確認出来ました。 とあるホームページでpostfixとsendmailで パイプ使用時にカレントディレクトリが異なるとの書き込みを見て open(DATA_FILE, "> test_log.txt");を open(DATA_FILE, "> /home/username/test_log.txt"); とフルパスで指定したところファイルが作成されました。 本当に助かりました。ありがとうございます。