X-Git-Url: https://git.jankratochvil.net/?a=blobdiff_plain;f=PerlMail%2FConfig.pm;h=7d8deff8339e6828be9a522337b996587737b931;hb=5f22596f5b2cee5b7658f7fe2cc8578b54ecb918;hp=fa33e3d1daa3f8f5febf8107164240a6d987c483;hpb=e9a47f1d815af6b612274ba1bd4b124e28e76151;p=PerlMail.git diff --git a/PerlMail/Config.pm b/PerlMail/Config.pm index fa33e3d..7d8deff 100644 --- a/PerlMail/Config.pm +++ b/PerlMail/Config.pm @@ -32,7 +32,7 @@ use vars qw(@ISA @EXPORT); $Mail @ValidUsers $IdleMax $MaxBodySMS @SMSwebRcpt $SMSwebRcpt_username $Lock_pathname $PeerAddr $Socket_timeout $DB_table $DBI_database $DBI_user $DBI_pwd $clamscan_waitpid_timeout - $sendmail_orig @addr_addon @h_rcpt @h_from + $sendmail_orig @addr_addon &FromAddress @h_rcpt @h_from %audit_profile @sms_squeezes @alternates_host @dnsbl_whitelist $Audit $is_pgp $opt_F $procmailFROM_MAILER $store_ignore $store_ignorenewmail @@ -44,7 +44,7 @@ use Carp qw(confess cluck); BEGIN { - for (qw(headerhas store headeris did dnsbl store_muttrc_alternates Received_for parts_linear mime_type + for (qw(headerhas writeto store headeris did dnsbl store_muttrc_alternates Received_for parts_linear mime_type body_first body_simple is_multipart mimehead mimebody spamassassin clamscan header_remap lmtp_deliver)) { eval 'sub '.$_.' { return ::'.$_.'(@_); }'; } @@ -54,7 +54,7 @@ BEGIN { # perlmail-accept & perlmail-sendmail # Various configuration files location is derived from it: -our $HOME="/home/jkratoch"; +our $HOME="/home/lace"; # perlmail-accept @@ -62,7 +62,7 @@ our $HOME="/home/jkratoch"; # Mail folder: our $Mail="$HOME/Mail"; # Users respected for the 'idle' state (see $IdleMax): -our @ValidUsers=qw(root lace short kratochvil _local jkratoch); +our @ValidUsers=qw(root lace short kratochvil _local); # Maximum number of local console idle seconds while still considered as 'active user': our $IdleMax=10; # Maxium number of bytes to pass to Lingua::EN::Squeeze (performance optimization): @@ -73,13 +73,13 @@ our @SMSwebRcpt=qw(420 602 431329); our $SMSwebRcpt_username="lace2"; our $lmtp_admin="cyrus"; our $lmtp_pwd; -#{ -# local *F; -# open F,"$HOME/priv/lmtp.${lmtp_admin}.pwd" or die; -# $lmtp_pwd=; -# chomp $lmtp_pwd; -# close F or die; -# } +{ + local *F; + open F,"$HOME/priv/lmtp.${lmtp_admin}.pwd" or die; + $lmtp_pwd=; + chomp $lmtp_pwd; + close F or die; + } our $lmtp_user_from="lace"; our $lmtp_user_to="lacemail"; our $clamscan_waitpid_timeout=3; @@ -104,6 +104,47 @@ our $DBI_user="short"; our $DBI_pwd=$HOME."/priv/mysql.".$DBI_user.".pwd"; +# perlmail-sendmail + +# Lists where address is generated: +my @lists=qw( + tacplus-l@disaster.com + gsm@sh.cvut.cz + n9k@pandora.cz + dev9k@pandora.cz + gsm@pandora.cz + ros-general@reactos.com + ros-kernel@reactos.com + ros-dev@reactos.com + ros-cvs@reactos.com + 4cinfo@atrey.karlin.mff.cuni.cz + libtool@gnu.org + libtool-patches@gnu.org + wine-license@winehq.org + gtk-devel-list@gnome.org + gnome-vfs-list@gnome.org + captive-announce-list@jankratochvil.net + captive-list@jankratochvil.net + captive-devel-list@jankratochvil.net + linux-ntfs-announce@lists.sourceforge.net + linux-ntfs-dev@lists.sourceforge.net + orbit-list@gnome.org + devel@kannel.org + automake@gnu.org + autoconf@gnu.org + autoconf-patches@gnu.org + wget-patches@sunsite.dk + wget@sunsite.dk + wineconf@winehq.org + prague-pm@pm.org + dev@httpd.apache.org + asterisk-perl@lists.gnuinter.net + isdn4linux@listserv.isdn4linux.de + libc-alpha@sources.redhat.com + squid-dev@squid-cache.org + ); + #4c-list@vellum.cz + # Pathname of the original sendmail(8) binary: our $sendmail_orig=(-x ($_="/usr/sbin/sendmail-orig") ? $_ : "/usr/sbin/sendmail"); # List of addresses to locally Bcc all mails to: @@ -113,7 +154,44 @@ our @addr_addon=(Mail::Alias->new("/etc/aliases")->exists("sentout") ? ("sentout our $opt_F; # imported our $is_pgp; # imported +my %lists=map(($_=>1),@lists); # Generate new From address for the target $rcpt of type Mail::Address. +# $iserror is true for "MAIL FROM" RFC821 address, false for "From:" RFC822 address. +# Returns: Mail::Address instance. +sub FromAddress +{ +my($rcpt,$iserror)=@_; + + my $phrase=(defined $opt_F ? $opt_F : "Jan Kratochvil"); + { + last if !$is_pgp; + last if $iserror; + local *F; + local $_; + my $filename="$HOME/.gnupg/options"; + open F,$filename or do { warn "Open \"$filename\": $!"; last; }; + local $/="\n"; + my @keys=map((/^\s*default-key\s+(\S+)\s*$/),); + @keys==1 or do { warn "Found ".scalar(@keys)." 'default-key's in your \"$filename\", ignoring"; last; }; + close F or warn "Close \"$filename\": $!"; + my $default_key=$keys[0]; + $default_key=~/^[[:xdigit:]]{8}$/ or do { warn "Invalid 'default-key', ignoring: $default_key"; last; }; + return Mail::Address->new( + $phrase, + 'pgp-'.uc($default_key).'@jankratochvil.net', + ); + } + return Mail::Address->new($phrase,'lace@jankratochvil.net') if !$lists{$rcpt->address()}; + return Mail::Address->new( + $phrase, + 'rcpt' + .'-' + .(defined($rcpt->user()) ? $rcpt->user() : "NOUSER") + .".AT." + .(defined($rcpt->host()) ? $rcpt->host() : "LOCAL") + .'@jankratochvil.net', + ); +} # RedHat sendmail-8.9.3-20/src/conf.c/HdrInfo[]/\Q/* destination fields */\E # FIXME: Recognize "Resent-$_" headers for -t but when we are in 'resent' mode? @@ -179,9 +257,25 @@ our @dnsbl_whitelist=( "212.80.76.29", # prace.seznam.cz: 212.80.76.42.seznam.cz.free.blackholes.five-ten-sg.com "193.252.22.30", # smtp1.wanadoo.fr: 30.22.252.193.blackholes.five-ten-sg.com "213.151.87.16", # posta.dobnet.cz: 16.87.151.213.relays.ordb.org - "70.71.0.212", # Red Hat ); +sub dolist +{ + my($list)=@_; + + my $mailed=0; + for my $alias ("",qw(admin bounces confirm join leave owner request subscribe unsubscribe)) { + my $head=$list.($alias?"-$alias":""); + my $mail=$head.'@jankratochvil.net'; + if (headerhas("To",$mail)||headerhas("Cc",$mail)) { + writeto "|/usr/lib64/mailman/mail/lace/mailmanlace ".($alias||"post")." $list"; + ###writeto "|/usr/sbin/sendmail $head".'@localhost.localdomain'; + $mailed++; + } + } + return $mailed; +} + our $Audit; # imported our $procmailFROM_MAILER; # imported our $store_ignorenewmail; # imported @@ -200,9 +294,22 @@ sub audit || headerhas "From",'' ); + return if did sub { store "=spy","log" if headeris "From",''; }; + + return if did sub { store "=hotelgatespam","log" if headeris("To",''); }; + + # whitelist + my $whitelist; + $whitelist||=headeris("From",''); + $whitelist||=headeris("From",''); + $whitelist||=headeris("From",''); + $whitelist||=headeris("From",''); + $whitelist||=headeris("From",''); + # spam honeypots return if did sub { local $_; + return if $whitelist; # Do not local $store_file as it is our-imported $store_profile="silent"; store "=spam" if grep /^\Qshort\@k332.feld.cvut.cz\E/i,Received_for(); @@ -218,6 +325,14 @@ sub audit store "=spam" if headeris "From",''; store "=spam" if headeris "From",''; store "=spam" if headeris "From",''; + store "=spam" if $Audit->subject() eq "Virus intercepted" + && body_simple()=~/^A message sent from\s.*\sto\s.*\scontained .* and has not been delivered[.]$/; + store "=spam" if headeris "From",''; + store "=spam" if headeris "From",''; + store "=spam" if headeris "From",''; + store "=spam" if headeris "To" ,''; + # Whitelist - HTML. + return if headeris("From",''); for my $header (qw(To Cc)) { store "=spam" if headerhas $header,''; store "=spam" if headerhas $header,''; @@ -227,23 +342,51 @@ sub audit { # weak detection: files with text/html w/o text/plain are usually a spam my @types_linear=map({ mime_type($_); } parts_linear()); - store "=spamhtml" if grep({ $_ eq "text/html"; } @types_linear) && !grep({ $_ eq "text/plain"; } @types_linear); + store "=spam" if grep({ $_ eq "text/html"; } @types_linear) && !grep({ $_ eq "text/plain"; } @types_linear); } -### store "=spambig5" if ($_=mimehead(body_first())->mime_attr("Content-Type.charset")) && /^big5/i; + store "=spam" if ($_=mimehead(body_first())->mime_attr("Content-Type.charset")) && /^big5/i; }; $store_profile=undef(); - my $nonrh; - for ($Audit->get("Received")) { - $nonrh=1 if /\sby\s+mx\d+\Q.redhat.com\E\s/s; + my %mailman=( + ''=>"=caperr", + ''=>"=caperr", + ''=>"=caperr", + '<4c-admin@>'=>"=4cerr", + ); + return if did sub { + if (!did sub { + while ((my($mailaddr,$folder)=each(%mailman))) { + (my $maillistaddr=$mailaddr)=~s/-admin/-list$&/; + store $folder,"log" if (headeris("From",'')&&headeris("To",$mailaddr)) + || headeris("From",$maillistaddr) + || headeris("To",$maillistaddr) + || headeris("From",$mailaddr); + } + }) { + store "=cap","bell" if headeris "List-Id" ,''; + store "=capd","bell" if headeris "List-Id" ,''; + store "=capann","bell" if headeris "List-Id" ,''; + store "=4c","bell" if headeris "List-Id" ,'<4c-list.vellum.cz>'; + } + }; + + { + my $mailed=0; + if ($Audit->header()!~/for <(?:4c|vmezihori1XXX)-(?:admin|owner|bounces)@/) { + for my $list qw(vmezihori1) { + $mailed+=dolist $list; + } + } + # return if $mailed; } - $nonrh=1 if !headeris("From",qr/[@]redhat.com/i); + # spam detection return if did sub { - # Internal RH mails are never spam. - return if !$nonrh; # It is too expensive to scan the huge =caperr announcements by spamassassin(1). - return if headeris("From",qr/^captive-[a-z]*@/); + return if $whitelist; +### return if headeris("From",qr/^captive-[a-z]*@/); + return if headeris("From",''); # Do not local $store_file as it is our-imported $store_profile="log"; local $_; @@ -255,8 +398,8 @@ if (0) { store "=spam".";$_" if $_=dnsbl '.blackholes.mail-abuse.org.' ,1; # all hosts # we don't check all hosts as they can be "dialup" category, FIXME: check for it # store "=spam".";$_" if $_=dnsbl '.blackholes.five-ten-sg.com.',0; # just first - # I don't send viruses but viruses propagate mails of mine } + # I don't send viruses but viruses propagate mails of mine store "=spam".";ravmd" if headeris "X-Mailer",'ravmd/8.3.2'; store "=spam".';short@ucw.cz+MAILER' if $isFROM_MAILER && headeris("To",''); if (!is_multipart()) { @@ -294,20 +437,50 @@ if (0) { # special delivery store "=err","bell" and return if headerhas \&Received_for,''; - store "=host1","bell" and return if headerhas \&Received_for,qr/\Qjan.kratochvil+\E\S*\Q.at.host1.dyn.jankratochvil.net\E@/; - -# if (headeris "X-Calendar-Attachment",qr/./) { -# store "=zimbra","btw"; -# my $headless=$::Message; -# $headless=~s{^From .*?\n}{} or cluck "No From header for Zimbra"; -# local *CHILD; -# if (!$::Dry) { -# open CHILD,q{|sendmail jkratoch@calendar.corp.redhat.com} -# or cluck "Cannot forward to Zimbra"; -# print CHILD $headless or cluck; -# close CHILD or cluck; -# } -# } + + # ppl-wished foreign remapping, Reply-To is left untouched! + # FIXME: modifications are now being dropped by &write_message! + header_remap("From",{ + 'kerere@post.cz' =>'kamzik@k332.feld.cvut.cz', + 'profes@mbox.vol.cz' =>'kratochvilova@egp.cz', + 'jkrouzek@mbox.vol.cz' =>'krouzek@mbox.fsv.cuni.cz', + 'jakub.gorner@lidovky.cz' =>'tonda@disnet.cz', + 'jan.kolar@videoprogress.cz' =>'jenda.kolar@volny.cz', + 'daniel.rulicek@cponline.cz' =>'daniel.rulicek@cpress.cz', + 'pavel@suse.cz' =>'pavel@ucw.cz', + }); + + # My obsolete e-mail addresses + store_muttrc_alternates "=redirect-","btw"; + + # nasty public lists with $store_ignore + { + # Do not local $store_file as it is our-imported + $store_profile="log"; + local $store_ignore; + $store_ignore="smsmail" if 1==$Audit->body() && length(join "",$Audit->body())<180; # SMS mail + $store_ignore="sms OS" if $Audit->subject()=~/^Email pro: /; # "^Email pro: gsm@sh\.cvut\.cz$"; + $store_ignore="list-moron" if grep { headeris "From",$_; } qw( + + + + + <@mujoskar.cz> + + + + + + ); + + store "=gsm" if headeris "X-BeenThere",''; + store "=gsmpand" if headeris "List-Post",''; + store "=9kc","log" if headeris "List-Post",''; + store "=9kcd","log" if headeris "List-Post",''; + } + $store_profile=undef(); + + return if headeris "From" ,''; # lists store "=mozillabug","log" if headeris "From" ,''; @@ -316,6 +489,7 @@ if (0) { store "=spong","log" if headeris "List-Id" ,''; store "=gtkd","silent" if headeris "List-Id" ,''; store "=gnomevfs","log" if headeris "List-Id" ,''; + store "=mffstatnice","bell" if headeris "List-Post",''; store "=hw","log" if headeris "List-Post",''; store "=gnokii","log" if headeris "List-Id" ,''; store "=winelic","silent" if headeris "List-Id" ,''; @@ -338,13 +512,26 @@ if (0) { store "=kernelann","silent" if headeris "X-Mailing-List",''; store "=sparse","silent" if headeris "X-Mailing-List",''; store "=smp","silent" if headeris "X-Mailing-List",''; + store "=surprise","sms" if headeris "List-Post",''; + store "=surprisesuse","sms" if headeris "Sender" ,''; store "=tacacs","silent" if headeris "Sender" ,''; store "=tacacs","silent" if headeris "Sender" ,''; store "=tacacs","silent" if headeris "List-Id" ,''; store "=pm","log" if headeris "List-Id" ,''; store "=radary","log" if headeris "Reply-To" ,''; store "=dnet","log" if headeris "Sender" ,'<@lists.distributed.net>'; + store "=linux-input","log" if headeris "List-Post",''; + store "=strom","bell" if headeris "List-Post",''; store "=netinfo","log" if headeris "Sender" ,''; + store "=saintmj","log" if headeris "From" ,''; + store "=saintmj","log" if headeris "From" ,''; + store "=saintmj","log" if headeris "From" ,''; + store "=saintjk","log" if headeris "From" ,''; + store "=saintjk","log" if (headeris("From" ,'') + || headeris("From" ,'')) + && headeris("To" ,''); + store "=4cerr","bell" if headeris "From" ,''; + store "=4c","sms" if headeris "List-Post",'<4cinfo@atrey.karlin.mff.cuni.cz>'; store "=slashdot","bell" if headeris "From" ,''; store "=freshmeat","bell" if headeris "From" ,''; store "=sourceforge","bell" if headeris "From" ,''; @@ -369,33 +556,33 @@ if (0) { store "=asterisk-perl","log" if headeris "List-Post",''; store "=i4l","silent" if headeris "List-Id" ,''; store "=glibc","silent" if headeris "List-Post",''; - store "=fedann","bell" if headeris("List-Id" ,'') - || headeris("List-Id" ,''); + store "=fedann","bell" if headeris "List-Id" ,''; store "=fedpkg","bell" if headeris "List-Id" ,''; - store "=federrata","log" if headeris "Return-Path",''; - store "=fedtools","log" if headeris "List-Id" ,''; - store "=freleng","log" if headeris "List-Id" ,''; - if (headeris("List-Id" ,'') - || headeris("List-Id" ,'')) { - store "=fedd","log"; - store "=feddgdb","log" if body_simple()=~/\bgdb\b/i; - store "=feddlibunwind","log" if body_simple()=~/libunwind/i; - } + store "=fedtools","log" if headeris "List-Id" ,''; + store "=fedd","log" if headeris "List-Id" ,''; store "=bashbug","log" if headeris "List-Id" ,''; store "=zaurus","silent" if headeris "List-Id" ,''; store "=zaurusann","log" if headeris "List-Id" ,''; store "=zaurusd","silent" if headeris "List-Id" ,''; store "=zaurussoft","silent" if headeris "List-Id" ,''; store "=iptperl","silent" if headeris "List-Id" ,''; + # own webs + store "=energie","bell" if headeris "From" ,qr/^EnergieWeb/; + store "=ats","log" if headeris("From" ,'') + || (headeris("From",'') && headerhas("To",'')); + store "=atscasablanca","log" if headeris "From" ,''; store "=www-sms","log" if headeris "List-Id" ,''; store "=httpdd","log" if headeris "list-post",''; + store "=mms2log","log" if headeris "Return-Path",''; + store "=hotelgatelog","log" if headeris("Return-Path",'') + # `SMART error' should not be matched. + && headeris("Subject" ,qr/^(?:Cron|Anacron|LogWatch) /); store "=imja","log" if headeris "List-Id" ,''; store "=wince","log" if headeris "List-Post",''; store "=mysqlperl","log" if headeris "List-Id" ,''; store "=whiteann","log" if headeris "List-Id" ,''; store "=white","log" if headeris "List-Id" ,''; store "=centos","log" if headeris "List-Id" ,''; - store "=centann","log" if headeris "List-Id" ,''; store "=modperldoc","log" if headeris "List-Id" ,''; store "=qemud","log" if headeris "List-Id" ,''; store "=diamond","log" if headeris "X-Replicator-Inst",'"www.diamondcard.us"'; @@ -404,158 +591,59 @@ if (0) { store "=nagios","log" if headeris "List-Id" ,''; store "=grub","log" if headeris "List-Id" ,''; store "=gdb","log" if headeris "Mailing-List",'contact gdb-help@sourceware.org; run by ezmlm'; - store "=gdbia64","log" if headeris("Mailing-List",'contact gdb-help@sourceware.org; run by ezmlm') - && body_simple()=~/\b(?:ia64|itanium)\b/i; store "=gdbpr","log" if headeris "Mailing-List",'contact gdb-prs-help@sourceware.org; run by ezmlm'; - store "=gdbpria64","log" if headeris("Mailing-List",'contact gdb-prs-help@sourceware.org; run by ezmlm') - && body_simple()=~/\b(?:ia64|itanium)\b/i; store "=gdbpat","log" if headeris "Mailing-List",'contact gdb-patches-help@sourceware.org; run by ezmlm'; - store "=gdbpatia64","log" if headeris("Mailing-List",'contact gdb-patches-help@sourceware.org; run by ezmlm') - && body_simple()=~/\b(?:ia64|itanium)\b/i; store "=gdbann","log" if headeris "Mailing-List",'contact gdb-announce-help@sourceware.org; run by ezmlm'; - store "=gdbcvs","log" if headeris "Mailing-List",'contact gdb-cvs-help@sourceware.org; run by ezmlm'; - store "=gdbcvsall","log" if headeris "Mailing-List",'contact src-cvs-help@sourceware.org; run by ezmlm'; store "=binutils","log" if headeris "Mailing-List",'contact binutils-help@sourceware.org; run by ezmlm'; store "=binutilsbug","log" if headeris "List-Id" ,''; - store "=buggnome","log" if headeris "From" ,''; - store "=bugdesktop","log" if headeris "From" ,''; - - # Red Hat - store "=wslog","log" if headeris("From" ,'') - && headeris("Return-Path",''); - store "=rhos","log" if headeris "List-Id" ,''; - store "=rhosd","log" if headeris "List-Id" ,''; - store "=rhmemo","silent" if headeris "List-Id" ,''; - store "=rhann","log" if headeris "List-Id" ,''; - store "=rheng","log" if headeris "List-Id" ,''; - store "=rheurope","log" if headeris("List-Id" ,'') - && headeris("X-loop" ,''); - store "=rhbrno","log" if headeris("List-Id" ,'') - &&!headeris("X-loop" ,''); - store "=rhbrnomemo","log" if headeris "List-Id" ,''; - store "=rhbrnopto","log" if headeris "List-Id" ,''; - store "=rhbase","log" if headeris "List-Id" ,''; - if (!did sub { - store "=rhrhel","log" if headeris "X-BeenThere",''; - store "=rhrhel","log" if headeris "X-BeenThere",''; - store "=rheng","log" if headeris "X-BeenThere",''; - }) { - store "=rhtoolsteam","log" if headeris "List-Id" ,''; - } - store "=rhtools","log" if headeris "List-Id" ,''; - store "=rhosteam","log" if headeris "List-Id" ,''; - store "=rhbug","log" if headeris "X-BeenThere",''; - store "=rhgdb","log" if headeris "List-Id" ,''; - store "=rhit","log" if headeris "Return-Path",''; - store "=rhcommit","log" if headeris("List-Id" ,'') - || headeris("X-CVS-Server",''); - store "=rhcommitgdb","log" if headeris "X-CVS-Directory",qr{^rpms/gdb(?:/.*)?$}; - store "=rhcommitgcc","log" if headeris "X-CVS-Directory",qr{^rpms/gcc(?:/.*)?$}; - store "=rhcommitlibunwind","log" if headeris "X-CVS-Directory",qr{^rpms/libunwind(?:/.*)?$}; - store "=rhcommitstrace","log" if headeris "X-CVS-Directory",qr{^rpms/strace(?:/.*)?$}; - store "=rhcommitbinutils","log" if headeris "X-CVS-Directory",qr{^rpms/binutils(?:/.*)?$}; - store "=rhcommitinsight","log" if headeris "X-CVS-Directory",qr{^rpms/insight(?:/.*)?$}; - store "=rhcommitptrace","log" if headeris "X-CVS-Directory",qr{^tests/kernel/syscalls/ptrace(?:/.*)? }; - store "=rhcommitgdbtest","log" if headeris "X-CVS-Directory",qr{^tests/gdb/gdb-any(?:/.*)? }; - store "=rhbrnowiki","log" if headeris("Return-Path",'') - && headeris("From" ,'') - && headeris("To" ,'') - # `\Q=?' causes: Can't modify constant item in concatenation (.) or string - && headeris("Subject" ,qr{^(?:\Q[Red Hat Czech] \E(?:Trivial )?Update of |=\Q?utf-8?q?=5BRed_Hat_Czech=5D_\E(?:Trivial_)?Update_of_)}); - store "=rhts","log" if headeris "List-Id" ,''; - store "=rhts","log" if headeris("List-Id" ,'') - || headeris("List-Id" ,''); - store "=rhwiki","log" if headeris "Return-Path",''; - store "=rhinet","log" if headeris "List-id" ,''; - if (headeris "Return-Path",'') { - if (body_simple()=~/(?:jkratoch|jan.kratochvil)[@]\Qredhat.com\E/s) { - store "=rhtsme","log"; - } - else { - store "=rhtsbogus","log"; - } - } - store "=rherrata","log" if $Audit->get("X-Erratatool-Component") - || (headeris("Return-Path",'') - && headeris("Subject",qr{^Changed Errata Request })); - if (headeris "Subject" ,qr{^\Q[rpmdiff] INSPECTION: Erratum \E\d{4}:\d{4} .*\btest results\b}) { - store "=rherrata","log"; - # `[rpmdiff] INSPECTION:' came from `root@rpmdiff3.test.redhat.com'. - } elsif ((headeris("To",'') || !$Audit->get("To") || $Audit->get("To") eq "undisclosed-recipients:;") - && headeris("Return-Path",qr{^\Qroot@\E.*[.](?:(?:lab|rhts|eng).(?:bos|boston)|z900|test|englab.brq|nay)\Q.redhat.com\E$})) { - store "=rhtsme","log"; - } - store "=rhtsme" if headeris "Subject" ,qr{^\Q[Beaker Job Completion] \E}; - store "=buggcc","log" if headeris("Return-Path",'') - || headeris("Return-Path",''); - store "=frysk","log" if headeris "Mailing-List",'contact frysk-help@sourceware.org; run by ezmlm'; - store "=fryskcvs","log" if headeris "List-Id" ,''; - store "=bugsrc","log" if headeris "Return-Path",''; - store "=rhwc","log" if headeris "Subject" ,'Cron $HOME/redhat/bin/rhwc'; - store "=dwarf","log" if headeris "List-Id" ,''; - store "=dwarf","log" if headeris "List-Id" ,''; - store "=libunwind","log" if headeris "List-Id" ,''; - store "=libunwindd","log" if headeris "List-Id" ,''; - store "=rhsip","log" if headeris "List-Id" ,''; - store "=fedaccount","log" if headeris("Return-Path",'') - && headeris("To", '') - && headeris("From", '') - && headeris("Subject" ,'You need to create a bugzilla account for jkratoch@redhat.com'); - store "=straced","log" if headeris "List-Id" ,''; - if (headeris "Return-Path",'') { - if ($Audit->subject()=~/^\d+ builds? marked for deletion$/) { - store "=fkojidel","log"; + store "=4c","bell" if headeris "List-Id" ,'<4c.jankratochvil.net>'; + store "=dup","log" if headeris "List-Id" ,''; + store "=dupbug","log" if headeris "List-Id" ,''; + store "=sue","log" if headeris "Subject" ,'Cron $HOME/secure/sue'; + store "=linkedin","log" if headeris "From" ,''; + + # Petr Koutecky does not mark his Stuff + store "=koutecky","log" if headeris "Return-Path",''; + store "=koutecky","log" if headeris "Return-Path",''; + store "=koutecky","log" if headeris "Return-Path",''; + store "=koutecky","log" if headeris "Return-Path",''; + + store "=host0log","log" if headeris("From" ,'') + && headeris("Return-Path",''); + store "=host1log","log" if headeris("From" ,'') + && headeris("Return-Path",''); + + if (headeris("To" ,'') + && headeris("Return-Path",'')) { + if (body_simple()=~/^SIP request received from .* for 2143$/o) { + store "=callme","log"; } else { - store "=fkoji","log"; + store "=call","log"; } } - if (headeris "Return-Path",'') { - if ($Audit->subject()=~/^\d+ builds? marked for deletion$/) { - store "=rhbrewdel","log"; - } else { - store "=rhbrew","log"; + + { + my $mailed=0; + if ($Audit->header()!~/for <(?:4c|vmezihori1)-(?:admin|owner|bounces)@/) { + for my $list qw(mailman 4c) { + $mailed+=dolist $list; + } } + # return if $mailed; } - store "=utrace","log" if headeris "List-Id" ,''; - store "=eud","log" if headeris "List-Id" ,''; - store "=eud","log" if headeris "List-Id" ,''; - store "=dup","log" if headeris "List-Id" ,''; - store "=dupbug","log" if headeris "List-Id" ,''; - store "=rheclipse","log" if headeris "List-Id" ,''; - store "=rhtech","log" if headeris "List-Id" ,''; - store "=rhgdb","log" if headeris "List-Id" ,''; - store "=rhperf","log" if headeris "List-Id" ,''; - store "=rhdebug","log" if headeris "List-Id" ,''; - store "=rhsip","log" if headeris "List-Id" ,''; - store "=fupdate","log" if headeris "Return-Path",''; - store "=rhmedia","log" if headerhas "List-Id",''; - store "=fia64","log" if headeris "List-Id" ,''; - store "=archer","log" if headeris "List-Id" ,''; - store "=archergit","log" if headeris "List-Post" ,''; - store "=flive","log" if headeris("List-Id" ,'') - || headeris("List-Id" ,''); - store "=fspin","log" if headeris "List-Id" ,''; - store "=rhstatus","log" if headeris "List-Id" ,''; - store "=rhstatusteam","log" if headeris "List-Id" ,''; - store "=fcrash","log" if headeris "List-Id" ,''; - store "=gabi","log" if headeris "List-Id" ,''; - store "=fupload","log" if headeris("X-Fedora-Upload",qr//) - && headeris("Subject" ,qr/^File\s\S+\suploaded\sto\slookaside\scache\sby\s/); - store "=rhpkg","log" if headeris "Return-Path",''; - store "=gdbmail","log" if headeris "From" ,qr{^\Qdiffgdbdaymail by Jan Kratochvil \E$}; - store "=vpx","log" if headeris("List-Id" ,'') - || headeris("List-Id" ,''); - if (($isFROM_MAILER && !did) || !did) { # lmtp_deliver $lmtp_admin,$lmtp_pwd,$lmtp_user_from,$lmtp_user_to; } -# store "=errm","bell" if $isFROM_MAILER && !did(); + store "=errm","bell" if $isFROM_MAILER && !did() + # qr/daemon@/ makes $isFROM_MAILER positive. + && !headeris("From",''); if (!did) { store "==","sms"; - spamassassin "sa-learn --ham"; +# FIXME: What to do with it? +### spamassassin "sa-learn --ham"; } }