2 # $Id: receive.in,v 1.11 2001/08/18 01:32:28 doogie Exp $
3 # usage: mail is piped directly into program
5 #set umask in order to have group-writable incoming/*
8 #load configuration file
9 $config_path = '/org/bugs.debian.org/etc';
10 #$lib_path = '/org/bugs.debian.org/scripts';
12 require "$config_path/config";
13 $ENV{'PATH'} = '/org/bugs.debian.org/scripts:'.$ENV{'PATH'};
15 #set source of mail delivery
16 #sets any prefix needed to get mailer to add it to error mail
17 if ( $gMailer eq 'exim' )
18 { $gBadEmailPrefix = '';
19 $_ = $ENV{'LOCAL_PART'};
20 } elsif ( $gMailer eq 'qmail' )
21 { $gBadEmailPrefix = '//';
23 # $_ = $ENV{'RECIPIENT'};
26 { $gBadEmailPrefix = '';
31 require("/etc/debbugs/text");
33 #remove everything from @ to end of line
36 #convert remaining upper case to lower case
39 #set up to determine command
40 %withbugaddressmap= ('-submit', 'B',
51 %withpkgaddressmap= ('-request', 'R');
53 %withoutaddressmap= ('submit', 'B',
65 if (s/^(\d{1,9})\b//) {
67 $map= $withbugaddressmap{$_};
68 $addrrec= "$bugnumber$_";
69 } elsif (s/^(\w+)-//) {
71 $map= $withpkgaddressmap{"-$_"};
72 $addrrec= "$bugnumber-$_";
75 $map= $withoutaddressmap{$_};
79 #print no command received
81 print STDERR <<ENDTEXT;
83 $gBadEmailPrefix Unknown $gBug service address $_\@$gEmailDomain.
84 $gBadEmailPrefix Recognised addresses are:
86 $gBadEmailPrefix General: Read $gBug# in Subject: $gBug# is NNNN:
88 $gBadEmailPrefix request submit $gBug NNNN NNNN-submit
89 $gBadEmailPrefix control maintonly NNNN-maintonly
90 $gBadEmailPrefix owner quiet NNNN-quiet
91 $gBadEmailPrefix postmaster forwarded NNNN-forwarded
92 $gBadEmailPrefix done close NNNN-done NNNN-close
93 $gBadEmailPrefix submitter NNNN-submitter
95 $gBadEmailPrefix (all \@$gEmailDomain.)
97 $gBadEmailPrefix For instructions via the WWW see:
98 $gBadEmailPrefix http://$gWebDomain/
99 $gBadEmailPrefix http://$gWebDomain/Reporting.html
100 $gBadEmailPrefix http://$gWebDomain/Developer.html
101 $gBadEmailPrefix http://$gWebDomain/Access.html
103 $gBadEmailPrefix For details of how to access $gBug report logs by email:
104 $gBadEmailPrefix send \`request\@$gEmailDomain' the word \`help'
110 @months=qw(Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec);
111 ($sec,$min,$hour,$mday,$mon,$year)= gmtime(time);
113 $queue= "$map$bugnumber";
115 chdir("$gSpoolDir/incoming") || &failure("chdir to spool: $!");
118 open(FILE,">T.$id") || &failure("open temporary file: $!");
119 printf(FILE "Received: (at %s) by $gEmailDomain; %d %s %d %02d:%02d:%02d +0000\n",
120 $addrrec, $mday,$months[$mon],$year+1900, $hour,$min,$sec) ||
121 &failure("write header to temporary file: $!");
122 while(<STDIN>) { print(FILE) || &failure("write temporary file: $!"); }
123 close(FILE) || &failure("close temporary file: $!");
125 rename("T.$id","I$queue.$id") || &failure("rename spool message: $!");
130 length($id) && unlink("T.$id");
131 print STDERR "bugs receive failure: @_\n";
132 exit(75); # EX_TEMPFAIL