summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--fml/etc/default_config.cf.ja9
-rw-r--r--fml/etc/defaults/header.cf.ja7
-rw-r--r--fml/lib/FML/Header.pm13
-rw-r--r--fml/lib/FML/Process/Distribute.pm1
-rw-r--r--fml/lib/FML/Process/Flow.pm4
-rw-r--r--fml/lib/FML/Process/Kernel.pm18
6 files changed, 37 insertions, 15 deletions
diff --git a/fml/etc/default_config.cf.ja b/fml/etc/default_config.cf.ja
index c2eca64f..9fd75d55 100644
--- a/fml/etc/default_config.cf.ja
+++ b/fml/etc/default_config.cf.ja
@@ -108,10 +108,9 @@ use_header_rewrite = yes
use_header_check = yes
-
-header_check_rules = validate_message_id
- verify_unique_x_ml_info
- verify_unique_list_post
+header_check_rules = verify_message_id_uniqueness
+ verify_x_ml_info_uniqueness
+ verify_list_post_uniqueness
# もちろん”記事”に対してのものだ(自明?)
# article_header_rewrite_rules とかの方がよいか?
@@ -168,7 +167,7 @@ use_log = yes
# logfile
# XXX 特別な使い方として log.%Y%m%d とかくと log.20000101 のように
# 展開される。これは、POSIX::strftime() を使っている。
-log_file = $ml_home_dir/log.%Y%m
+log_file = $ml_home_dir/log
# type of logging
# value: file / syslog
diff --git a/fml/etc/defaults/header.cf.ja b/fml/etc/defaults/header.cf.ja
index 4a4814b7..68f36482 100644
--- a/fml/etc/defaults/header.cf.ja
+++ b/fml/etc/defaults/header.cf.ja
@@ -4,10 +4,9 @@ use_header_rewrite = yes
use_header_check = yes
-
-header_check_rules = validate_message_id
- verify_unique_x_ml_info
- verify_unique_list_post
+header_check_rules = verify_message_id_uniqueness
+ verify_x_ml_info_uniqueness
+ verify_list_post_uniqueness
# もちろん”記事”に対してのものだ(自明?)
# article_header_rewrite_rules とかの方がよいか?
diff --git a/fml/lib/FML/Header.pm b/fml/lib/FML/Header.pm
index a8087601..b1c2b742 100644
--- a/fml/lib/FML/Header.pm
+++ b/fml/lib/FML/Header.pm
@@ -35,7 +35,7 @@ use Mail::Header;
use FML::Log qw(Log);
require Exporter;
-@ISA = qw(Exporter Mail::Header);
+@ISA = qw(Mail::Header Exporter);
sub new
@@ -151,10 +151,13 @@ sub rewrite_subject_tag
my ($header, $config, $args) = @_;
my $pkg = "FML::Header::Subject";
- eval qq{ require $pkg}; $pkg->import();
-
- # subject tag
- $pkg->rewrite_subject_tag($header, $config, $args);
+ eval qq{ require $pkg; $pkg->import();};
+ unless ($@) {
+ $pkg->rewrite_subject_tag($header, $config, $args);
+ }
+ else {
+ Log("Error: cannot load $pkg");
+ }
}
diff --git a/fml/lib/FML/Process/Distribute.pm b/fml/lib/FML/Process/Distribute.pm
index 2652386a..c8568544 100644
--- a/fml/lib/FML/Process/Distribute.pm
+++ b/fml/lib/FML/Process/Distribute.pm
@@ -58,6 +58,7 @@ sub verify_request
{
my ($curproc, $args) = @_;
$curproc->verify_sender_credential();
+ $curproc->simple_loop_check();
}
diff --git a/fml/lib/FML/Process/Flow.pm b/fml/lib/FML/Process/Flow.pm
index e01bddb2..d88d11d0 100644
--- a/fml/lib/FML/Process/Flow.pm
+++ b/fml/lib/FML/Process/Flow.pm
@@ -69,7 +69,9 @@ sub ProcessStart
# e.g. parse the incoming message (e.g. STDIN)
$process->prepare($args);
- # validate the request e.g. permit post from the sender ...
+ # validate the request, for example,
+ # permit post from the sender,
+ # check the mail loop or not ...
$process->verify_request($args);
# start main transaction
diff --git a/fml/lib/FML/Process/Kernel.pm b/fml/lib/FML/Process/Kernel.pm
index 2fe7ded3..83110fde 100644
--- a/fml/lib/FML/Process/Kernel.pm
+++ b/fml/lib/FML/Process/Kernel.pm
@@ -197,6 +197,24 @@ sub sender_is_member
}
+sub simple_loop_check
+{
+ my ($curproc, $args) = @_;
+ my $config = $curproc->{ config };
+ my $r_msg = $curproc->{ incoming_message };
+ my $header = $r_msg->{ header };
+
+ for my $rule (split(/\s+/, $config->{ header_check_rules })) {
+ if ($header->can($rule)) {
+ $header->$rule($config, $args);
+ }
+ else {
+ Log("header->${rule}() is undefined");
+ }
+ }
+}
+
+
# fml5::init_main() routine
sub load_config_files
{