Skocz do zawartości
Zaloguj się, aby obserwować  
Gość Adam Szendzielorz

logowanie / ograniczanie mail() w PHP.

Polecane posty

Gość adamszendzielorz

Witam!

 

Nadszedl czas, ze musze dosyc precyzyjnie ograniczyc mozliwosc rozsylki ew. spamu przez "open-formmaile" userow. Dotychczas specjalnie sie nie przejmowalem, bo spamy byly rzadkoscia, a do maili wysylanych przez mail() mam wydzielona osobna kolejke poczty (tak, ze nawet jak ktos puszcza newsletter ilestam tys. maili - schodzi sobie on "swoja droga", nie blokujac normalnej poczty.

 

Ale dzis mialem dwa incydenty przy ktorych spamer probowal puscic.. 5GB spamu - pareset tys. wiadomosci :) Oczywiscie filtry go powstrzymaly, ale nieszczesliwie sie zapchal /var.

 

A wiec - znacie jakies skrypty, na ktorych moznaby sie wzorowac do ograniczenia tegoz ? Potrzebuje napisac wlasciwie takie "opakowanie". Aha - uzywam qmaila wiec /sbin/mail to /var/qmail/bin/sendmail :)

 

Ktos uzywa czegos wartego polecenia ?:)

pozdr.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

A nie mozesz sobie napisac prostego skryptu, ktory bedzie po jego wywolaniu sprawdzal np. w bazie danych czy dany user moze jeszcze wyslac maile (np. ma dzienny limit 200 maili), i jesli moze to odpalasz sendmaila czy czym tam wysylasz maile?

I ten skrypt podpinasz pod phpa (w php.ini) jako sciezka do programu pocztowego.

 

pzdr.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Gość adamszendzielorz
A nie mozesz sobie napisac prostego skryptu, ktory bedzie po jego wywolaniu sprawdzal np. w bazie danych czy dany user moze jeszcze wyslac maile (np. ma dzienny limit 200 maili), i jesli moze to odpalasz sendmaila czy czym tam wysylasz maile?

I ten skrypt podpinasz pod phpa (w php.ini) jako sciezka do programu pocztowego.

 

To wlasnie chce zrobic - tyle ze wrzucic to w miejsce programu "mail", bo nie tylko z poziomu PHP wysylane sa maile (rowniez skrypty w PERLu, Pythonie i innych z tego korzystaja :) Szukam tylko jakiegos gotowego szkieletu, najlepiej w perlu lub w C -> chodzi o samo przekazanie danych do programu "mail", tuz po obrobieniu i ewentualnym sprawdzeniu limitow etc.

 

A moze juz istnieje jakis gotowy sofcik - to dla mnie nie jest AZ tak istotne, wiec moze miec mocno ograniczone mozliwosci :)

 

pozdr.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
tyle ze wrzucic to w miejsce programu "mail", bo nie tylko z poziomu PHP wysylane sa maile

No tak, zapomnialem, ze ja jestem chyba jedyny w Polsce, co udostepnia tylko PHP :)

 

pzdr.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

poprostu zmieniasz nazwe pliku /var/qmail/bin/sendmail na sendmailreal

 

i tworzysz skrypt o nazwie sendmail

 

wszystko co wysyla maila wywoluje ten skrypt a ty z tego skryptu sprawdzasz sobie, robisz co chcesz z takim mailem i wysylasz go do sendmailreal do wyslania

 

przyklad

http://support.theplanet.com/knowledgebase...ory_id=10&sid2=

 

najprosciej jest phpsuexec, suexec i cpanel - tam jest opcja ile mozna na godzine wyslac maili

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Gość normanos

niestety nie znam sie na perlu, moz emi ktos pomóc z w/w skryptem?

 

linijka

if($REMOTE_ADDR) {
	 print INFO "$date - $REMOTE_ADDR ran $SCRIPT_NAME at $SERVER_NAME n";
}
else {

	print INFO "$date - $PWD -  @infon";

}

zapisuje log.

2 problemy:

 

1. logi sa nieczytelne. jak tu wstawic znak konca lini, cos jak \n? zeby kazdy wpis był osobna linią.

 

2. logi to tylko warunek ELSE czyli mam tylko date i katalog (nie wiem co to @infon). Czemu nie ma REMOTE_ADDR?

 

edit. ad1. linie udalo sie wstawic ;)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Mówisz i masz. Here I'm.. this's me. There's no where else on earth I'd rather be. (Bryan Adams)

Tak na pierwszy rzut oka, to zamiast tego @infon powinno być "@info n"(n-znak nowej linii).

Po drugie, to jeśli masz adres katalogu z którego..., to możesz sobie darować remote_addr,

gdyż później IP możesz otrzymać parsując z shella access.log Apacha.

Ja już niestety nie pamiętam w jaki sposób otrzymałem adres skryptu zamiast samego katalogu,

ale... tak na zdrowy chłopski rozum - rzadko kiedy wysyłką maili zajmuje się wiecęj niż jeden

skrypt. Zarówno przy większych systemach(PHPBB) jak i projektach autorskich

z reguły tworzy się jeden plik obsługujący pocztę, a reszta się do niego po prostu odwołuje,

więc nie będziesz miał większych problemów ze znalezieniem winowajcy. ;)

 

 

P.S. Oczywiście, jeśli być chciał zatrudnić ten skrypt na "pełny etat" to miło by było mieć IP

bez konieczności zaglądania do logów daemona www...

Jak będę miał chwilę czasu, to może znajdę swoją wersję tego skryptu, ale póki co... muszę iść.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Gość normanos

@infon - ha ha rzeczywiście literówka, zabawne bo tak jest w kilku miejscach w sieci, powielone z błędem ;)

 

teraz dostałem taki log:

Mon Feb 20 18:43:48 CET 2006 - /var/www/virtual/domena.pl/konto/htdocs -  www-data x 33 33   www-data /var/www /bin/sh

jak mam zinterpretować to x 33 33?

 

owszem, potem juz jest łatwiej ale mimo wszystko jakby dało się jeszcze wyciągnąć nazwe pliku zamiast samego katalogu to juz by była pełnia szczęścia :)

 

Tak to człowiek przynajmniej wie gdzie szukać, nie trzeba po omacku przeszukiwać wszystkiego.

 

edit:

czasami w logach traci sie katalog :)

Mon Feb 20 18:43:48 CET 2006 - / -  www-data x 33 33   www-data /var/www /bin/sh

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Bądź aktywny! Zaloguj się lub utwórz konto

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto

Zarejestruj nowe konto, to proste!

Zarejestruj nowe konto

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się

Zaloguj się, aby obserwować  

×