[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: (fetchmail aŭ getmail) + procmail



ĸ <lfpor@lujz.org>:

>  La problemo estas ke oni sendadas al mi mesaĝojn kun aldonaĵoj *.exe
>  140 aŭ 150 Kb grandaj. Mi ne volas elŝuti ilin por poste forviŝi per
>  procmail. Ĉu iel, sen peti iun ajn al servilo por instalado de
>  programon en la servilo, mi povus fari, ke procmail agu en servilo
>  antaŭ elŝuto de mesaĝoj? Ĉu vere per fetchmail ne eblas? Ĉu per getmail
>  eblas?

Tio dependas de la retservo, ĉu oni povas ruli iujn filtrilojn en la
servilo. Multaj homoj havas aliron nur per POP3. Tamen, via problemo
ŝajnas esti la viruso Swen, kiu estas facile rekonebla per la ĉapaĵo.
Vi eble povas adapti la kunsenditan Perl-programeton, kiun mi uzas por
forigi ĉiujn mesaĝojn kun la menciita granda kaj aŭ majuskla SUBJECT
aŭ manko de mencio pri "rano" en la ĉapaĵo. (Evidente vi ŝanĝu la
vorton "rano".)

>  Dua problemo: Mi povis krei regulojn por procmail, sed nur reguloj por
>  vorto en kampoj de sendanto kaj temo de mesaĝo. Mi serĉis kaj trovis
>  ekzemplojn de reguloj por bari mesaĝojn kun aldonaĵoj (*.exe, *.bat 
>  ktp) sed provante ilin, verŝajne neniu funkciis, ĉu oni donu al mi
>  efikan kaj simplan recepton por bari iun ajn mesaĝojn kun tiuj
>  aldonaĵoj? Mi akceptas aliajn, kiuj sendas aŭtomate msĝ al sendanto, al
>  popmaster ktp...

Mi pensas, ke procmail ne komprenas la MIME-strukturon de mesaĝoj, sed
ĝi povas apliki regulajn esprimojn al la korpo de mesaĝo, kaj oni
povas alvoki aliajn programojn de procmailrc por fari eventualajn
komplikajn analizojn. Oni bezonas la flagojn "HB" por rigardi la
korpon.

Mi uzas procmail por forigi duoblaĵojn, ĉar mi lasas mesaĝojn ĉe la
servilo, kaj de tempo al tempo mi pro eraro ricevas kelkcent mesaĝojn
denove, kio povas esti tre ĝena. La koncernaj reguloj en procmailrc
estas:

md5db=$MAILDIR/md5.db

LOCKFILE=$md5db$LOCKEXT

:0HB
* ? $HOME/bin/maildupe 14 "$md5db"
dupes

LOCKFILE

Kompreneble, maildupe estas alia perlaĵo.

>  Kiam mutt mem prenas mesaĝojn el servilo, estadas legebla (legas 13 el 
>  42 mesaĝoj ****** kb) ĝis "42 el 42" ... kaj "Nova(j) mesaĝo(j) en
>  poŝtfako". Per fetchmail, .... ĝi aĉe raportas ĉio en xconsole per
>  "-v", kaj raportas malbone ankaŭ en xconsole sen "-v"... Mi sopiras
>  elŝuto per mutt mem, ĉu eblas ruli elŝuto per mutt + procmail?

Mi supozas, ke ne facile.

Edmundo
#!/usr/bin/perl -w

use Mail::POP3Client;

print "SWEN-mortigilo\n";

$host = "pop.retservo.com";
$user = "uzanto";
$secs = 3600;
$logs = "log";

print "Host ($host): ";
$_ = <>; chomp $_;
$host = $_ if /./;

print "User ($user): ";
$_ = <>; chomp $_;
$user = $_ if /./;

print "Password: ";
system('/bin/stty', '-echo');
$_ = <>; chomp $_;
print "\n";
system('/bin/stty', 'echo');
$pass = $_;

print "Seconds ($secs): ";
$_ = <>; chomp $_;
$secs = $_ if /./;

print "Log file ($logs): ";
$_ = <>; chomp $_;
$logs = $_ if /./;

exit if fork();

for (;;) {
    $pop = new Mail::POP3Client(USER     => $user,
				PASSWORD => $pass,
				HOST     => $host);
    @size = $pop->ListArray;
    open(L, ">>$logs");
    for ($i = 1; $i <= $pop->Count(); $i++) {
	if (145000 < $size[$i] && $size[$i] < 165000) {
	    @head = $pop->Head($i);
	    if (grep(/^SUBJECT:/, @head) || !grep(/^\S.*rano/i, @head)) {
		$t = gmtime;
		$pop->Delete($i);
		print L "\n$t\n", join("\n", @head), "\n";
	    }
	}
    }
    close(L);
    $pop->Close();

    sleep($secs);
}

Reply to: