* From: Eban.W : メール更新の設定 [#m7458a80] -投稿者: [[GORRY]] -投稿日: 2006-01-19 15:35:58 (木) 以下、旧掲示板より転載。 # メールで問い合わせようと思ったのですが、せっかく会議室があるので。 メール更新の設定ですが、どうも思ったように行かなくて…。 マニュアルやconfig.phのなかのコメントと、実態があっていないのではないかと思うのですが。 やりたいことは、特定の複数アドレスからのみ、更新を受け付けるようにすること。 config.phのコメントでは、 # メール更新で受け取るメールの発信先メールアドレス (recvmail.pl) # この文字列を含むメールアドレスで発信されたメールのみ更新対象とする # 複数指定するときは","で区切る。 # 空("")ならすべてのメールが対象となる。 となってます。 このコメントから判断して、 ・カンマ区切りで複数アドレス指定可能 ・指定文字列と部分一致で比較される と理解しました。 で、実際のrecvmail.plでのFromアドレス比較部分は、 if ( $line =~ m/[Ff][Rr][Oo][Mm]:[ \t]*${MAILFROM}/ ) { ということで、$MAILFROMの全体の完全一致じゃないと、NGになるように思います。 私の使うメールアドレスがすべて 'ebanw@' ではじまっているので、これだけで指定すればうまくいくかと思いきや、、、ThunderbirdはFromにご丁寧にユーザー名までつけてくれるので失敗でした(^^; コメントに書かれているとおりの機能を実現するとしたら、From:を比較し、一致したらさらに$MAILFROMをカンマごとに分解して、そのうちのどれかが含まれるかどうかというチェックをするという感じでしょうか。 # perlが書けない人なので、どう直せばいいのかまでは言えなくて申し訳ないですが…。 ---- **Re: From: Eban.W : メール更新の設定 [#t010d372] >[[GORRY]] (2006-01-19 15:52:53 (木))~ ~ 以下、旧掲示板より転載。 1時間でperlを勉強して書いてみました。こんなもんでいかがでしょう。 if ( $line =~ m/[Ff][Rr][Oo][Mm]:[ \t]/ ) { if ( ! $MAILFROM ){ print "--- Accept mail From.\n"; $ok2 = 1; } else { $mfrom = sprintf("$MAILFROM,"); while ( ($sep = index( $mfrom, ',' ) ) > 0 ){ $from = substr ( $mfrom , 0 , $sep); if ( $line =~ $from ){ print "--- Accept mail From.\n"; $ok2 = 1; last; } substr ( $mfrom, 0, $sep+1 ) = ""; } } } // #article * [<<[[GNSboard]]へ戻る] [#dbfcfcc6]