php 5.3 został wprowadzony, aby uzyskać lepsze śledzenie poczty, ale nie jestem pewien, czy tak się stało. (edycja: tak php 5.3 ma teraz wbudowane logowanie - php.ini ma zmienną konfiguracyjną mail.log, która będzie rejestrować użycie poczty z kodu php.)
Rozwiązaliśmy problem, czyniąc sendmail skryptem powłoki.
W php.ini ustaw nowy mailer. Na przykład:
sendmail_path = /usr/local/bin/sendmail-php -t -i
Skrypt sendmail-php po prostu używa rejestratora, aby uzyskać informacje, a następnie wywołuje system sendmail:
#!/bin/bash
logger -p mail.info -t sendmail-php "site=${HTTP_HOST}, client=${REMOTE_ADDR}, script=${SCRIPT_NAME}, filename=${SCRIPT_FILENAME}, docroot=${DOCUMENT_ROOT}, pwd=${PWD}, uid=${UID}, user=$(whoami)"
/usr/sbin/sendmail -t -i $*
Spowoduje to zalogowanie do dowolnego ustawienia mail.info w pliku syslog.conf.
Inną sugestią jest zainstalowanie rozszerzenia php suhosin, aby zmniejszyć luki w PHP, chyba że używasz Debiana lub Ubuntu, gdzie jest to już domyślne.
Rozwiązanie tego wymaga kilku kroków. Powyższe rozwiązanie labradort tak naprawdę nie działa, ponieważ skrypt rejestrujący jest skryptem bash, a nie php, a skrypt bash nie ma dostępu do zmiennych php, więc logi są puste. Zasadniczo wszystko, co chcesz zarejestrować, musi zostać zapisane w zmiennych środowiskowych w php przed wysłaniem wiadomości e-mail, aby rejestrator miał dostęp do danych. Ponieważ próbujesz wykryć skrypty innych użytkowników, niekoniecznie własne, nie masz kontroli nad kodem php, więc musisz użyć funkcji auto_prepend_file PHP, aby upewnić się, że wszystkie uruchomione php uruchomią kod inicjujący przed wszystkim innym. Dodałem następujący kod za pośrednictwem php.ini, aby upewnić się, że mam potrzebne dane w rejestratorze:
Przygotowałem pełny samouczek, jak to zrobić, tutaj: http://mcquarrie.com.au/wordpress/2012/10/tracking-down-malicious-php-spam-scripts/
źródło
Istnieje łatka dla PHP, która pokaże, który skrypt generuje wiadomości e-mail, dodając nagłówek do wysyłanej wiadomości e-mail. Nie testowałem tego, ponieważ nie lubię łatać rdzenia PHP, ale słyszałem dobre rzeczy.
źródło
Będziesz musiał przeszukać dzienniki dostępu w celu dopasowania ich do przedziału czasowego, w którym wiadomości zostały dodane do bufora.
źródło
Może po prostu przeszukiwać pliki źródłowe pod kątem „mail (” podciąg?
źródło
Po prostu włącz je na swoim php.ini
następnie utwórz ten plik i udziel zezwolenie na zapis. Potem spójrz na to.
źródło