Aj vám už niekto poslal stovky či tisíce nevyžiadaných emailov do schránky? Museli ste vymazávať množstvo emailov, či sťahovať mnoho megabytov, ktoré ste aj tak vymazali? Ukáži vám až 5 spôsobov, ako tieto emaily cez PHP efektívne mazať.

V PHP existujú funkcie, ktoré majú názov IMAP funkcie. Pomocou protokolu IMAP a IMAP funkcí tak môžete pracovať s emailmi aj cez PHP. Tieto funkcie sú zakompilované na skoro všetkých platených serveroch, a zväčša i na free serveroch. A práve tie vám pomôžu.

Mailbomber, fake-mail a spam

Mailbomber je buď utilita napísaná v prakticky hocakom vyspelejšom jazyku, ale napr. aj v PHP. Táto dokáže za niekoľko sekúnd odoslať tisíce emailov. Tieto emaily majú zväčša rovnakú veľkosť a zhodný text, proste sú na vlas rovnaké. Tomu, kto ich poslal, ide len o to, aby vám zaplnil mailbox emailmi.

Fake-mail je email, ktorý má v podstate zmenené hlavičky. Tým pádom sa adresát, ak je odosielateľ šikovný, vôbec nemusí dozvedieť odkiaľ tento email prišiel. Keď vám niekto pošle spam (nevyžiadaný email), zväčša nepríde jeden – v dnešnej dobe se na amerických stránkach neoplatí nechávať svoj email – firmy platia ohromné peniaze za databázu týchto emailov. A potom vám denne chodia ponuky na "300% zrýchlenie počítača", či "Heslá na pornostránky" len za $14.99.

Na peť spôsobov

Najjednoduchšie je asi všetky emaily vymazať. Druhá možnosť je vymazať emaily s konštantnou veľkosťou (emaily z mail-bomberov majú zväčša rovnakú veľkosť – všetky), tretia je mazať emaily od určitého odosielateľa, ďaľšia mazať emaily z určitým predmetom a tá posledná je mazať maily od niekoho alebo s nejakým predmetom, ak odosielaleľa/predmet poznáte.

Zmazať všetky emaily

<?
$spoj = Imap_Open("{VAS_MAIL_SERVER/pop3}INBOX", $meno, $heslo);
$s = imap_headers($spoj);

for($i=0; $i<Count($s); $i++):
imap_delete($spoj, $i+1);
endfor;

Imap_expunge($spoj);
?>

Do tohoto skriptu doplňte adresu vášho mail servera. Môžete do neho doplniť i svoje meno a heslo, ale kvôli bezpečnosti ho odporúčam zadávať buď z formuláru, alebo priamo v url: skript.php?meno=LOGIN&heslo=HESLO. Skript sa veľmi jednoducho pripojí na mail server. Potom si zistí počet správ a do poľa $s uloží čísla správ. Potom pomocou cyklu for označíte emaily na zmazanie funkciou imap_delete(). Po ukončení cyklu ich definitívne vymažete funkciou imap_expunge().

Teraz prídu na rad troška zložtejšie skripty. Najskôr zdrojový kód, potom globálne vysvetlenie.

Zmazanie podľa veľkosti

<?
$spoj = Imap_Open("{VAS_MAIL_SERVER/pop3}INBOX", $meno, $heslo);
$s = imap_headers($spoj);

for($i=0; $i<Count($s); $i++):
$sub = substr($s[$i], -20, 20);
$sub = strtr($sub, "()", "–");
eregi("-(.*)-", $sub, $subs);
$velkost = substr($subs, 1, -7);
if(is_numeric($pocet[$velkost[$i]])) $pocet[$velkost[$i]]++;
else $pocet[$velkost[$i]] = 1;
endfor;

while(list($velk, $poc) = each($pocet)):
if($poc>9):
reset($s);
for($q=0; $q<Count($s); $q++):
$sub2 = substr($s[$q], -20, 20);
$sub2 = strtr($sub2, "()", "–");
eregi("-(.*)-", $sub2, $subs2);
$velkost = substr($subs2, 1, -7);
if($velkost==$velk) imap_delete($spoj, $q+1);
endfor;
endwhile;

imap_expunge($spoj);

?>

Zmazanie podľa odosielateľa

<?
$spoj = Imap_Open("{VAS_MAIL_SERVER/pop3}INBOX", $meno, $heslo);
$s = imap_headers($spoj);
for($i=0; $i<Count($s); $i++):
$ee = imap_fetch_header($spoj, $i+1);
eregi("From: (.*)X-sender", $ee, $eee);
$from = substr($eee, 6, -9);
if(is_numeric($pocet[$from[$i]])) $pocet[$from[$i]]++;
else $pocet[$from[$i]] = 1;
endfor;

while(list($fro, $poc) = each($pocet)):
if($poc>9):
reset($s);
for($q=0; $q<Count($s); $q++):
$ee2 = imap_fetch_header($spoj, $q+1);
eregi("From: (.*)X-sender", $ee2, $eee2);
$from2 = substr($eee2, 6, -9);
if($from2==$fro) imap_delete($spoj, $q+1);
endfor;
endwhile;

imap_expunge($spoj);

?>

Zmazanie podľa predmetu správy

<?
$spoj = Imap_Open("{VAS_MAIL_SERVER/pop3}INBOX", $meno, $heslo);
$s = imap_headers($spoj);
for($i=0; $i<Count($s); $i++):
$ee = imap_fetch_header($spoj, $i+1);
eregi("Subject: (.*)Message-ID", $ee, $eee);
$from = substr($eee, 9, -11);
if(is_numeric($pocet[$from[$i]])) $pocet[$from[$i]]++;
else $pocet[$from[$i]] = 1;
endfor;

while(list($fro, $poc) = each($pocet)):
if($poc>9):
reset($s);
for($q=0; $q<Count($s); $q++):
$ee2 = imap_fetch_header($spoj, $q+1);
eregi("Subject: (.*)Message-ID", $ee2, $eee2);
$from2 = substr($eee2, 9, -11);
if($from2==$fro) imap_delete($spoj, $q+1);
endfor;
endwhile;

imap_expunge($spoj);

?>

Už viete, ako sa pripojiť k serveru. Ďalej načítate do premennej $s hlavičky emailov. A teraz prichádzate k cyklu – prejdete všetky hlavičky. Tu je to skoro to isté – pomocou textových funkcií sa snažíte dostať k hľadanému reťazcu: či už ide o veľkosť emailu, odosielateľa, alebo predmet správy. Pri všetkých emailoch sú tieto položky usporiadané rovnako, čo je vynikajúci pevný bod. Teraz si vytvorte pole $pocet, do ktorého ukladáte počet emailov s rovnakou veľkosťou alebo rovnakým predmetom/odosielateľom. To je jedna časť. Keď už viete, ktoré emaily máte mazať, vymažte ich. Prejdite si pole $pocet, a emaily, ktorých je rovnakých viac ako 9, jednoducho vymažte. Postupujte rovnako, ako v prvej časti: nájdite si pevný bod. Potom porovnajte tieto dva údaje a ak sa zhodujú, tento email vymažte. Resp. nastavte ho na vymazanie, ukončite cyklus a pomocou funkcie imap_expunge tieto emaily definitívne vymažte.

Inteligentné mazanie

<?
$spoj = Imap_Open("{VAS_MAIL_SERVER/pop3}INBOX", $meno, $heslo);
if($how=="predmet") $txt = "Subject: (.*)Message-ID";
elseif($how=="od") $txt = "From: (.*)X-sender";

for($q=0; $q<Count($s); $q++):
$ee2 = imap_fetch_header($spoj, $q+1);
eregi("From: (.*)X-sender", $ee2, $eee2);
$from2 = substr($eee2, 6, -9);
if($from2==$value) imap_delete($spoj, $q+1);
endfor;
imap_expunge($spoj); ?>

Skript pracuje v podstate na rovnakom princípe. Ani vysvetlovať netreba dvakrát. Tento skript však musíte volať s dvema premennými, buď (predpokladajme, že sa volá skript.php): skript.php?how=predmet&value=Od+Hackera, alebo napr. skript.php?how=od&value=cosi@cosi.cz. Do premennej how dosadíte spôsob: buď podľa predmetu (how=predmet), alebo podľa odosielateľa (how=od). Do premennej value dosadíte hodnotu, ktorú idete mazať (value=predmet+správy; value=od@cojaviemkoho.cz).

Žádný příspěvek v diskuzi

Odpovědět