Page 1 of 1

Mächtigkeit von PHP mail() begrenzen

Posted: 2005-02-20 20:26
by sapheriel
ich habe auf meinem server postfix mit virtuellen domainunterstützung über mysql eingerichtet. normalerweise sollten php scripte etc. nur dann mails versenden können in dem sie eine lokale smtp verbindung zu postfix aufbauen und sich mit benutzname und passwort authentifizieren.

ich habe jetzt aber bemerkt das sich ein script (post.php aus dem mambo open source paket) der mail() funktion von php bedient um mails lokal (ich nehme an über das sendmail kommando, aber ich kenn mich da nicht so gut aus) mit den rechten des webservers zu verschicken. ich möchte die mail fähigkeiten der lokalen user (also in diesem fall "www") aber nicht beschneiden damit fehlermeldungen auch weiterhin zuverlässig ankommen.

das problem ist, dass ich bei den so gesendeten mails nicht nachvollziehen kann von wem sie kommen. im maillog steht dann nur:
Feb 20 10:12:10 thargor postfix/pickup[2424]: 2E1DB8D40EA: uid=XXX from=<www>
Feb 20 10:12:10 thargor postfix/cleanup[2580]: 2E1DB8D40EA: message-id=<20050220091209.2E1DB8D40EA@domain.tld>
Feb 20 10:12:10 thargor postfix/qmgr[1233]: 2E1DB8D40EA: from=<www@domain.tld>, size=1585, nrcpt=1 (queue active)
Feb 20 10:12:10 thargor postfix/smtp[2585]: 2E1DB8D40EA: to=<XXX@web.de>, relay=mx-ha01.web.de[217.72.192.149], de
lay=1, status=sent (250 OK id=1D2n7l-0003CN-00)
Feb 20 10:12:10 thargor postfix/qmgr[1233]: 2E1DB8D40EA: removed
und damit lässt sich schlecht was anfangen. außerdem öffnet das spammern theoretisch tür und tor. auch kunden denen ich keine mail funktionalität anbiete können mail so viel sie wollen.

meine frage ist wo ich am besten ansetze um die sache abzusichern. php, postfix oder sogar apache?

Re: Mächtigkeit von PHP mail() begrenzen

Posted: 2005-02-20 20:39
by duergner
IMHO machst du das am besten in PHP.

Re: Mächtigkeit von PHP mail() begrenzen

Posted: 2005-02-20 21:10
by Joe User
PHP-CGI statt mod_php nutzen und/oder den fünften Parameter von mail(), beziehungsweise die zuständige Option in der php.ini (PHP5), entsprechend setzen.

Re: Mächtigkeit von PHP mail() begrenzen

Posted: 2005-02-20 21:51
by alexander newald
oder php als cgi und suexec

Re: Mächtigkeit von PHP mail() begrenzen

Posted: 2005-02-21 02:03
by wirsing
Drei Stichworte:
  • Apache-Konfigurationsanweisung php_value oder nach Geschmack auch php_admin_value
  • PHP-Konfigurationsvariable sendmail_path
  • sendmail-Option -f
Alles zusammenmischen, gut durchrühren und du kannst die Mails zumindest zurückverfolgen.

Re: Mächtigkeit von PHP mail() begrenzen

Posted: 2005-02-21 11:25
by sapheriel
ich nehme an dass heißt ich soll für jeden virtuellen host einen sendmail path mit eindeutiger absender adresse definieren. klingt gut, danke.

ich frage mich allerdings warum es keinen einfacheren weg gibt die funktion durch eine smtp variante zu ersetzen oder zumindest du deaktivieren. die sicherheitsprobleme die daraus entstehen sind zumindest mir (relativ unerfahrenen admin) offensichtlich.

Re: Mächtigkeit von PHP mail() begrenzen

Posted: 2005-02-21 12:04
by wirsing
Sapheriel wrote:[...]die funktion durch eine smtp variante zu ersetzen
So funktioniert das unter Windows, weil man da kein sendmail hat. Wenn du allerdings lokal einen MTA laufen hast, ist es Unsinn, noch eine zusätzliche TCP-Verbindung aufzubauen.
Sapheriel wrote:oder zumindest du deaktivieren.[...]
Geht auch. Es gibt eine PHP-Konfigurationsvariable, afair disabled_functions, mit der du das einstellen kannst - wenn du dir wirklich sicher bist, dass du das willst.

Re: Mächtigkeit von PHP mail() begrenzen

Posted: 2005-02-21 12:14
by sapheriel
wirsing wrote:
Sapheriel wrote:[...]die funktion durch eine smtp variante zu ersetzen
So funktioniert das unter Windows, weil man da kein sendmail hat. Wenn du allerdings lokal einen MTA laufen hast, ist es Unsinn, noch eine zusätzliche TCP-Verbindung aufzubauen.
aber anders lässt sich authentifizierung nicht umsetzen, oder doch?

Re: Mächtigkeit von PHP mail() begrenzen

Posted: 2005-02-21 12:30
by wirsing
Du hast mit der -f-Option ja bereits eine Form von Authentifizierung, und mail() ist eine oft genutzte und wichtige Funktion von PHP.
Es gibt allerdings auch PEAR-Module zum Versand von Email über SMTP mit Authentifizierung - da stellt sich allerdings die Frage, wie man das in bestehende Skripte einbaut.

Re: Mächtigkeit von PHP mail() begrenzen

Posted: 2005-02-21 17:30
by Joe User