X-Git-Url: http://git.jankratochvil.net/?a=blobdiff_plain;f=PerlMail%2FConfig.pm;h=e48a81319c1f8c55399e65840a032b4890872af3;hb=0bb3fce39ce6c1f220de832e721f64c53449088c;hp=3b23b0cba8c052e8d40bc7a4ee10079d89609468;hpb=b8fb5d2c6d3ba9fc81867695c0daa19d549f3eb6;p=PerlMail.git diff --git a/PerlMail/Config.pm b/PerlMail/Config.pm index 3b23b0c..e48a813 100644 --- a/PerlMail/Config.pm +++ b/PerlMail/Config.pm @@ -31,6 +31,7 @@ use vars qw(@ISA @EXPORT); $HOME $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 &FromAddress @h_rcpt @h_from %audit_profile @sms_squeezes @alternates_host @dnsbl_whitelist @@ -43,7 +44,7 @@ require Mail::Alias; BEGIN { for (qw(headerhas store headeris did dnsbl store_muttrc_alternates Received_for parts_linear mime_type - body_first mimehead spamassassin header_remap)) { + body_first is_multipart mimehead mimebody spamassassin clamscan header_remap lmtp_deliver)) { eval 'sub '.$_.' { return ::'.$_.'(@_); }'; } } @@ -69,6 +70,18 @@ our $MaxBodySMS=0x1000; our @SMSwebRcpt=qw(420 602 431329); # Some WWW::SMS modules require username: 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; + } +our $lmtp_user_from="lace"; +our $lmtp_user_to="lacemail"; +our $clamscan_waitpid_timeout=3; # perlmail-submit @@ -76,7 +89,7 @@ our $SMSwebRcpt_username="lace2"; # Global system lock for exclusive $DB_table access: our $Lock_pathname="/tmp/PerlMail.lock"; # 'workstation' hostname and port. Hostname may be dyndns: -our $PeerAddr="exuhome.dyn.jankratochvil.net.:852"; +our $PeerAddr="kashome.dyn.jankratochvil.net.:852"; #our $PeerAddr="127.0.0.1:2852"; # 15sec is NOT enough as the remote peer must complete mail store: our $Socket_timeout=7600; @@ -87,7 +100,7 @@ our $DBI_database="short"; # MySQL user name: our $DBI_user="short"; # MySQL user password: -our $DBI_pwd=$ENV{"HOME"}."/priv/mysql.".$DBI_user.".pwd"; +our $DBI_pwd=$HOME."/priv/mysql.".$DBI_user.".pwd"; # perlmail-sendmail @@ -96,19 +109,17 @@ our $DBI_pwd=$ENV{"HOME"}."/priv/mysql.".$DBI_user.".pwd"; my @lists=qw( tacplus-l@disaster.com gsm@sh.cvut.cz - linux-fsdevel@vger.kernel.org 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 - wine-devel@winehq.org - wine-patches@winehq.org gtk-devel-list@gnome.org gnome-vfs-list@gnome.org captive-announce-list@jankratochvil.net @@ -123,9 +134,13 @@ my @lists=qw( autoconf-patches@gnu.org wget-patches@sunsite.dk wget@sunsite.dk - mailman-developers@python.org 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 @@ -202,7 +217,7 @@ our @h_from=( # 'bell' =>Bell sound. # 'sms=\d+'=>Send SMS by WWW::SMS with specified maximum # of parts our %audit_profile=( - "btw" =>[], + "btw" =>["syslog"], "silent"=>["=btw" ,"did"], "log" =>["=silent","syslog"], "bell" =>["=log" ,"bell"], @@ -275,6 +290,16 @@ sub audit store "=spam" if headeris "From",''; store "=spam" if headeris "From",''; store "=spam" if headeris "From",''; + store "=spam" if headeris "From",''; + store "=spam" if headeris "From",''; + store "=spam" if headeris "From",''; + store "=spam" if headeris "From",''; + for my $header (qw(To Cc)) { + store "=spam" if headerhas $header,''; + store "=spam" if headerhas $header,''; + store "=spam" if headerhas $header,''; + store "=spam" if headerhas $header,''; + } { # weak detection: files with text/html w/o text/plain are usually a spam my @types_linear=map({ mime_type($_); } parts_linear()); @@ -286,23 +311,50 @@ sub audit # spam detection return if did sub { + # It is too expensive to scan the huge =caperr announcements by spamassassin(1). + return if headeris("From",qr/^captive-[a-z]*@/); # Do not local $store_file as it is our-imported - $store_profile="silent"; - local $_; - store "=spam".($_ eq 1 ? "" : ";$_") if $_=spamassassin(); - }; - $store_profile=undef(); - return if did sub { - # Do not local $store_file as it is our-imported - $store_profile="silent"; + $store_profile="log"; local $_; - store "=spam" .";$_","log" if $_=dnsbl '.relays.ordb.org.' ,1; # all hosts - store "=spam" .";$_","log" if $_=dnsbl '.blackholes.mail-abuse.org.' ,1; # all hosts + store "=spam".";virus=$_" if $_=clamscan(); + store "=spam".";spamassassin".($_ eq 1 ? "" : "=$_") if $_=spamassassin(); + store "=spam".";$_" if $_=dnsbl '.relays.ordb.org.' ,1; # all hosts + 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" .";$_","log" if $_=dnsbl '.blackholes.five-ten-sg.com.',0; # just first +# store "=spam".";$_" if $_=dnsbl '.blackholes.five-ten-sg.com.',0; # just first # I don't send viruses but viruses propagate mails of mine - store "=spam" if headeris "X-Mailer",'ravmd/8.3.2'; - store "=spam" if $isFROM_MAILER && headeris("To",''); + 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()) { + local $_=mimebody(body_first()); + my %sites=map(($_=>1),qw( + brandenburg.rz.fhtw-berlin.de + forum.gofeminin.de + service.spiegel.de + www.aufenthaltstitel.de + www.berlinonline.de + www.deutschlandchronik.de + www.heise.de + www.leverkusener-aufbruch.com + www.libasoli.de + www.mjoelnirsseite.de + www.npd-nrw.net + www.npd.de + www.rp-online.de + www.spiegel.de + www.taz.de + www.unserforum.com + www.zdf.de + )); + my $found; + while (m{http://([^/]+)/}g) { + do { $found=1; next; } if $sites{$1}; + $found=0; + last; + } + $found=1 if /^\s*Lese selbst:\n/s; + store "=spam".';german-news' if $found; + } }; $store_profile=undef(); @@ -344,7 +396,7 @@ sub audit ); - store "=gsm" if headeris "Sender" ,''; + 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",''; @@ -361,31 +413,43 @@ sub audit store "=mffstatnice","bell" if headeris "List-Post",''; store "=hw","log" if headeris "List-Post",''; store "=gnokii","log" if headeris "List-Id" ,''; - store "=winelic","log" if headeris "List-Id" ,''; - store "=wined","log" if headeris "List-Id" ,''; + store "=winelic","silent" if headeris "List-Id" ,''; + store "=wined","silent" if headeris "List-Id" ,''; store "=winepat","silent" if headeris "List-Id" ,''; store "=winecvs","silent" if headeris "List-Id" ,''; - store "=wineann","log" if headeris "List-Id" ,''; - store "=wineconf","log" if headeris "List-Id" ,''; - store "=ros","log" if headeris "List-Id" ,''; - store "=roskernel","log" if headeris "List-Id" ,''; + store "=wineann","silent" if headeris "List-Id" ,''; + store "=wineconf","silent" if headeris "List-Id" ,''; + store "=ros","silent" if headeris "List-Id" ,''; + store "=roskernel","silent" if headeris "List-Id" ,''; + store "=rosd","silent" if headeris "List-Id" ,''; store "=roscvs","silent" if headeris "List-Id" ,''; - store "=rosbug","log" if headeris "Reply-To" ,''; + store "=rossvn","silent" if headeris "List-Id" ,''; + store "=rosbug","silent" if headeris "Reply-To" ,''; store "=fsd","silent" if headeris "X-Mailing-List",''; - store "=kerneld","silent" if headeris "X-Mailing-List",''; + store "=kernel","silent" if headeris "X-Mailing-List",''; + store "=kernelnet","silent" if headeris "X-Mailing-List",''; + store "=ia64","silent" if headeris "X-Mailing-List",''; + store "=linuxjap","silent" if headeris "X-Mailing-List",''; + 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","log" if headeris "Sender" ,''; - store "=tacacs","log" if headeris "Sender" ,''; - store "=tacacs","log" if headeris "List-Id" ,''; - store "=pm","log" 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 "=saintmj","log" if headeris "From" ,''; + store "=saintjk","log" if headeris "From" ,''; + store "=saintjk2","log" if 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" ,''; @@ -393,11 +457,16 @@ sub audit store "=sourceforge","bell" if headeris "From" ,''; store "=gsmperlcvs","silent" if headeris("From" ,'') && $Audit->subject()=~/^'.*' has been updated!$/; - store "=libtoold","log" if headeris "List-Id" ,''; - store "=libtoolpat","log" if headeris "List-Id" ,''; - store "=automake","log" if headeris "List-Id" ,''; + store "=libtoold","silent" if headeris "List-Id" ,''; + store "=libtoolpat","silent" if headeris "List-Id" ,''; + store "=automake","silent" if headeris "List-Id" ,''; store "=autoconf","log" if headeris "List-Id" ,''; store "=autoconfpat","log" if headeris "List-Id" ,''; + store "=hurd","log" if headeris "List-Id" ,''; + store "=gccbug","silent" if headeris "List-Post",''; + store "=gccann","log" if headeris "List-Post",''; + store "=gcc","silent" if headeris "List-Post",''; + store "=gccpat","silent" if headeris "List-Post",''; my %mailman=( ''=>"=caperr", ''=>"=caperr", @@ -418,21 +487,62 @@ sub audit store "=capann","bell" if headeris "List-Id" ,''; store "=4c","bell" if headeris "List-Id" ,'<4c-list.vellum.cz>'; } - store "=ntfsann","log" if headeris "List-Id" ,''; - store "=ntfsd","log" if headeris "List-Id" ,''; - store "=orbit","log" if headeris "List-Id" ,''; - store "=kand","log" if headeris "List-Id" ,''; - store "=mailmand","log" if headeris "List-Id" ,''; + store "=ntfsann","silent" if headeris "List-Id" ,''; + store "=ntfsd","silent" if headeris "List-Id" ,''; + store "=orbit","silent" if headeris "List-Id" ,''; + store "=kannel","log" if headeris "List-Id" ,''; + store "=kanneld","log" if headeris "List-Id" ,''; + store "=mailmand","silent" if headeris "List-Id" ,''; + 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" ,''; + store "=fedpkg","bell" if headeris "List-Id" ,''; + store "=fedtools","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",''; + 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 "=modperldoc","log" if headeris "List-Id" ,''; + store "=qemud","log" if headeris "List-Id" ,''; + store "=diamond","log" if headeris "X-Replicator-Inst",'"www.diamondcard.us"'; + store "=soap","log" if headeris "Sender" ,''; + store "=nagiosd","log" if headeris "List-Id" ,''; + 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 "=gdbpr","log" if headeris "Mailing-List",'contact gdb-prs-help@sourceware.org; run by ezmlm'; + store "=gdbpat","log" if headeris "Mailing-List",'contact gdb-patches-help@sourceware.org; run by ezmlm'; + store "=gdbann","log" if headeris "Mailing-List",'contact gdb-announce-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" ,''; # 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",''; + + if (($isFROM_MAILER && !did) || !did) { +# lmtp_deliver $lmtp_admin,$lmtp_pwd,$lmtp_user_from,$lmtp_user_to; + } store "=errm","bell" if $isFROM_MAILER && !did();