Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: mail()
Forum PHP.pl > Forum > PHP
soska66
W jaki sposob zminimalizowac ryzyko wrzucania wysylanej przez mail() poczty do spamu przez serwery pocztowe

Czy zalezy to wylacznie od naglowkow? W tym momencie mam wprowadzone nastepujace naglowki

  1. <?php
  2. $mailHeaders .= "From: info@$website <info@$website>r\n";
  3.        $mailHeaders .= "Reply-To: Organizacja <info@$website>r\n";
  4.        $mailHeaders .= "Return-Path: Organizacja  <info@$website>r\n";
  5.        $mailHeaders .= "Organization: Organizacja  r\n";
  6.        $mailHeaders .= "Content-Type: text/plainr\n";
  7. ?>


Dorzuce dodatkowe pytanie, co by watku nie tworzyc

Korzystam z systemu logowania opartego na ciasteczkach, ktore przechowuje numer sesji (generowany) i numer IP usera. Klient doniosl mi, ze w obrebie sieci w jego firmie, gdy loguje sie do strony na swoim komputerze, dostep do niej uzyskuja wszystkie inne komputery w sieci (wygenerowane ciasteczko jest odbierane przez wszystkie komputery). Nie potrafi okreslic w jaki sposob zbudowana jest siec. Mnie sie wydaje, ze uzywaja jednego numeru IP i proxy, ktore przechowuje ciacha.

Wiem, ze instalacja certa SSL rozwiazalaby problem, ale czy jest jakies inne wyjscie z tej sytuacji?
blooregard
Zakładam, że zmienne, które wstawiasz do zmiennych odpowiedzialnych za treść i temat maila wstawiasz z jakiegoś formularza, tak?
Więc sprawdzaj, jak przychodzą dane POST-em, zmienną serwera HTTP_REFFERER, czy pochodzą one z serwera, na którym leży Twoja witryna. Jeśli nie, nie wysyłasz.
W ten sposób "odsiejesz" skrypty postawione na innych serwerach i wysyłające przez Twój skrypt spam.
em1X
wstaw ukryte pole tekstowe do formularza i jeżeli będzie przy wysyłaniu wypełnione, znaczy, że jest to bot.
soska66
hehe... zle zrozumieliscie.... byc moze to ja niejasno wyjasnilem smile.gif

Nie chodzi mi o boty... nie chodzi tez o puste maile. Chodzi o maile wysylane przez uzytkownika, za pomoca kodu php (np w czasie rejestracji)

Czyli gosc wypelnia sobie forme rejestracyjna i wciska 'Rejestruj'. Wtedy zostaje odpalona funkcja, ktora sprawdza dane, wprowadza je do bazy i jesli sa poprawne wysyla maila potwierdzajacego (np z linkiem aktywujacym). Podane przeze mnie naglowki to wlasnie naglowki tego maila potwierdzajacego

Chodzi mi o to, ze np. yahoo, widzi owe maile jakos spam, i wrzuce je do junk'owego folderu. Moje pytanie brzmi, co zrobic aby yahoo ( i inne ) nie odczytywal takiego maila jako spam... inaczej... jak zmniejszyc ryzyko potraktowania takiego maila jako spam smile.gif

mam nadzieje, ze teraz lepiej wyjasnilem
Pilsener
- sprawdź, czy adres, ip, domena itp. z której wysyłasz maile nie są na czarnej liście
- zadbaj o maksymalną poprawność składni
- nie wysyłaj maili masowo i unikaj słów typu "wiahra"
- nie używaj funkcji mail - użyj socketów, albo programu do wysyłania poczty

Jeżeli nie masz własnego serwera, lub ip/domeny to jest duża szansa na to, że jesteś klasyfikowany jako spamer czy chcesz tego czy nie.
soska66
Strona jest na share-hostingu, ale z wlasna domena.

Skladnia wydaje sie byc poprawna, slow typu 'wiahra' naturalnie w tresci nie ma

wroce do swojego drugiego pytania bo sytuacja wciaz nie jest rozwiazana

Przypomne tresc

Korzystam z systemu logowania opartego na ciasteczkach, ktore przechowuje numer sesji (generowany) i numer IP usera. Klient doniosl mi, ze w obrebie sieci w jego firmie, gdy loguje sie do strony na swoim komputerze, dostep do niej uzyskuja wszystkie inne komputery w sieci (wygenerowane ciasteczko jest odbierane przez wszystkie komputery). Nie potrafi okreslic w jaki sposob zbudowana jest siec. Mnie sie wydaje, ze uzywaja jednego numeru IP i proxy, ktore przechowuje ciacha.

Wiem, ze instalacja certa SSL rozwiazalaby problem, ale czy jest jakies inne wyjscie z tej sytuacji?

dzieki za pomoc
Kocurro
Przede wszystkim (w kolejności ważności):

- dobrze skonfigurowana domena,
- dobrze skonfigurowany serwer,
- nie wysyłanie maili na nieistniejące adresy,
- łapanie odbitych maili i zapisywanie w bazie, że taki mail odbija by więcej na niego nie wysyłać żadnych maili,
- nie wysyłanie zbyt wielkich ilości maili na dane domeny
- treść e-maili oraz nagłówków
- monitorowanie list spamowych i szybkie interweniowanie jak zostanie się dodanym

To powinno wystarczyć.

Pozdrawiam,
Łukasz
soska66
dzieki za info odnosnie mailowania aczkolwiek teraz bardziej potrzebne mi sa odpowiedzi na drugie pytanie (problem z ciachami w sieci lokalnej)
Kocurro
Albo

1) Nic z tym nie zrobisz - błąd leży w konfiguracji jego sieci. Jest ona zrobiona całkowicie źle i niebezpiecznie. Dziwne, że jeszcze nie stało się nic co naraziłoby go na koszty.

Niech lepiej zainwestuje w kogoś kto naprawi sieć

Albo

2) Za każdym razem generujesz taki sam identyfikator sesji smile.gif

Innych opcji nie ma.

Pozdrawiam serdecznie,
Łukasz
soska66
po krotce wyjasnie jak dziala logowanie w przypadku tego kodu. Moze uda ci sie wywnioskowac zrodlo problemu (jesli jest ono w kodzie)

1. Gdy uzytkownik loguje sie do systemu, a login i haslo zostaje potwierdzone:
a) zostaje wygenerowany 32 string bedacy ID dla sesji ($cookie) oraz pobrany ip uzytkownika ($client_addr)
b ) nastepuje zapis do bazy danych

  1. UPDATE user SET cookie = '$cookie', ip = '$client_addr' (plus kilka innych wartosci, jak czas logowania itp) WHERE id = $userid


c) zostaje utworzone ciacho z wartoscia ID sesji

  1. <?php
  2. setcookie("token", $cookie, time() + 3600, "/");
  3. ?>


2. Gdy uzytkownik jest zalogowany, to przy kazdorazowym odswiezeniu strony
a) pobrany zostaje ID sesji i adres uzytkownika
  1. <?php
  2. $token = $_COOKIE["token"];
  3. $clientIP = $_SERVER["REMOTE_ADDR"];
  4. ?>


b ) jesli $token istnieje
b1) funkcja pobiera id uzytkownika w oparciu o $token (id sesji)

  1. SELECT id FROM user WHERE cookie = '$token'


b2) jesli mysql zwroci id uzytkownika ($userId), kolejna funkcja autoryzuje go (funkcja wykonuje tez kilka innych zadan, nie istotnych dla problem

  1. SELECT id FROM user WHERE cookie = '$token' AND ip_addr = '$clientIP '


b3) jesli funkcja zwroci Id, tworzona jest klasa User($userId) ktora bierze udzial we wszystkich operacjach na uzytkowniku w dalszej czesci dzialania strony (podstrony)

c) wylogowanie
  1. UPDATE user SET cookie = NULL WHERE cookie = '$token' AND ip_addr = '$clientIP'

  1. <?php
  2. setcookie("token", "");
  3. ?>


Jedyny sposob jaki mi przychodzi do glowy zeby ciacho zostalo przejete przez sasiedni komputer w sieci, to wspolne ciacho dla wszystkich komputerow w sieci oraz wspolna wartosc $_SERVER["REMOTE_ADDR"]

Musze dac znac klientowi co moze zrobic on lub co moge zrobic ja zeby naprawic problem. Masz (macie) jakies pomysly? Jesli klient nie bedzie mogl zmienic konfiguracji sieci (co jest wielce prawdopodobne) czy SSL zalatwi sprawe?

Dodam, ze w oparciu o ten sam schemat logowania od 3 lat dziala kilkanascie innych stron. I jest to pierwszy przypadek zgloszenia takiego problemu
Kocurro
Ojojojoj - zmień to natychmiast bo od groma tutaj potencjalnych dziur.
soska66
Cytat(Kocurro @ 17.04.2009, 11:56:08 ) *
Ojojojoj - zmień to natychmiast bo od groma tutaj potencjalnych dziur.


Podpowiedz zatem jakich i jak moga zostac wykorzystane. Kod powstal zanim dolaczylem do 'zespolu' a ze napisal go doswiadczony programista (jest gosc dobry naprawde, byc moze ma braki smile.gif ) nigdy nie interesowalem sie ewentualnymi zmianami. Jak juz wspomnialem, dziala na nim kilkanascie stron i nigdy nie bylo problemow

Inna sprawa... z potencjalnymi dziurami czy bez.... jak to sie ma do opisywanego problemu z siecia tego goscia?
guitarnet.pl
jesli ten sam skrypt wysylajacy maile ktory wkleiles dziala na tych kilkunastu serwisach to radze wyslac "specjaliste" na urlop bo ma duuzo szczescia do tej pory..
moim zdaniem najczesciej ignorowanyproblem zwiazany z wysylaniem maili:
http://phpsense.com/php/php-mail.html

czestym problemem traktowania przesylek jako spam np przez gmaila to nieprawidlowy naglowek co mozesz uniknac korzystajac z jakiejs sprawdzonej klasy mailowej np http://www.phpguru.org/static/htmlMimeMail5.html

sprawdz tez czy serwer z ktorego wysylasz maile ma poprawne wpisy MX i SPF w DNS
w moim przypadku maile wysylane byly z domeny aaa.com (IP111) ale MX dla tej domeny byl na IP222 i wszystkie maile z z domeny aaa.com lecialy do spamu,zalozylem osobna domene bbb.com na IP111 i ustawilem MX na IP111 po tej zmianie o ile yahoo nie wrzucal przesylek do spamu gmail dalej markowal jako spam, po dopisaniu rekordu SPF gmail nie kwalifikuje przesylek jako spam, ani jeden IPani domena nie znajdowaly sie nigdy na zadnym RBL
soska66
dzieki za info na temat maili... rzuce okiem na zalinkowane materialy plus pobawie sie ta klasa mailowa

Nie wklejalem zadnego skryptu mailowego smile.gif Ino naglowki same

Wrocmy do kwestii tych ciasteczek ... z mailami juz mniej wiecej wiem co robic... natomiast nadal jestem w martwym punkcie z tym problemem sesji w sieci lokalnej

Podstawowe pytanie to czy wklejony przeze mnie schemat logowania, niezaleznie od tego czy jest dziurawy czy nie, moze miec wplyw na opisywany problem. Czy te 'dziury' maja z problemem bezposredni (albo nawet posredni) zwiazek

Jak juz sie z tym uporamy, wtedy poprosze ladnie Kocurro o streszczenie, w miare mozliwosci, jakie 'potencjalne' dziury niesie ze soba taki system logowania smile.gif
pyro
token tutaj nie jest tokenem (nie wprowadza praktycznie systemu tokenu) i jest tu podatnośc na SQL Injection
soska66
Wszystkie zmienne (i POST i COOKIE i SERVER) sa filtrowane przy kazdorazowym pobieraniu. Ino nie wstawilem tych funkcji do przykladow bo po co smile.gif

Sluchajta... wciaz nie dostaje odpowiedzi w kwestii problemu z ciachami w sieci lokalnej. A to jest dla mnie najwazniejsze w tej chwili. Czy powyzszy kod logowania, chocby nie wiem jak byl zrypany, moze powodowac skutki, ktore opisalem na poczatku watku (i powtorzylem w pierwszym poscie z dzis). Wylacznie o to mi narazie chodzi... o zwiazek kodu z problemem... powiedzmy, ze nie interesuja mnie kwestie dziur, filtrowania, wstrzykiwania itp do poki, do poty nie stanowia istoty TEGO problemu
erix
Cytat
Klient doniosl mi, ze w obrebie sieci w jego firmie, gdy loguje sie do strony na swoim komputerze, dostep do niej uzyskuja wszystkie inne komputery w sieci (wygenerowane ciasteczko jest odbierane przez wszystkie komputery). Nie potrafi okreslic w jaki sposob zbudowana jest siec. Mnie sie wydaje, ze uzywaja jednego numeru IP i proxy, ktore przechowuje ciacha.

Jeśli są za NAT-em, to sobie odpowiedziałeś - wspólne IP. Możesz spróbować sprawdzać nagłówek X-Forwarded-for, ale często go nie ma. Nie da się po IP wyszczególnić komputera z danej sieci, jeśli bramka tego nie dokleja do żądania HTTP.
soska66
Cytat(erix @ 17.04.2009, 16:06:10 ) *
Jeśli są za NAT-em, to sobie odpowiedziałeś - wspólne IP. Możesz spróbować sprawdzać nagłówek X-Forwarded-for, ale często go nie ma. Nie da się po IP wyszczególnić komputera z danej sieci, jeśli bramka tego nie dokleja do żądania HTTP.


No ale wciaz sa ciacha, ktore powinny byc przechowywane w 'pamieci' przegladarki. Czyzby faktycznie trzymaja ciacha na sewerze? Jaki w tym sens?
W kodzie najpierw sprawdzana jest wartosc COOKIE, ktora dla kazdego nowego uzytkownika jest inna (generowana przy logowaniu)... dopiero gdy to ciacho jest znalezione system porownuje adres IP...
erix
Trzeba by było się dowiedzieć, jakie proxy wykorzystują. Ale powinny wystarczyć odpowiednie nagłówki blokujące cache'owane i zmiana sprawdzania adresu IP, bo chyba o czymś wspomniałem. winksmiley.jpg
soska66
Cytat(erix @ 17.04.2009, 16:30:41 ) *
Trzeba by było się dowiedzieć, jakie proxy wykorzystują. Ale powinny wystarczyć odpowiednie nagłówki blokujące cache'owane i zmiana sprawdzania adresu IP, bo chyba o czymś wspomniałem. winksmiley.jpg


Rozumiem kwestie wspolnego IP. Natomiat jesli nie ma naglowka X-Forwarded-for, co jak sam wspomnialem jest czestym zjawiskiem, to w zasadzie sprawdzania IP nalezaloby sie wogole pozbyc.
Piszac o odpowiednich naglowkach blokujacych cache'owanie masz na mysli po prostu wpis META dla calej strony?

Co w tej sytuacji mozna zrobic.. oprzec logowanie na php'owkich sesjach?
erix
Cytat
Natomiat jesli nie ma naglowka X-Forwarded-for, co jak sam wspomnialem jest czestym zjawiskiem, to w zasadzie sprawdzania IP nalezaloby sie wogole pozbyc.

Do tego zmierzam.

Cytat
Piszac o odpowiednich naglowkach blokujacych cache'owanie masz na mysli po prostu wpis META dla calej strony?

header" title="Zobacz w manualu PHP" target="_manual i poczytaj.

Cytat
oprzec logowanie na php'owkich sesjach?

Najlepiej by chyba tak było.
guitarnet.pl
@blooregard
poleganie na HTTP_REFERER jest naiwne

@soska66
przyznam szczerze ze nie zdawalem sobie sprawy ze ciacha tez moga byc cachowane przez proxy (?)
probowales rejestrowac nazwe przegladarki, ip i jakiekolwiek inne dane uzytkownika sa dostepne?
to powinno w wiekszosci zidentyfikowac uzytkownikow jednej podsieci chociaz zawsze istnieje ryzyko ze w sieci jest wiecej niz jeden uzytkownik z taka sama wersja przegladarki i systemu
dadexix
session_set_save_handler" title="Zobacz w manualu PHP" target="_manual

A dodaj identyfikacje po systemie/przeglądarce


Zrób testowy skrypt na zwykłym $_SESSION, i sprawdz jak działa
soska66
witam ponownie

chcialbym odswiezyc temat, a dokladnie jego pierwsza czesc dotyczaca wysylania maili

otoz udalo mi sie rozwiazac kilka problemow z kwalifikowaniem maili jako spam, lub wogole ich nie dostarczaniem. Zastosowalem w tym celu jedna z gotowych klas znaleziona w necie (mshell_mail)

Teraz pojawia sie pytanie bardziej teoretyczne. Wlasciciele serwisu, z ktorego te maila sa wysylane, obawiaja sie bardzo umieszczenia adresu na spam-liscie w wyniku sporej ilosci wysylanych maili. Obecnie, jeden mail jest rozsylany do okolo 2000 osob (funkcja mailowa dziala w petli foreach dla kazdego adresu mailowego). A zatem w ciagu kilku sekund zostaje wyslanych 2000 maili z jednego adresu.

Nie moge zadac pytania, w jaki sposob usunac ryzyko umieszczenia na spam liscie, bo gdyby taki sposob byl, to spam-filtry nie mialy by racji bytu smile.gif Ale moze istnieje jakas metoda aby to ryzyko zminimalizowac. I nie chodzi tu o teorie naglowkow ani tresci maila, ale wlasnie o ilosc.
Klient nie chce po prostu aby adres jego strony byl 'kojarzony' ze spamem.

PS: wczoraj slyszalem o metodzie wysylania maili z innego IP niz sam serwis, dzieki czemu to ten wlasnie adres, a nie adres wlasciwej strony, znalazlby sie na spam-liscie. Dla mnie brzmi to bez sensu jednak smile.gif Rezultat bedzie przeciez taki sam - maile beda oznaczone jako spam smile.gif
erix
Cytat
Ale moze istnieje jakas metoda aby to ryzyko zminimalizowac. I nie chodzi tu o teorie naglowkow ani tresci maila, ale wlasnie o ilosc.
Klient nie chce po prostu aby adres jego strony byl 'kojarzony' ze spamem.

Porcjuj wysyłkę. Np. 20 maili co 15 minut.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.