[PREVIOUS CHAPTER] [______TOC_______]

8 examples

    8.1	site*ph sample (mnews ML)

    # コマンドメールの返送に付くフッタのフェースマーク
    $FACE_MARK     = '(^_^)/~';

    # たとえ空メールでも配布する
    $AUTO_REGISTRATION_LINES_LIMIT = -1;

    # ヘッダの「X-何たら: 」を素通しにする
    $SUPERFLUOUS_HEADERS = 1;	# preserve more header fields

    # MIME に対応する
    $USE_LIBMIME   = 1;		# when use MIME Extension in libMIME.pl

    # spool に MIME デコードしてから書き込む
    $MIME_DECODED_ARTICLE = 1;	# do MIME decoding, then spool

    # コマンドメールであるかどうかを確認する行数
    $COMMAND_CHECK_LIMIT = 1;	# the first 3 lines is checked for
     				# mistakes whether the command mode or not?
     				# at &Parsing in fml.pl,

    # コマンドで単なるシンタックスエラーの警告
    $USE_WARNING = 1;		# コマンドで単なるシンタックスエラーの警告

    # まとめ送りのとき mh/burst 用にする
    $USE_RFC934    = 1;		# inMatomeokuri, use mh/burst for the split

    # パス名を変更(更新のとき =* をコピーすれば良い)
    $OBJECTIVE_FILE = "$DIR/=objective"; 	# objective file
    $GUIDE_FILE    = "$DIR/=guide";		# the guide file of our Mailing List
    $HELP_FILE     = "$DIR/=help";		# the help file for useful commands
    $DENY_FILE     = "$DIR/=deny";		# attention to illegal access
    $FAIL_FILE     = "$DIR/=fail";		# attention to illegal access
    $WELCOME_FILE  = "$DIR/=welcome";	# could be "$DIR/welcome"

    # 気分的に log とは分離した
    $MGET_LOGFILE  = "$DIR/log_mget";	# log file for mget routine

    # ちょっとした変更(特に効果はない)
    $Subject       = '(No Subject in original)';	# Subject field

    # SMTP コネクションを張って HELO のときに localhost と名乗る
    $Envelope{'macro:s'} = 'localhost';

    # 配送レベルを bulk にする
    $PRECEDENCE     = 'bulk';

    # ローテーションするログの指定
    @NEWSYSLOG_FILES = ("$MSEND_RC.bak", "$MEMBER_LIST.bak", "$ACTIVE_LIST.bak",
                        "${LOGFILE}_archive", "${LOGFILE}_matome");

    # スキップする「X-何たら: 」フィールド
    $SKIP_FIELDS = '|X-Nsubject|X-Confirm-Reading-To';

    # スタートフック
    $START_HOOK = q#
         # コントロールメールアドレスか?
        if ($CONTROL_ADDRESS && ($Envelope{'mode:chk'} =~ /$CONTROL_ADDRESS/i)) {
             # 新規登録か?
            if ($Envelope{'Body'} =~ /subscribe/io
                  && $Envelope{'Body'} !~ /unsubscribe/io) {
                &use('utils');
                &AutoRegist(*Envelope);
                $DO_NOTHING = 1;
            }
            $Envelope{'mode:uip'} = 'on'
         # コマンドモードか?
         # (この ML では本体の方でコマンドメールを受け付けていないため)
        } elsif ($Envelope{'mode:uip'}) {
            &Logging("Unsupport Command Mail");
            &SendFile($From_address,
                      "Unsupport Command Mail this Address $ML_FN", $FAIL_FILE);
            $DO_NOTHING = 1;
         # 普通に配送する
        } else {
            &Distribute;
            $DO_NOTHING = 1;
        }
    #;

    # SMTP 開始時のフック
    $SMTP_OPEN_HOOK = q#
         # 元メールの To: フィールドを保存
        $Envelope{'h:To:'}       = $Envelope{'h:to:'}
              || $Envelope{'h:apparently-to:'} || "$MAIL_LIST $ML_FN";
         # Reply-To: を強制的に書き換える
        $Envelope{'h:Reply-To:'} = $Envelope{'h:reply-to:'} = $MAIL_LIST;
         # MIME なら Subject: をデコードする
        if ($USE_LIBMIME && $Envelope{'MIME'}) {
            &use('MIME');
            $Envelope{'h:Subject:'} = &DecodeMimeStrings($Envelope{'h:Subject:'});
        }
    #;

    # ヘッダに追加するフック
    $HEADER_ADD_HOOK = q#
         # X-Nsubject: フィールドの処理
         # (この ML では X-Nsubject: も Subject: と同じ処理を受ける)
        if ($Envelope{'x-nsubject:'}) {
            if ($STRIP_BRACKETS) {
                $_ = $Envelope{'x-nsubject:'};
                local($r)  = 10;

                s/\[$BRACKET:\d+\]\s*//g;

                while (s/Re:\s*Re:\s*/Re: /gi && $r-- > 0) { ;}

                $Envelope{'x-nsubject:'} = $_;
            }
            if ($USE_LIBMIME && $Envelope{'MIME'}) {
                &use('MIME');
                $Envelope{'x-nsubject:'} =
                      &DecodeMimeStrings($Envelope{'x-nsubject:'});
            }
            $body .= "X-Nsubject: [$BRACKET:$ID] $Envelope{'x-nsubject:'}\n";
        }
    #;

    # libtraffic のフック(試験的設定)
    $TRF_NAME_HOOK = q#
        $name =~ s/umura@solan\.chu/umura@nn.solan./oi;
    #;