php.de

Zurück   php.de > Webentwicklung > PHP-Fortgeschrittene

PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen

Antwort
 
LinkBack Themen-Optionen Bewertung: Bewertung: 1 Stimmen, 5,00 durchschnittlich.
Alt 25.06.2011, 11:51  
Neuer Benutzer
 
Registriert seit: 25.06.2011
Beiträge: 1
PHP-Kenntnisse:
Fortgeschritten
swissdude befindet sich auf einem aufstrebenden Ast
Standard E-Mail auslesen und an eine neue Adresse weiterleiten

Hallo allerseits

Über die Suchfunktion habe ich bereits einige Themen zu Mail-Weiterleitungen gesehen, aber die halfen mir bisher nicht weiter.

Worum geht's?
Ein Catch-All sammelt alle Mails an die Domain foo.com und schickt sie an ein Script. Dort wird der Inhalt der Mail ausgelesen mit:

Code:
$email = file_get_contents('php://stdin');
In einer Datenbank wird die adäquate private Mailadresse des zugehörigen Benutzers ausgelesen. An diese Adresse soll die Mail weitergeleitet werden (und zwar inkl. allfälliger Anhänge).

$email als Message oder additional Header mittels mail() versenden, funktioniert nicht.

Ich habe auch versucht, die Mimeparser-Klasse von Manuel Lemos einzubinden. Immerhin lässt sich damit die Mail in alle erdenklichen Bestandteile zerlegen. Doch wie ich damit erfolgreich weiterfahre, ist mir nicht ganz klar.

Vielleicht kann mir hier jemand weiterhelfen.
swissdude ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 25.06.2011, 12:18  
Erfahrener Benutzer
 
Benutzerbild von lstegelitz
 
Registriert seit: 07.09.2009
Beiträge: 4.005
PHP-Kenntnisse:
Fortgeschritten
lstegelitz ist einfach richtig nettlstegelitz ist einfach richtig nettlstegelitz ist einfach richtig nettlstegelitz ist einfach richtig nett
Standard

Zitat:
Zitat von swissdude Beitrag anzeigen
Doch wie ich damit erfolgreich weiterfahre, ist mir nicht ganz klar.

Was willst du denn mit dem Inhalt machen? Oder anders gefragt: Woher sollen wir wissen, was du unter "erfolgreich weiterverarbeiten" verstehst?

Weiterversenden... na, das wirst du ja wohl noch hinkriegen - in welcher Form auch immer. DU definierst doch die Endanwendung oder etwa nicht?

Zitat:
Zitat von swissdude Beitrag anzeigen
In einer Datenbank wird die adäquate private Mailadresse des zugehörigen Benutzers ausgelesen. An diese Adresse soll die Mail weitergeleitet werden (und zwar inkl. allfälliger Anhänge).

$email als Message oder additional Header mittels mail() versenden, funktioniert nicht.
Besorg dir eine Mailerklasse. Entpack die Mail inkl. aller Anhäge (Klasse dafür hast du ja schon wie du sagst). Erstell eine neue Mail an das Ziel, da kannste dann den Text, die Header und auch alle Anhänge wieder dranpacken.
__________________
Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.
lstegelitz ist offline   Mit Zitat antworten
Alt 25.06.2011, 13:15  
Erfahrener Benutzer
 
Benutzerbild von tr0y
 
Registriert seit: 26.07.2010
Beiträge: 4.874
PHP-Kenntnisse:
Fortgeschritten
tr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblick
tr0y eine Nachricht über MSN schicken
Standard

Meiner Meinung nach falscher Ansatz. Der Mailserver sollte nicht mit einem Script interagieren sondern das Script mit dem Mailserver. Ich würde per IMAP auf den Mailserver zugreifen auf dem der Catch-All liegt. Dort auf Mails prüfen. Sind welche da die jeweiligen Mails ohne sie zu öffnen direkt so wie sie sind an die jeweiligen "neuen Mailadressen" weiterleiten.

Das ganze hinkt aber hinten wie vorne. Der "Best Practise"-Fall in deinem Fall ist wohl das einrichten von Mail-Aliasen, die direkt auf eine x-beliebige Mailadresse weiterleiten. Der Großteil der Backendsysteme ( Confixx und Co ) bietet dafür super einfache Einstellungsmöglichkeiten. Zusätzlich zu der Administrations für den eigentlichen Server-Admin bieten sie ebenfalls spezielle Userbereiche für die einzelnen Alias-Nutzer. So das jeder der bei dir ein Alias hat frei entscheiden kann ob und wann und wohin die Mails umgeleitet werden können. Als Bonus könnte man dort sogar Away-Mails festlegen. Die beispielsweise im Falle von Urlaub an die Absender der reinkommenden Mails als Auto-Reply senden kann.

Dieses Hosting-Environment ist so konzipiert das es am Ende aller Aktionsketten greift. Was bei deinem Mail-Script wahrscheinlich garnicht bedacht wird. Greifst du beispielsweise vor Brückenscripts die z.b. mit Spamassassin oder einer Antivirensoftware interagieren auf die Mails zu und verteilst sie neu, setzt du dort Sicherheitsmechanismen ausser Kraft. Was ja irgendwo nicht im Sinne des Erfinders sein kann.

Kleiner Nachtrag:
Es gibt zu PHP alternativ noch eine spezielle Mail-Director Sprache, genannt Sieve. Die speziell zur Mailverwaltung entwickelt wurde. Erwähne ich hier auch gleichauf mit dem Einwand das User - Aliase erzeugt werden müssen, die dann auch automatisiert über Sieve von den Usern "more advanced" verwaltet werden können.

Zum anschauen: http://de.wikipedia.org/wiki/Sieve
__________________
Lasse mir ohne Anwendung von Gewalt Dinge schenken, Amazon weiß darüber bald mehr.

Geändert von tr0y (25.06.2011 um 13:25 Uhr). Grund: Sieve Link hinzugefügt
tr0y ist gerade online   Mit Zitat antworten
Alt 27.06.2011, 16:43  
Erfahrener Benutzer
 
Registriert seit: 19.06.2009
Beiträge: 837
PHP-Kenntnisse:
Fortgeschritten
Jens Clasen ist einfach richtig nettJens Clasen ist einfach richtig nettJens Clasen ist einfach richtig nettJens Clasen ist einfach richtig nettJens Clasen ist einfach richtig nett
Standard

Dem muss ich zumindest im Ansatz widersprechen, bzw. es kommentieren:

1) Es ist durchaus nicht unüblich für Mailservertransports, Filter und co, eingehende Mails via STDIN entgegen zu nehmen.

2) IMAP hat keine Versandmöglichkeit. Mails ohne öffnen weiterleiten geht also nicht. Es gibt allerdings durchaus Mailserver, die einen speziellen Postausgangsordner überwachen und Mails von dort versenden. Das funktioniert allerdings im Regelfall nicht bei Ansprache via IMAP. Polling und Versand auf PHP/Imap-Basis ist der schlechteste wählbare weg.

3) Zum Stichwort Best Practice: Confixx und Co sind hier die falschen Stichworte. Die gängigen Mailserver bieten allerdings im Regelfall die Möglichkeit einer Alias-Konfiguration, z.T. auch auf Datenbank oder zumindest Directory-Basis. Es ist also durchaus möglich, einen Mailserver so zu konfigurieren, dass er die Aliase kennt und selbständig verarbeitet. Eine Catch-All-Adresse braucht es dafür nicht.

4)
Zitat:
Dieses Hosting-Environment ist so konzipiert das es am Ende aller Aktionsketten greift. Was bei deinem Mail-Script wahrscheinlich garnicht bedacht wird. Greifst du beispielsweise vor Brückenscripts die z.b. mit Spamassassin oder einer Antivirensoftware interagieren auf die Mails zu und verteilst sie neu, setzt du dort Sicherheitsmechanismen ausser Kraft. Was ja irgendwo nicht im Sinne des Erfinders sein kann.
Das ist das typische Vorgehen. Alles was die vorherigen Sicherheitsmechanismen fressen, kommt beim angesprochenen Transport im Regelfall gar nicht mehr an.

Zumindest sendmail und postfix arbeiten genau nach dem beschriebenen Muster. Und wenn man die Nummer mal durchdenkt, dann ist das auch logischer, serverseitig nach allen Eingangsüberprüfungen ein Weiterversandevent zu triggern, als ein Polling irgendwelcher Form zu implementieren.

5) Sieve ist sicherlich eine brauchbare Möglichkeit für sowas. Allerdings halte ich auch das für übertriebenen Aufwand. Ich würd mir da insgesamt eher einfach den passenden Mailserver für suchen und dem den Weiterversand aufs Auge drücken. Das einzige, was ich an der Stelle überhaupt programmieren würde, ist die Software zur Pflege der Aliasliste.

6) Wenn ich schon ein wie auch immer geartetes Skript implementieren würde, dass in irgendeiner Form Daten auf STDIN entgegen nimmt, dann würd ich maximal diesen Stream on the fly modifzieren und via eines anderen Streams ans passende Mailversand-Binary oder einen geeigneten SMTP-Diemt raus pusten. Eins von beiden bringt der jeweils eingesetzte Mailserver sicherlich ebenso mit sich, wie die grundsätzliche Möglichkeit, solche Skripte überhaupt anzusteuern. Mehr als eine zusätzliche "Received:"-Zeile und ein modifiziertes Ziel (was ja nicht mal zwingend via "To"-Header passieren muss) hängt an der Nummer ja nicht drann.

Gruß Jens
Jens Clasen ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
PHP Problem beim Weiterleiten aufeine neue Seite Muchi123 Scriptbörse 5 14.09.2010 21:47
Auslesen eines HTML-Skripts und Versenden per mail() B2112 PHP Tipps 2009 2 04.11.2009 22:19
Ip Adresse auslesen und vergleichen EmHa PHP Tipps 2009 28 21.05.2009 23:53
Datei auslesen -> Neue Zeile haiyyu PHP Tipps 2009 1 15.05.2009 19:53
[Erledigt] referer auf jeder seite auslesen und in neue session-variable speichern Gregor01 PHP Tipps 2009 3 06.05.2009 13:23
Bilder auslesen und nach 5 Bildern eine neue Zeile FireFIghter PHP Tipps 2006 1 09.03.2006 19:01
Datei auslesen und als Mail schicken! Broadcast PHP Tipps 2005-2 2 12.08.2005 14:29
Kontaktformular, welches auf neue html Seite führt PHP Tipps 2005-2 4 20.07.2005 11:21
IP Adresse auslesen über php tennessee PHP Tipps 2005 10 17.05.2005 16:46
php mail() header & Spam Problem PHP-Fortgeschrittene 4 04.05.2005 12:31
Mail Adresse aus einer Datenbank auslesen? Stemmi Datenbanken 6 23.04.2005 23:24
Mail weiterleiten Ryson PHP Tipps 2005 3 28.03.2005 15:02
mail() - mail header PHP-Fortgeschrittene 2 28.09.2004 15:35
Adresse beim Suchmaschineneintrag ändern? Beitragsarchiv 6 02.08.2004 22:49
Mail weiterleiten PHP Tipps 2004 1 30.06.2004 23:47

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php mail weiterleiten script, php stdin ip auslesen, email weiterleitung mit neuer adresse, php imap weiterleitung, neuste email auslesen php, aus email weiterleitung email adressen auslesen, adressen aus mails auslesen, php imap weiterleitung script 2011, php script email auslesen, email adresse auslesen php und wiedergeben, mails auf server auslesen und weiterleiten, e mail-adressen aus weiterleitung extrahieren, via php auf imap mail auslesn, php imap ganze from adrese auslesen, email mit php auslesen 2011, php stdin einlesen postfix, php imap e-mail weiterleitung, mails auslesen, email weiterleitung auslesen, php mails auslesen

Alle Zeitangaben in WEZ +2. Es ist jetzt 00:58 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum