{"id":934,"date":"2013-09-27T07:35:26","date_gmt":"2013-09-26T22:35:26","guid":{"rendered":"http:\/\/www.nightmare-yk.com\/?p=934"},"modified":"2016-02-24T01:54:30","modified_gmt":"2016-02-23T16:54:30","slug":"fml%e3%83%a1%e3%83%bc%e3%83%aa%e3%83%b3%e3%82%b0%e3%83%aa%e3%82%b9%e3%83%88%e3%81%ae%e5%8b%95%e4%bd%9c%e3%81%8c%e3%81%8a%e3%81%8b%e3%81%97%e3%81%84%ef%bc%9f","status":"publish","type":"post","link":"http:\/\/www.nightmare-yk.com\/?p=934","title":{"rendered":"fml(\u30e1\u30fc\u30ea\u30f3\u30b0\u30ea\u30b9\u30c8)\u306e\u52d5\u4f5c\u304c\u304a\u304b\u3057\u3044\uff1f"},"content":{"rendered":"<p>\u30e1\u30fc\u30ea\u30f3\u30b0\u30ea\u30b9\u30c8\u30b5\u30fc\u30d0\u3068\u3057\u3066\u4ee3\u8868\u7684\u306a\u3082\u306e\u306f\u3001Mailman\u3084fml\u3001sympa\u7b49\u304c\u3042\u308a\u307e\u3059\u3002<br \/>\n\u305d\u306e\u4e2d\u306efml\u3067\u52d5\u4f5c\u304c\u304a\u304b\u3057\u3044\u90e8\u5206\u3092\u767a\u898b\u3057\u305f\u306e\u3067\u3001\u5fd8\u308c\u306a\u3044\u3088\u3046\u306b\u30e1\u30e2\u30e1\u30e2\u3006(.. )<\/p>\n<p>\u6b63\u76f4\u3001\u30af\u30ea\u30c6\u30a3\u30ab\u30eb\u306a\u3082\u306e\u304b\u305d\u3046\u3067\u306a\u3044\u304b\u3068\u8a00\u3048\u3070\u3001\u5fae\u5999\u306a\u3068\u3053\u308d\u306a\u306e\u3067\u3059\u304cf(^^;)<br \/>\n\u6240\u8b02\u3001&#8221;\u4ed5\u69d8&#8221;\u306a\u306e\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u304c(\uffe3\u0414\uffe3;)<br \/>\n\u304a\u304b\u3057\u3044\u6c17\u304c\u3059\u308b\u306e\u3067\u3002\u3002\u3002<\/p>\n<p>fml\u306f\u3001\u4e00\u5ea6\u9001\u4fe1\u3057\u305f\u30e1\u30fc\u30eb\u306emessage-ID\u3092\u8a18\u9332\u3057\u3066\u304a\u304d\u3001\u4ee5\u524d\u9001\u3063\u305f\u3053\u3068\u304c\u3042\u308b\u30e1\u30fc\u30eb\u304b\u3069\u3046\u304b\u3092message-ID\u3092\u6bd4\u8f03\u3057\u3066\u30c1\u30a7\u30c3\u30af\u3057\u307e\u3059\u3002message-ID\u304c\u540c\u3058\u30e1\u30fc\u30eb\u3092\u9001\u308d\u3046\u3068\u3059\u308b\u3068\u3001\u4ee5\u524d\u9001\u3063\u305f\u30e1\u30fc\u30eb\u3067\u3042\u308b\u3068\u5224\u65ad\u3057\u3066\u30a8\u30e9\u30fc\u3068\u306a\u308a\u3001\u300cLoop Alert:\u300d\u3068\u3044\u3046\u30ed\u30b0\u304c\u51fa\u529b\u3055\u308c\u307e\u3059\u3002<\/p>\n<p>message-ID\u306f\u30e1\u30fc\u30eb1\u901a1\u901a\u306e\u8b58\u5225\u5b50\u3067\u3042\u308a\u3001\u540c\u3058\u306b\u306a\u308b\u3053\u3068\u306f\u307e\u305a\u3042\u308a\u3048\u306a\u3044\u306e\u3067\u3059\u3002\u3067\u3059\u304c\u3001\u3084\u305f\u3089\u3068\u300cLoop Alert:\u300d\u3068\u306a\u3063\u305f\u306e\u3067\u3001\u4f55\u304b\u304c\u304a\u304b\u3057\u3044\u3002\u3067\u3001\u30e1\u30fc\u30eb\u30ed\u30b0\u3068\u3001fml\u306e\u30ad\u30e3\u30c3\u30b7\u30e5\u3092\u6bd4\u3079\u308b\u3068\u4f3c\u305f\u3088\u3046\u306amessage-ID\u304c\u3042\u308a\u307e\u3057\u305f\u3002<\/p>\n<table style=\"table-layout:fixed;\">\n<tr>\n<td>\n<div style=\"overflow-x:auto;\">\n<pre>\u30ad\u30e3\u30c3\u30b7\u30e5\u30d5\u30a1\u30a4\u30eb\u5185: JA8AAAAABIH8CgABYQABNARwAfxU@example.com\r\n\u30e1\u30fc\u30eb\u30ed\u30b0\u5185        : JA8AAAAABIH8cgABYQABNARwAfxU@example.com\r\n                                  ^<\/pre>\n<\/p><\/div>\n<\/td>\n<\/tr>\n<\/table>\n<p>&nbsp;<\/p>\n<p>\u3093\uff1fC\u306e\u5927\u6587\u5b57\u3068\u5c0f\u6587\u5b57\u304c\u9055\u3046\u3060\u3051\uff1f\u602a\u3057\u3044\u30fb\u30fb\u30fb\u5206\u304b\u3089\u306a\u3044\u306e\u3067\u3001\u5b9f\u969b\u306bmessage-ID\u3092\u6bd4\u8f03\u3057\u3066\u3044\u308b\u3068\u3053\u308d\u3092fml\u306e\u30bd\u30fc\u30b9\u304b\u3089\u78ba\u8a8d\u3057\u3066\u307f\u307e\u3057\u305f\u3002perl\u306a\u306e\u3067\u666e\u901a\u306b\u5206\u304b\u308a\u307e\u3057\u305f\u3002<\/p>\n<p>\u25c7 \/usr\/local\/fml\/fml.pl<\/p>\n<table style=\"table-layout:fixed;\">\n<tr>\n<td>\n<div style=\"overflow-x:auto;\">\n<pre>\uff5e\r\nlocal($status, $mid);\r\n\r\n# no check -&gt; \"return not looped\"\r\n$CHECK_MESSAGE_ID || return 0;\r\n\r\nlocal($mid) = $Envelope{'h:Message-Id:'};\r\n$mid =~ s\/[\\&lt;\\&gt;]\/\/g;\r\n$mid =~ s\/^\\s+\/\/;\r\n\r\n&amp;Debug(\"DupMessageIdP::($mid, $LOG_MESSAGE_ID)\") if $debug;\r\n\r\n$status = &amp;SearchDupKey($mid, $LOG_MESSAGE_ID);\r\n          ^^^^^^^^^^^^^\r\n\r\nif ($status) {\r\n    &amp;Debug(\"\\tDupMessageIdP::(DUPLICATED == LOOPED)\") if $debug;\r\n    local($s) = \"Duplicated Message-ID\";\r\n    &amp;Log(\"Loop Alert: $s\");\r\n    &amp;WarnE(\"Loop Alert: $s $ML_FN\", \"$s in &lt;$MAIL_LIST&gt;.\\n\\n\");\r\n    1;\r\n}\r\n\uff5e<\/pre>\n<\/p><\/div>\n<\/td>\n<\/tr>\n<\/table>\n<p>&nbsp;<\/p>\n<p>SearchDupKey\u306e\u95a2\u6570\u3092\u898b\u308c\u3070\u3044\u3044\u3093\u3060\u306d\uff01<\/p>\n<table style=\"table-layout:fixed;\">\n<tr>\n<td>\n<div style=\"overflow-x:auto;\">\n<pre>\uff5e\r\nsub SearchDupKey\r\n{\r\n    local($key, $file) = @_;\r\n    local($status, $i);\r\n\r\n    # 1. scan current and\r\n    if (-f $file) {\r\n        $status = &amp;Lookup($key, $file);\r\n                  ^^^^^^^\r\n    }\r\n    return $status if $status;\r\n\r\n    # 2. scan all available caches\r\n    for $i (0 .. $NEWSYSLOG_MAX) {\r\n        if ($status) {\r\n            last; # end if non null $status is returned.\r\n        }\r\n        elsif (-f \"$file.$i\") {\r\n            $status = &amp;Lookup($key, \"$file.$i\");\r\n                      ^^^^^^^\r\n        }\r\n    }\r\n    $status;\r\n}\r\n\uff5e<\/pre>\n<\/p><\/div>\n<\/td>\n<\/tr>\n<\/table>\n<p>&nbsp;<\/p>\n<p>Lookup\u306e\u95a2\u6570\u3092\u898b\u308c\u3070\u3044\u3044\u3093\u3060\u306d\uff01<\/p>\n<table style=\"table-layout:fixed;\">\n<tr>\n<td>\n<div style=\"overflow-x:auto;\">\n<pre>\uff5e\r\nsub Lookup\r\n{\r\n    local($address, $file) = @_;\r\n    local($addr, $has_special_char, $auto_registrable);\r\n\uff5e\r\n        # for high performance(Firstly special character check)\r\n        if (! $has_special_char) { next getline unless \/^$addr\/i;}\r\n\r\n        # This searching algorithm must require about N\/2, not tuned,\r\n        if (1 == &amp;AddressMatch($_, $address)) {\r\n                 ^^^^^^^^^^^^^\r\n            close(LOOKUP_TABLE);\r\n            return 1;\r\n        }\r\n    }# end of while loop;\r\n\r\n    close(LOOKUP_TABLE);\r\n    return 0;\r\n}\r\n\uff5e<\/pre>\n<\/p><\/div>\n<\/td>\n<\/tr>\n<\/table>\n<p>&nbsp;<\/p>\n<p>AddressMatch\u306e\u95a2\u6570\u3092\u898b\u308c\u3070\u3044\u3044\u3093\u3060\u306d!<\/p>\n<table style=\"table-layout:fixed;\">\n<tr>\n<td>\n<div style=\"overflow-x:auto;\">\n<pre>\uff5e\r\nsub AddressMatch\r\n{\r\n    local($addr1, $addr2) = @_;\r\n\r\n    &amp;Debug(\"   AddressMatch($addr1, $addr2)\".\r\n           \" [\\$ADDR_CHECK_MAX=$ADDR_CHECK_MAX]\\n\") if $debug_addrmatch;\r\n\r\n    # canonicalize to lower case\r\n    $addr1 =~ y\/A-Z\/a-z\/;                         \u2606\u30d3\u30f3\u30b4\r\n    $addr2 =~ y\/A-Z\/a-z\/;\r\n\uff5e\r\n}\r\n\uff5e<\/pre>\n<\/p><\/div>\n<\/td>\n<\/tr>\n<\/table>\n<p>&nbsp;<\/p>\n<p>\u30d3\u30f3\u30b4\uff01\uff01\u5927\u6587\u5b57\u3092\u5c0f\u6587\u5b57\u306b\u5909\u3048\u3066\u308b\u03a3\uff08\uffe3\u0414\uffe3;\uff09<br \/>\n\u3064\u307e\u308a\u3001\u5927\u6587\u5b57\u5c0f\u6587\u5b57\u533a\u5225\u306a\u3057\u3067\u30e1\u30fc\u30eb\u306eID\u3092\u6bd4\u8f03\u3092\u3057\u3066\u3044\u308b\u30b8\u30e3\u30de\u30a4\u30ab\u3002<br \/>\nRFC\u3067\u306f\u300c\u30e1\u30fc\u30eb\u306eID\u306f\u5927\u6587\u5b57\u5c0f\u6587\u5b57\u306e\u533a\u5225\u3092\u884c\u3046\u300d\u4e8b\u304c\u898f\u5b9a\u3067\u3059\u306e\u3067\u3001fml\u304cRFC\u306b\u6e96\u62e0\u3057\u3066\u3044\u306a\u3044\u3002\u3002\u3002\u3059\u3054\u304f\u4f3c\u305fmessage-ID\u3092\u4ed8\u3051\u308b\u30e1\u30fc\u30e9\u30fc\u3082\u30e1\u30fc\u30e9\u30fc\u3067\u3059\u304c\u3001\u3053\u308c\u306f\u3044\u3051\u306a\u3044\u3067\u3059\u3088\u306d\u30fb\u30fb\u30fb\u3002<\/p>\n<div class='wp_social_bookmarking_light'>\n            <div class=\"wsbl_facebook_like\"><div id=\"fb-root\"><\/div><fb:like href=\"http:\/\/www.nightmare-yk.com\/?p=934\" layout=\"button_count\" action=\"like\" width=\"100\" share=\"false\" show_faces=\"false\" ><\/fb:like><\/div>\n            <div class=\"wsbl_google_plus_one\"><g:plusone size=\"medium\" annotation=\"none\" href=\"http:\/\/www.nightmare-yk.com\/?p=934\" ><\/g:plusone><\/div>\n    <\/div>\n<br class='wp_social_bookmarking_light_clear' \/>\n","protected":false},"excerpt":{"rendered":"<p>\u30e1\u30fc\u30ea\u30f3\u30b0\u30ea\u30b9\u30c8\u30b5\u30fc\u30d0\u3068\u3057\u3066\u4ee3\u8868\u7684\u306a\u3082\u306e\u306f\u3001Mailman\u3084fml\u3001sympa\u7b49\u304c\u3042\u308a\u307e\u3059\u3002 \u305d\u306e\u4e2d\u306efml\u3067\u52d5\u4f5c\u304c\u304a\u304b\u3057\u3044\u90e8\u5206\u3092\u767a\u898b\u3057\u305f\u306e\u3067\u3001\u5fd8\u308c\u306a\u3044\u3088\u3046\u306b\u30e1\u30e2\u30e1\u30e2\u3006(.. ) \u6b63\u76f4\u3001\u30af\u30ea\u30c6\u30a3\u30ab\u30eb\u306a\u3082\u306e\u304b\u305d\u3046\u3067\u306a\u3044\u304b\u3068\u8a00\u3048\u3070\u3001\u5fae\u5999\u306a\u3068\u3053\u308d\u306a\u306e\u3067\u3059\u304cf(^^;) \u6240\u8b02\u3001&#8221;\u4ed5\u69d8&#038;#8221 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":998,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_publicize_message":"","jetpack_is_tweetstorm":false,"jetpack_publicize_feature_enabled":true},"categories":[3],"tags":[126,22,128,127],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"https:\/\/i0.wp.com\/www.nightmare-yk.com\/wp-content\/uploads\/2013\/12\/\u6280\u8853\u30a2\u30a4\u30b3\u30f32.png?fit=270%2C240","jetpack_likes_enabled":true,"jetpack_sharing_enabled":true,"jetpack-related-posts":[],"_links":{"self":[{"href":"http:\/\/www.nightmare-yk.com\/index.php?rest_route=\/wp\/v2\/posts\/934"}],"collection":[{"href":"http:\/\/www.nightmare-yk.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.nightmare-yk.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.nightmare-yk.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.nightmare-yk.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=934"}],"version-history":[{"count":22,"href":"http:\/\/www.nightmare-yk.com\/index.php?rest_route=\/wp\/v2\/posts\/934\/revisions"}],"predecessor-version":[{"id":1884,"href":"http:\/\/www.nightmare-yk.com\/index.php?rest_route=\/wp\/v2\/posts\/934\/revisions\/1884"}],"wp:featuredmedia":[{"embeddable":true,"href":"http:\/\/www.nightmare-yk.com\/index.php?rest_route=\/wp\/v2\/media\/998"}],"wp:attachment":[{"href":"http:\/\/www.nightmare-yk.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=934"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.nightmare-yk.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=934"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.nightmare-yk.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=934"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}