Jump to content
aurascalarasi09

Cum limitam functia mail() din PHP

Recommended Posts

Posted

Cum PHP nu ofera o solutie pentru limitarea numarului de mailuri trimise cu functia mail() si in majoritatea cazurilor spamerii folosesc functia mail() trebuie gasita o solutie de a limita numarul de mailuri trimise de un utilizator. Am facut un misc script in Perl care face asta.

Modul de functionare e relativ simplu, scriptul este apelat de PHP la trimiterea unui mail. In script se fac niste verificari si daca userul a trimis mai putin de 200 de mailuri (se poate schimba) in ziua respectiva mesajul este trimis. In caz contrar mesajul este ignorat.

Cod:

#!/usr/bin/perl

#

# © FearDotCom

#

use POSIX;

use define LIMITA => 200;

if($> != 0 ) {

my $count=0;

if( open(LOG,"/var/log/phpmail.log") ){

while(<LOG>){

if( $_ =~ /$>/ ){

$count++;

}

}

close(LOG);

}

if( open(LOG,">>/var/log/phpmail.log") ){

my $sender = getcwd.$ENV{'SCRIPT_FILENAME'};

my $data = `date`;

chomp $data;

if( $count > LIMITA ){

print LOG "$data:$>:$sender:ignored \n";

}else{

print LOG "$data:$>:$sender:sent \n";

exec {"/usr/sbin/sendmail"} ('/usr/bin/sendmail',@ARGV);

}

close(LOG);

}

}else{

exec {"/usr/sbin/sendmail"} ('/usr/bin/sendmail',@ARGV);

}

Cum este un hack, nu o solutie oferita de distribuitor, trebuie facute cateva mici modificari pentru ca scriptul sa functioneze corect:

1. Se creaza fisierul /var/log/phpmail.log caruia i se pun permisiunile corecte (rw-rw-rw-);

2. Se creaza un cron care in fiecare zi, la ora 00:00, goleste continutul fisierului phpmail.log ( cp /dev/null /var/log/phpmail.log ) - optional se poate face un script care pastreaza fisierele vechi;

3. Se salveaza codul de mai sus in /usr/bin/sendmail, fisier caruia i se da drept de executie - 755;

4. Se modifica in php.ini directiva sendmail_path sa pointeze catre /usr/bin/sendmail, nu catre /usr/sbin/sendmail (observat bin in loc de sbin) cum e default;

5. Modificati use define LIMITA => 200; sa corespunda unei valori care o considerati optima;

Daca astea sunt facute nu mai trebuie nici o modificare (nici macar restart).

SURSA: tutoriale4u

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



×
×
  • Create New...