以下の例の場合、題名が「至急」で始まるメールが到着すると、example@ezweb.ne.jp 宛に通知メールが送信されます。 -.mailfilterに次のように記述します。 ---( cc "| ../../prog/info_mail.pl example@ezweb.ne.jp" ---) -/home/USERNAME/prog/ に、info_mail.plという名前で次の例のようなperlプログラムを用意します。 -パーミッションは 700 に、文字コードはEUC、LF改行として下さい。 ---( #!/usr/bin/perl require "jcode.pl"; use MIME::Words qw(:all); $sendmail = '/usr/sbin/sendmail'; #===================================================== # DECODEする関数 #===================================================== sub DecodeFld($) { my($sBuff) = @_; my($sRes, $sWk); chomp($sBuff); foreach $sWk (decode_mimewords( $sBuff, )){ ($sTxt, $sCode) = @$sWk; $sRes .= $sTxt; } return $sRes; } #===================================================== # 本体開始 #===================================================== $subject = ''; $mail_to = ''; $mail_from = ''; $flg_subject = 0; $flg_read_end = 0; $flg_go = 0; #ヘッダ部から情報抽出 while () { #ヘッダ情報抽出終了後、パイプを空送りしてSTDINを終了させる if($flg_read_end){ next; } #ヘッダ部の終了チェック if(length == 1){ $flg_read_end = 1; next; } #Subjectの取得 if($flg_subject == 1){ if(/^[ \t](.+)/){ $subject .= $1; } else{ $flg_subject = 2; } } elsif($flg_subject == 0 && /^Subject: (.+)/){ $subject = $1; $flg_subject = 1; } #FromやTo、その他フラグの取得 if(/^From: .*<(.+)>.*/){ $mail_from = $1; } elsif(/^From: (.+)/){ $mail_from = $1; } elsif(/^To: .*<(.+)>.*/){ $mail_to = $1; } elsif(/^To: (.+)/){ $mail_to = $1; } } #Subjectのデコード $subject = &DecodeFld("$subject"); #Subject欄デコード(JISコードのまま) #文字コード変換(JIS→EUC) &jcode::convert(\$subject, "euc"); #通知メール対象チェック if($subject =~ /至急.*/){ $flg_go = 1; } #通知メール送信 if($flg_go == 1){ open(MAIL, "| $sendmail -t") or $err = 1; if ($err == 0) { $mailbuff = ''; $mailbuff .= "To: $ARGV[0]\n"; $mailbuff .= 'From: new-mail-info@example.com'."\n"; $mailbuff .= 'Subject: New Mail Arrived.'."\n"; $mailbuff .= "\n"; $mailbuff .= 'メールが到着しました。'."\n"; $mailbuff .= "\n"; $mailbuff .= '題:'."$subject\n"; $mailbuff .= "\n"; $mailbuff .= '発:'."$mail_from\n"; $mailbuff .= '宛:'."$mail_to\n"; $mailbuff .= "\n\n.\n"; &jcode::convert(\$mailbuff, "jis"); print MAIL $mailbuff; close(MAIL); } } ---)