RomanD: Absender-IP aus Mailheader auslesen

Hi,

ich suche eine Möglichkeit, mit PHP die IP des Absende-Servers einer E-Mail rauszufinden.
Kann mir jemand weiterhelfen?

Gruß

  1. Hallo Roman,

    ich suche eine Möglichkeit, mit PHP die IP des Absende-Servers einer E-Mail rauszufinden.

    Was hast Du versucht?
    Wo bist Du hängengeblieben?

    Ist Dir klar, dass die Angaben im Header gefälscht sein können?

    Freundliche Grüße

    Vinzenz

    1. Hallo Vinzenz,

      Ist Dir klar, dass die Angaben im Header gefälscht sein können?

      Alle?
      Die von Roman benötigten Zeilen müssten doch eigentlich von seinem eigenen MTA eingefügt worden sein? Da sollte er doch wissen, ob sie gefälscht sind.

      Oder habe ich das jetzt falsch verstanden?

      LG
      Chris©

      1. Hallo

        Ist Dir klar, dass die Angaben im Header gefälscht sein können?

        Alle?

        Nein, nicht alle.

        Die von Roman benötigten Zeilen müssten doch eigentlich von seinem eigenen MTA eingefügt worden sein? Da sollte er doch wissen, ob sie gefälscht sind.

        Wieso?

        Oder habe ich das jetzt falsch verstanden?

        Ich habe Roman so verstanden, dass er von einer x-beliebigen Mail die IP-Adresse des Mailservers des Absenders ermitteln möchte. Das ist normalerweise nicht der eigene.

        Freundliche Grüße

        Vinzenz

        1. Hallo Vinzenz,

          Ich habe Roman so verstanden, dass er von einer x-beliebigen Mail die IP-Adresse des Mailservers des Absenders ermitteln möchte. Das ist normalerweise nicht der eigene.

          Von welchem Mailserver wird denn die IP des Absenders in die Header der Mail eingesetzt? Ich ging davon aus, dass dies der empfangene MTA, also der eigene tut. Er übermnimmt hier doch die Daten aus dem HELO / EHLO oder bekommt er die vom Absender-MTA vorgesagt und überprüft sie nicht?

          LG
          Chris©

          1. Hellihello

            Ich habe Roman so verstanden, dass er von einer x-beliebigen Mail die IP-Adresse des Mailservers des Absenders ermitteln möchte. Das ist normalerweise nicht der eigene.

            Von welchem Mailserver wird denn die IP des Absenders in die Header der Mail eingesetzt? Ich ging davon aus, dass dies der empfangene MTA, also der eigene tut. Er übermnimmt hier doch die Daten aus dem HELO / EHLO oder bekommt er die vom Absender-MTA vorgesagt und überprüft sie nicht?

            Mal eine unqualifizierte Zwischenfrage: jeder Mailserver kennt doch nur die IP seines Vorgängers, also des Servers, von dem er was reingereicht bekommt. Und von dem erhält er gesagt, was von wem der die erhalten hat etc.pp. Also kennt der eigene Server nur die IP des Servers, der ihm die Mail reinreicht sowie dessen "IP-Log"...????

            Dank und Gruß,

            frankx

            --
            tryin to multitain  - Globus = Planet != Welt
  2. Moin!

    ich suche eine Möglichkeit, mit PHP die IP des Absende-Servers einer E-Mail rauszufinden.
    Kann mir jemand weiterhelfen?

    Die IP des letzten sendenden Mailservers vor deinem empfangenden Mailserver steht in der obersten "Received"-Zeile des Mailheaders (sofern auf dem Weg vom veröffentlichten MX bis zu deinem Postfach sich nur ein Mailserver einträgt - ansonsten ist eine spätere Zeile auszuwerten).

    Alle späteren derartigen Zeilen wurden entweder von den vorherigen Mailservern erzeugt, oder gefälscht. Da man das der Zeile nicht ansehen kann, ist sie zur Spamabwehr relativ wertlos.

    Das Zeilenformat ist von der verwendeten Mailserversoftware abhängig und unterscheidet sich mehr oder weniger stark. Da auf der Welt aber nur ein oder zwei Handvoll Mailsoftware im größeren Maßstab eingesetzt wird, wäre ein diesbezüglicher Anpassungsaufwand vertretbar.

    Alternativ könnte man einen eigenen Mailserver auch konfigurieren, diese Information noch einmal netter auswertbar in einem eigenen Mailheader auszuwerfen.

    - Sven Rautenberg

    --
    "Love your nation - respect the others."
    1. Hi,

      also mein Mailserver erzeugt die oberste Received-Zeile in folgendem Format:

      Received: from fmmailgate05.web.de (fmmailgate05.web.de [217.72.192.243])
       by xyz.meinserver.com (Postfix) with ESMTP id D72BB3E3DD
       for webmaster@meinedomain.de; Fri,  7 Mar 2008 10:56:41 +0100 (CET)

      Leider habe ich es nicht so mit regulären Ausdrücken um die IP in den eckigen Klammern auszulesen.

      Es müsste geprüft werden, ob in der Received: Zeile eckige Klammern stehen, und ob in der nächsten Zeile "by xyz.meinserver.com" steht.

      Kann mir dabei jemand weiterhelfen?

      Gruß

      1. Moin!

        Leider habe ich es nicht so mit regulären Ausdrücken um die IP in den eckigen Klammern auszulesen.

        Du wirst nie ein effektiver Programmierer, wenn du dich um das Erlernen von regulären Ausdrücken weiterhin drückst.

        Dabei handelt es sich hierbei um einen wirklich simplen regulären Ausdruck, ideal zum Lernen geeignet.

        Du suchst eine öffnende eckige Klammer, dann 1-3 Ziffern, dann einen Punkt, dann 1-3 Ziffern, dann einen Punkt, ... und dann eine schließende eckige Klammer. Das zwischen den eckigen Klammern willst du als String weiterverarbeiten, das soll dir also herausgelöst geliefert werden.

        Es müsste geprüft werden, ob in der Received: Zeile eckige Klammern stehen, und ob in der nächsten Zeile "by xyz.meinserver.com" steht.

        Das ist ein simples prüfen auf strpos()!==false.

        - Sven Rautenberg

        --
        "Love your nation - respect the others."
        1. Hi,

          Du suchst eine öffnende eckige Klammer, dann 1-3 Ziffern, dann einen Punkt, dann 1-3 Ziffern, dann einen Punkt, ... und dann eine schließende eckige Klammer. Das zwischen den eckigen Klammern willst du als String weiterverarbeiten, das soll dir also herausgelöst geliefert werden.

          Dafür lohnt sich eigentlich ein Regex auch nicht. Finde die Position der öffnenden eckigen Klammer. Finde die Position der (darauf folgenden) schließenden eckigen Klammer. Nimm den Teilstring dazwischen.

          cu,
          Andreas

          --
          Warum nennt sich Andreas hier MudGuard?
          O o ostern ...
          Fachfragen unaufgefordert per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.