Mam poblem z wysyłką maili generowanych przez skrypt php

Nie mogę uruchomić skryptu napisanego w php, który wysyła maila. Skrypt posługuje się funkcją mail(). Skrypt bezproblemowo działał na innym serwerze internetowym, a przegrany na one.hards.pl nie działa.
Czy jest u Was założona jakaś blokada takich skryptów?


Odpowiedź:
Funkcja mail() w skryptach php nie jest blokowana, niemniej korzystanie z niej wymaga przestrzegania pewnych reguł. Przede wszystkim blokowane są próby wysyłania mali, kiedy w wywołaniu funkcji mail nie podano adresu nadawcy lub też podjęto próbę wysłania maila od użytkownika 'nobody' na zewnętrzne adresy.

Aby wysyłka maila z użyciem funkcji mail() zakończyła się sukcesem, muszą być spełnione nast. warunki:

  1. Niedozwolone jest wysyłanie poczty email od użytkownika 'nobody' (u nas nobody@one.hards.pl) na zewnętrzne adresy - wiadomości tego typu są ignorowane przez serwer pocztowy (skrypty PHP i CGI zwykle uruchamiane są z poziomu użytkownika 'nobody' , jeśli nie używany jest mechanizm PHPSuexec lub Suexec.).
    W w/w sytuacji  serwer nie mógłby powiadomić nadawcy, że jego wiadomość nie została dostarczona, bo nadawcą jest 'nobody'.
    Aby problem rozwiązać - w funkcji mail koniecznie trzeba wyspecyfikować parametr "from".
  2. Parametr "from" musi zawierać prawidłowy adres nadawcy emaila.
    Oto zasady weryfikacji adresu email nadawcy:
    - jeśli użytkownik lokalny (konto email lub alias pocztowy, obsługiwane przez serwer one.hards.pl ), to konto email musi istnieć.
    - jeśli użytkownik zewnętrzny (konto email obsługiwane przez obcy serwer), to domena tego konta musi istnieć)
  3. Mail musi być poprawnie zbudowany.
    system pocztowy sprawdza, czy nagłówek wiadomości jest poprawnie skonstruowany - w szczególności badana jest poprawność zastosowanych znaków w nagłówku maila: From, To, Subject, Replay-to, gdyż część serwerów pocztowych nie akceptuje nagłówków, jeżeli nie są zapisane w formacie 'Non-encoded 8-bit data' (inaczej zwany 'printable').

    /The RFC 2822 standard specifies rules for forming internet messages.
    It does not allow the use of characters with codes above 127 to be used
    directly (non-encoded) in mail header (it also prohibits NUL and bare CR).
    If characters (e.g. with diacritics) from ISO Latin or other alphabets
    need to be included in the header, these characters need to be properly
    encoded according to RFC 2047. This encoding is often done transparently
    by mail reader (MUA), but if automatic encoding is not available (e.g.
    by some older MUA) it is the user's responsibility to avoid the use
    of such characters in mail header, or to encode them manually. Typically
    the offending header fields in this category are 'Subject', 'Organization',
    and comment fields in e-mail addresses of the 'From', 'To' and 'Cc'.
    Sometimes such invalid header fields are inserted automatically
    by some MUA, MTA, content checker, or other mail handling service.
    If this is the case, that service needs to be fixed or properly configured.
    Typically the offending header fields in this category are 'Date',
    'Received', 'X-Mailer', 'X-Priority', 'X-Scanned', etc./


UWAGA!

Od 1 czerwca 2012 planowane jest wprowadzenie dodatkowych restrykcji na działanie funkcji mail() w skryptach php. Nowe restrykcje ograniczają działanie funkcji mail() w taki sposób, że maile wysłane z użytkownika nobody będą dostarczane jedynie dla adresów z lokalnego serwera, nie zostaną dostarczone jednak na adresy zewnętrzne(remote).

Problem należy rozwiązać wprowadzając skrypty z autoryzacją smtp, wysyłające maile z konkretnego, lokalnego konta email.

Prevent the user "nobody" from sending out mail to remote addresses (PHP and CGI scripts generally run as nobody if you are not using PHPSuexec and Suexec respectively).