diff options
| author | fukachan <fukachan> | 2001-04-08 13:03:52 +0000 |
|---|---|---|
| committer | fukachan <fukachan> | 2001-04-08 13:03:52 +0000 |
| commit | 011b9510e51ea389595001cf01c86dcf9bffe6a8 (patch) | |
| tree | e8dc8f4e6d1af7d812183fd5edafbb3c8fff1bb2 | |
| parent | 5dc8dcfab9e2d8bb7f3782cafbcbd2481045fc16 (diff) | |
| download | fml8-011b9510e51ea389595001cf01c86dcf9bffe6a8.tar.gz fml8-011b9510e51ea389595001cf01c86dcf9bffe6a8.tar.bz2 fml8-011b9510e51ea389595001cf01c86dcf9bffe6a8.zip | |
move ErrorMessages/ to Mail/Bounce/
| -rw-r--r-- | fml/lib/ErrorMessages/.cvsignore | 1 | ||||
| -rw-r--r-- | fml/lib/ErrorMessages/00_PARSE.ja.txt | 311 | ||||
| -rw-r--r-- | fml/lib/ErrorMessages/00_README.ja.txt | 12 | ||||
| -rw-r--r-- | fml/lib/ErrorMessages/Makefile | 15 | ||||
| -rw-r--r-- | fml/lib/ErrorMessages/Status.pm | 105 | ||||
| -rw-r--r-- | fml/lib/ErrorMessages/index.ja.html | 27 |
6 files changed, 0 insertions, 471 deletions
diff --git a/fml/lib/ErrorMessages/.cvsignore b/fml/lib/ErrorMessages/.cvsignore deleted file mode 100644 index b643ba41..00000000 --- a/fml/lib/ErrorMessages/.cvsignore +++ /dev/null @@ -1 +0,0 @@ -@@doc diff --git a/fml/lib/ErrorMessages/00_PARSE.ja.txt b/fml/lib/ErrorMessages/00_PARSE.ja.txt deleted file mode 100644 index 2b6f66cf..00000000 --- a/fml/lib/ErrorMessages/00_PARSE.ja.txt +++ /dev/null @@ -1,311 +0,0 @@ -### VERY FUNDAMENTAL CONFIG ### -$ErrorCodePat = '55\d|5\.\d\.\d'; -$TrapWord = 'unknown \S+|\S+ unknown|\S+ not known| not found'; - -# regexp -$RE_SJIS_C = '[\201-\237\340-\374][\100-\176\200-\374]'; -$RE_SJIS_S = "($RE_SJIS_C)+"; -$RE_EUC_C = '[\241-\376][\241-\376]'; -$RE_EUC_S = "($RE_EUC_C)+"; -$RE_JIN = '\033\$[\@B]'; -$RE_JOUT = '\033\([BJ]'; -############################### - - - - - - -sub Parse -{ - my ($new_block, $gobble, $curf, $first_header_part); - my ($mp_block, $p, $pmax); - - $new_block = 1; - $gobble = 0; - $curf = $NULL; - $first_header_part = 1; - - # gobble error mail - { - $pmax = sysread(STDIN, - $MessageBuffer, - $MEAD_INCOMING_MAIL_SIZE_LIMIT); - - if ($pmax >= $MEAD_INCOMING_MAIL_SIZE_LIMIT) { - &Log("warn: input mail is too large"); - &Log("warn: check the fisrt $MEAD_INCOMING_MAIL_SIZE_LIMIT bytes"); - } - &Log("log: read $pmax bytes") if $debug; - } - - my ($msgbufp, $msgbufp1); - for ($msgbufp = 0; $msgbufp <= $pmax; ) { - $msgbufp1 = index($MessageBuffer, "\n", $msgbufp); - last if $msgbufp1 < 0; - $_ = substr($MessageBuffer, $msgbufp, $msgbufp1 - $msgbufp); - $msgbufp = $msgbufp1 + 1; - - # reread input buffer since this buffer ends incomletely. - # we ends it up with "\n" correctly. - $SavedBuffer .= $_."\n" if $InputLines++ < 1024; - - # ignore the first header - # we should ignore header for <maintainer> - $first_header_part = 0 if /^$/; - - # save excursion - $PrevLine = $CurLine; - $CurLine = $_; - - # check the current block - if (/^Content-Type:\s*(.*)/i) { - &Debug("<<< $_ >>>"); - $mp_block = $1; - } - - if (/^(Content-Description:\s*Notification).*/i) { - &Debug("<<< $_ >>>"); - $mp_block = $1; - } - - # Store Received: field - if (! $first_header_part) { - if (/^([-A-Za-z]+):(.*)/) { - $curf = $1; - $value = $2; - $Received .= "\n".$value if $curf =~ /Received/i; - } - elsif (/^\s+(.*)/) { - $value = $1; - $Received .= $value if $curf =~ /Received/i; - } - } - - if ($original_mail && $found && $debug) { - &Debug(" --- $_") if $debug; - } - elsif ($debug) { - &Debug(" | $_") if $debug; - } - - $new_block = 1 if /^\s*$/; - - if (/^From:.*mailer-daemon/i || /^From:.*postmaster/) { - undef %return_addr; - $original_mail = $found = 0; - undef $MTA; - undef $CurAddr; - } - - # guess MTA ... - if (/^Message-ID:\s+\<[\w\d]+\-[\w\d]+\-[\w\d]+\@/i) { - $MTA = "exim"; - next; - } - if (/qmail-send/) { - $MTA = "qmail"; - next; - } - - # get returned addresses - if ($first_header_part) { - if (/^(To|Cc):.*/i) { - if ($new_block && $gabbble == 0) { - &Debug("$new_block, $gobble> rset \%return_addr\n") if $debug; - undef %return_addr; - } - - $new_block = 0; - $gabbble = 1; - - &ExtractAddr($_); - next; - } - elsif (/^X\-MLServer:/i) { # this is the commnd mail from fml. - $NotSavedBuffer = 1; - } - # 822 folding - elsif (/^\s+/ && $gobble) { - &ExtractAddr($_); - next; - } - } - - - ### - ### RFC1891,1894 DSN - ### - if ($mp_block =~ /delivery\-status/i) { - if (/^Final-Recipient:.*\s+(\S+\@\S+)/i) { - $DSN_FinalRecipient = &BareAddr($1); - } - elsif (/^Original-Recipient:.*\s+(\S+\@\S+)/i) { - $DSN_OriginalRecipient = &BareAddr($1); - } - elsif (/^Status:\s*5/i) { - if ($DSN_OriginalRecipient) { - &CacheOn($DSN_OriginalRecipient, " "); - } - if ($DSN_FinalRecipient) { - &CacheOn($DSN_FinalRecipient, " "); - } - - $found++; - } - } - - # smtpfeed -1 -F hack - if (/^To: \(original recipient in envelope at \S+\) <(\S+)>/) { - &PickUpHint($1); - } - - ##### - ##### MTA szpecific - ##### - # postfix - # <uja@beth.fml.org>: unknown user - if ($mp_block eq 'Content-Description: Notification') { - if (/^\s*(\S+\@\S+):\s*(unknown user|.*:\s+5\d\d\s+.*)/) { - $CurAddr = $1; - $CurAddr =~ s/[\<\>]//g; - $CurAddr =~ s/\s*//g; - &Debug("CurAddr => $CurAddr") if $debug && $CurAddr; - $MTA = 'postfix'; - } - } - - # exim || qmail - if ($MTA eq 'qmail' && /This is a permanent error/) { - $RABuf .= $_; - } - - if ($MTA eq 'exim' || $MTA eq 'qmail') { - /^\s*(\S+\@\S+):\s*$/ && ($CurAddr = $1); - $CurAddr =~ s/[\<\>]//g; - $CurAddr =~ s/\s*//g; - &Debug("CurAddr => $CurAddr") if $debug && $CurAddr; - } - - $gobble = 0; - - # ignore Japanese strings. - next if /$RE_JIN/; - next if /$RE_JOUT/; - next if /$RE_SJIS_S/; - next if /$RE_EUC_S/; - - ### unknown MTA ### - if (/(\S+\@[-A-Z0-9\.]+)/i) { - /(\S+\@[-A-Z0-9\.]+)/i && ($P_CurAddr = $1); # pseudo - $P_CurAddr =~ s/[\<\>]//g; - $P_CurAddr =~ s/\s*//g; - &Debug("P_CurAddr => $P_CurAddr") if $debug && $P_CurAddr; - } - - # error message line - # next if /<<<.*\@/; - # next if /^Diagnostic-Code:/i; - - # ignore the original mails - # &Debug("next") if $original_mail && $found; - next if $original_mail && $found; - $original_mail = 1 if /^received:/i; - - ##### TRAP CODE ##### - if (/fatal error/i) { $fatal++;} - - if (/\@/ && /(5\d\d)/) { &AnalyzeErrorCode($_); $found++; } - if (/\@/ && /$TrapWord/i) { &AnalyzeErrorWord($_); $found++; } - - ### unknown MTA - # e.g. uset not known - if (/$TrapWord/i && $P_CurAddr) { - &AnalyzeErrorWord($_, $P_CurAddr); - $found++; - } - - ### postfix - if (/$TrapWord/i && $MTA eq 'postfix') { - &AnalyzeErrorWord($_, $CurAddr); - $found++; - } - - ### - ### exim - ### - if (/$TrapWord/i && $MTA eq 'exim') { - &AnalyzeErrorWord($_, $CurAddr); - $found++; - } - - # EXIM pattern - if (/failed/i && $MTA eq 'exim') { - $trap_want_addr = $_; - next; - } - if ($trap_want_addr && /\@/ && $MTA eq 'exim') { - local($a); - /^\s*(\S+\@\S+)/ && ($a = $1); - $a =~ s/[\<\>:]//g; - &CacheOn($a, " ") if $a; # space is a dummy - undef $trap_want_addr; - } - - if (/($ErrorCodePat)/ && $MTA eq 'exim') { - &AnalyzeErrorWord($_, $CurAddr); - $found++; - } - - ### - ### qmail - ### - if (/\#5\.\d+\.\d+/ && $MTA eq 'qmail') { - &AnalyzeErrorWord($_, $CurAddr); - $found++; - } - - if ($MTA eq 'qmail' && $CurAddr && $RABuf) { - &AnalyzeErrorWord($RABuf, $CurAddr); - $found++; - } - - ### - ### sendmail - ### - if ($fatal) { - local($a); - /^\s*(\S+\@\S+)/ && ($a = $1); - $a =~ s/[\<\>]//g; - &CacheOn($a, " ") if $a; # space is a dummy - } - # end of fatal block - if ($fatal && /^$/) { - undef $fatal; - } - } - - # VERPs: qmail specific - # Suppose list-admin-account=domain@$mydomain syntax, ... - { - local($ra, $addr); - - $addr = $ENV{'RECIPIENT'}; - $ra = $ENV{'RECIPIENT'}; - - if ($addr =~ /=/) { - $addr =~ s/\@\S+$//; - $addr =~ s/=/\@/; - $addr =~ s/^\S+\-admin\-//; # fml specific - - $ra =~ s/admin\-\S+\@/admin@/; - - &Debug("qmail:". $addr); - &Debug("qmail return_addr:". $ra); - $return_addr{$ra} = 1; - &CacheOn($addr, " "); - } - } -} - - diff --git a/fml/lib/ErrorMessages/00_README.ja.txt b/fml/lib/ErrorMessages/00_README.ja.txt deleted file mode 100644 index 622b3e3a..00000000 --- a/fml/lib/ErrorMessages/00_README.ja.txt +++ /dev/null @@ -1,12 +0,0 @@ - エラーメッセージのコレクション - -入力は - Mailinglist::Messages オブジェクトの形で - - -出力は - ハッシュで { - - 駄目そうなメールアドレス => 理由 - - } diff --git a/fml/lib/ErrorMessages/Makefile b/fml/lib/ErrorMessages/Makefile deleted file mode 100644 index 2eadbd96..00000000 --- a/fml/lib/ErrorMessages/Makefile +++ /dev/null @@ -1,15 +0,0 @@ -all: anal - -anal: - @ find . | sort | grep -v CVS | sed 's@./@@' - -html: index.ja.html - -index.ja.html: *.pm - ../../../doc/bin/dir2url.pl > index.ja.html - -_clean: - rm -f index.ja.html */index.ja.html - -clean: - (cd ../../..;make clean) diff --git a/fml/lib/ErrorMessages/Status.pm b/fml/lib/ErrorMessages/Status.pm deleted file mode 100644 index c494d766..00000000 --- a/fml/lib/ErrorMessages/Status.pm +++ /dev/null @@ -1,105 +0,0 @@ -#-*- perl -*- -# -# Copyright (C) 2001 Ken'ichi Fukamachi -# All rights reserved. This program is free software; you can -# redistribute it and/or modify it under the same terms as Perl itself. -# -# $Id$ -# $FML$ -# - -package ErrorMessages::Status; - -use strict; -use vars qw(@ISA @EXPORT @EXPORT_OK); -use Carp; - -require Exporter; -@ISA = qw(Exporter); -@EXPORT_OK = qw(error_set error error_clear); - -=head1 NAME - -ErrorMessages::Status - error handling component - -=head1 SYNOPSIS - -Use this module in your C<Something> class module like this: - - package Something; - use ErrorMessages::Status qw(error_set error error_clear); - - sub xxx - { - if something errors ... - $self->error_set( why this error occurs ... ); - } - -You use C<Something> module like this. - - use Something; - $obj = new Something; - $obj->xxx(); - unless ($obj->error) { $obj->do_somting( ...); }; - -=head1 DESCRIPTION - -simple utility functions to manipulate error messages. - -=head1 METHODS - -=head2 C<error_set($message)> - -save $message as an error message. - -=head2 C<error()> - -return $message which is saved by C<error_set($msg)>. - -=cut - - -sub error_set -{ - my ($self, $mesg) = @_; - $self->{'_error_reason'} = $mesg; -} - - -sub error -{ - my ($self, $args) = @_; - return $self->{'_error_reason'}; -} - - -sub error_clear -{ - my ($self, $args) = @_; - my $msg = $self->{'_error_reason'}; - undef $self->{'_error_reason'} if defined $self->{'_error_reason'}; - undef $self->{'_error_action'} if defined $self->{'_error_action'}; - return $msg; -} - - -=head1 AUTHOR - -Ken'ichi Fukamachi - -=head1 COPYRIGHT - -Copyright (C) 2001 Ken'ichi Fukamachi - -All rights reserved. This program is free software; you can -redistribute it and/or modify it under the same terms as Perl itself. - -=head1 HISTORY - -ErrorMessages::Status appeared in fml5 mailing list driver package. -See C<http://www.fml.org/> for more details. - -=cut - - -1; diff --git a/fml/lib/ErrorMessages/index.ja.html b/fml/lib/ErrorMessages/index.ja.html deleted file mode 100644 index 51438276..00000000 --- a/fml/lib/ErrorMessages/index.ja.html +++ /dev/null @@ -1,27 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> -<HTML> -<HEAD> -<TITLE> -ErrorMessages::* classes -</TITLE> -<META http-equiv="Content-Type" - content="text/html; charset=EUC-JP"> -</HEAD> - -<BODY BGCOLOR="#E6E6FA"> -<CENTER><EM>ErrorMessages class modules</EM></CENTER> -<HR> -<A HREF="00_PARSE.ja.txt">PARSE(Japanese)</A> -<A HREF="00_README.ja.txt">README(Japanese)</A> -<HR> -<TABLE> -<TR> -<TD> - Status.pm <TD> -<A HREF="Status.pm">[source]</A> -<TD> -<A HREF="@@doc/Status.txt">[manual]</A> -<TD> -</TABLE> -</BODY> -</HTML> |
