felix: MX-Einträge mit getmxrr

Themen dazu im Archiv:

http://forum.de.selfhtml.org/archiv/2005/9/t114628/#m731397
http://forum.de.selfhtml.org/archiv/2004/6/t83277/#m486493

Hi,

Ich habe eine Frage zu der Funktion getmxrr(), da diese im PHP-Manual leider nur sehr schlecht dokumentiert ist.

Wie mir inzwischen klar geworden ist, sortiert die Funktion getmxrr bzw. der Domain Name Server bei der Anfrage, die MX Einträge nicht nach Prioritäten, was ja durchaus hätte sein können.

Es gibt bei vielen Domains aber MX-Einträge mit gleichen Prioritäten. Und dazu jetzt meine Frage:

Sollte man sich immer einen zufälligen MX-Eintrag aus denen mit gleicher Priorität aussuchen, um die E-Mail Last gleichmäßig zu verteilen? Denn wenn alle immer den ersten nehmen würden, wäre das ja keine sinnvolle Lastenverteilung.

Oder ist es so, dass die MX-Eintäge mit gleicher Prio auf dem Domain Name Server bereits in der gewünschten Reihenfolge vorliegen? (z.b. kommt der verbindungstechnisch nächstliegende Server an erster Stelle)

Beispiele:

web.de:

web.de  MX preference = 100, mail exchanger = mx-ha01.web.de
web.de  MX preference = 110, mail exchanger = mx-ha02.web.de

gmx.de:

gmx.de  MX preference = 10, mail exchanger = mx0.gmx.de
gmx.de  MX preference = 10, mail exchanger = mx0.gmx.net

  1. Moin!

    Wie mir inzwischen klar geworden ist, sortiert die Funktion getmxrr bzw. der Domain Name Server bei der Anfrage, die MX Einträge nicht nach Prioritäten, was ja durchaus hätte sein können.

    Vermutlich, weil das DNS-Ergebnis auch nicht sortiert ist.

    Sollte man sich immer einen zufälligen MX-Eintrag aus denen mit gleicher Priorität aussuchen, um die E-Mail Last gleichmäßig zu verteilen? Denn wenn alle immer den ersten nehmen würden, wäre das ja keine sinnvolle Lastenverteilung.

    Welcher Eintrag der erste ist, hängt ja davon ab, wie du den "ersten" ermittelst. Unter der Annahme, dass die unsortierte Reihenfolge nicht fest ist, sondern variieren kann, kommt auch ein Sortieralgorithmus nicht immer zum gleichen Ergebnis. Zumal man ja beispielsweise auch vom Sortieren absehen kann, sondern die unsortierte Liste einfach von oben nach unten durchgeht und das Minimum der Priorität sucht. Wenn die Reihenfolge sich ändern kann, ist auch der bevorzugte Mailserver immer mal ein anderer.

    Lastverteilung sollte übrigens kein Grund für mehrere gleiche Prioritäten sein. Wer Lastprobleme auf seinen Mailservern hat, hat deutlich andere Möglichkeiten, dagegen aktiv zu werden. Mehrere MX sollen primär ermöglichen, bei Unerreichbarkeit eines Servers einen zweiten nutzen zu können.

    Ich würde mir jedenfalls keine Gedanken machen, was die Auswahl angeht.

    Denk aber dran, dass getmxrr() nicht die einzige Methode ist, einen zuständigen Mailserver zu finden (auch wenn es ungewöhnlich ist, wenn kein MX-Record existiert).

    Oder ist es so, dass die MX-Eintäge mit gleicher Prio auf dem Domain Name Server bereits in der gewünschten Reihenfolge vorliegen? (z.b. kommt der verbindungstechnisch nächstliegende Server an erster Stelle)

    Nein, der Ort des Servers hat mit der Reihenfolge nichts zu tun.

    - Sven Rautenberg

    --
    "Love your nation - respect the others."
    1. Lastverteilung sollte übrigens kein Grund für mehrere gleiche Prioritäten sein. Wer Lastprobleme auf seinen Mailservern hat, hat deutlich andere Möglichkeiten, dagegen aktiv zu werden. Mehrere MX sollen primär ermöglichen, bei Unerreichbarkeit eines Servers einen zweiten nutzen zu können.

      Gut, danke, ich hatte irgendwie angenommen, das hätte mit Lastverteilung zu tun.

      Ich würde mir jedenfalls keine Gedanken machen, was die Auswahl angeht.

      OK, das machts auch einfacher ;)

      Denk aber dran, dass getmxrr() nicht die einzige Methode ist, einen zuständigen Mailserver zu finden (auch wenn es ungewöhnlich ist, wenn kein MX-Record existiert).

      Bezieht sich das auf deinen Beitrag vom September 2005?

      1. getmxrr() für die Domain "example.org". Alle damit herausgefundenen Mailserver nehmen Mail für die Domain an, bevorzugt ist der Mailserver mit der niedrigsten Prioritätszahl zu wählen.
      2. Wenn Schritt 1 kein Ergebnis brachte, dann gethostbyname() mit "example.org". Die resultierende IP ist zu kontaktieren.

      Das Nachschlagen der IP übernimmt fsockopen('example.org', 25, ...);

      Wie ist es mit dem Port? Reicht es immer nur auf Port 25 anzusprechen (auch die MX Hosts) oder sollte man auch andere probieren? Z.B. Port 587 => "submission".

      Viele Grüße,
      Felix

      1. Moin!

        Denk aber dran, dass getmxrr() nicht die einzige Methode ist, einen zuständigen Mailserver zu finden (auch wenn es ungewöhnlich ist, wenn kein MX-Record existiert).

        Bezieht sich das auf deinen Beitrag vom September 2005?

        Richtig.

        Wie ist es mit dem Port? Reicht es immer nur auf Port 25 anzusprechen (auch die MX Hosts) oder sollte man auch andere probieren? Z.B. Port 587 => "submission".

        Auf dem Submission-Port kannst du nur einliefern, wenn du als User einen Account auf dem Server hast. Jedenfalls sollte es so sein. Dieser Port ist für MUAs zuständig, nicht für MTAs.

        Der gewöhnliche SMTP-Versand läuft ausschließlich auf Port 25.

        - Sven Rautenberg

        --
        "Love your nation - respect the others."
        1. Okay, vielen Dank für die Hilfe!
          Grüße,
          Felix