Ole: Unterschiedliche SMTP-Server für verschiedene Domains

Guten Morgen,

ich bewege mich auf Neuland: PHP

In der php.ini kann man ja einen SMTP-Server einstellen (btw. PHP 5 unter Windows 2003 Server und IIS6). Nun ist es allerdings so, dass unser Mailserver so konfiguriert ist, dass er nur bekannte Absender durchläßt...im Prinzip ja selbstverständlich.
Jedoch hat jede Domain einen "eigenen" Mailserver der unter "mail.example.de" zu erreichen ist. Dieser verschickt auch nur Mails die von der Domain "example.de" kommen, nicht von "example2.de". Deren Mails würden nur über "mail.example2.de" verschickt werden können.

Gibt es eine Möglichkeit PHP so zu konfigurieren, dass Mails von unterschiedlichen Domains automatisch über den entsprechenden Mail-Server verschickt werden?

Danke
Ole
(8-)>

--
Stickstoff eignet sich nicht für Handarbeiten.
  1. Guten Morgen,

    ich bewege mich auf Neuland: PHP

    In der php.ini kann man ja einen SMTP-Server einstellen (btw. PHP 5 unter Windows 2003 Server und IIS6). Nun ist es allerdings so, dass unser Mailserver so konfiguriert ist, dass er nur bekannte Absender durchläßt...im Prinzip ja selbstverständlich.
    Jedoch hat jede Domain einen "eigenen" Mailserver der unter "mail.example.de" zu erreichen ist. Dieser verschickt auch nur Mails die von der Domain "example.de" kommen, nicht von "example2.de". Deren Mails würden nur über "mail.example2.de" verschickt werden können.

    Gibt es eine Möglichkeit PHP so zu konfigurieren, dass Mails von unterschiedlichen Domains automatisch über den entsprechenden Mail-Server verschickt werden?

    hm..

    Meiner Ansicht nach machst Du einen Grundlegenden Denkfehler:
    Du hast 2 Möglichkeiten:
    1. Du versendest Mails über die Mailfunktion in PHP oder Du mußt Deine SMTP Zugangsdaten angeben.
    Es solte diverse Klassen geben, die so etwas von Haus aus mitbringen,
    Bei der Auswahl des Mailservers mußt Du in diesem Fall nur noch die Abfrage von welchem Skript die Mail kam hinzufügen.

    Viele Grüße TomIRL

    1. Hi Tom

      Meiner Ansicht nach machst Du einen Grundlegenden Denkfehler:

      Gut möglich, ist ja meistens so, wenn man sich auf neuem Terrain bewegt und versucht mit dem Kopf durch die Wand zu kommen ;).

      1. Du versendest Mails über die Mailfunktion in PHP oder Du mußt Deine SMTP Zugangsdaten angeben.

      Ich hatte es so verstanden, dass mail() auf den in der php.ini hinterlegten SMTP-Server zurückgreift.

      Es solte diverse Klassen geben, die so etwas von Haus aus mitbringen,
      Bei der Auswahl des Mailservers mußt Du in diesem Fall nur noch die Abfrage von welchem Skript die Mail kam hinzufügen.

      Ich werd mich auf dem Gebiet mal weiterbilden müssen :)

      Danke
      Ole
      (8-)>

      --
      Stickstoff eignet sich nicht für Handarbeiten.
      1. Hi Ole,

        Ich hatte es so verstanden, dass mail() auf den in der php.ini hinterlegten SMTP-Server zurückgreift.

        Jein, stell dir bitte vor, dass im Idealfall eine Software wie PHP unter Linux läuft ;-) Deshalb gibt es auch den Parameter sendmail_path, dort gibt man normalerweise den Pfad zu Sendmail an und dahin gibt die Funktion mail() dann ihre Mails.

        Jetzt ist es ja aber leider so, dass man unter Windows im Normalfall kein Sendmail hat - deshalb muss eine Alternative her, unter Windows hat man i.d.R. einen lokalen Mail-Server, der wird dann über SMTP angesprochen. Dann verschickt die Funktion mail() die Mails über den lokalen Mail Server per SMTP. Beachte das Wort lokal, ein Mailserver nimmt lokale Mails normalerweise ohne weitere Prüfungen an und verschickt diese, sodass du über deinen lokalen Mail-Server alle Mails verschicken kannst, unabhängig vom Absender.

        Ich werd mich auf dem Gebiet mal weiterbilden müssen :)

        Wenn du weder Sendmail, noch einen lokalen Mailserver zur Verfügung hast, dann gibt es für die AFAIK keine Möglichkeit dein Problem mit einer einfachen PHP-Konfiguration zu lösen. In diesem Fall würde ich dir das PEAR-Packet Mail empfehlen.

        Das PEAR-Packet zu installieren wirst du selber schon irgendwie hinkriegen, wie man damit E-Mail über SMTP versendet zeigt dir folgendes Beispiel:

        ~~~php include('Mail.php');
            $recipients = "foo@example.org";
            $headers['From']    = 'Dennis dennis@example.org';
            $headers['To']      = $recipients;
            $headers['Subject'] = 'Hier gibts eine Mail von mir!';
            $params['host'] = "smtp.example.org";
            $params['port'] = 25;
            $params['auth'] = true;
            $params['username'] = "smtp-username";
            $params['password'] = "smtp-passwort";

        $mail_object =& Mail::factory('smtp', $params);
            $mail_object->send($recipients, $headers, $email_text);

          
        Vielleicht hilft dir das ja weiter ;-)  
          
          
        Viele Grüße aus Kanada,  
          ~ Dennis.
        
        -- 
        Mein [SelfCode](http://community.de.selfhtml.org/fanprojekte/selfcode.htm): [ie:{ fl:( br:> va:) ls:\[ fo:) rl:( n4:# ss:) de:\] js:| ch:{ sh:| mo:} zu:|](http://www.peter.in-berlin.de/projekte/selfcode/?code=ie%3A%7B+fl%3A%28+br%3A%3E+va%3A%29+ls%3A%5B+fo%3A%29+rl%3A%28+n4%3A%23+ss%3A%29+de%3A%5D+js%3A%7C+ch%3A%7B+sh%3A%7C+mo%3A%7D+zu%3A%7C)  
          
        [Weblog](http://riehle-web.com/blog/): [Ein Wochenende in Victoria](http://riehle-web.com/blog/log.php/2006/10/ein-wochenende-in-victoria) - [Mein neuer Regenschirm ;-)](http://riehle-web.com/blog/log.php/2006/10/mein-neuer-regenschirm)
        
        1. Hallo Dennis

          Jein, stell dir bitte vor, dass im Idealfall eine Software wie PHP unter Linux läuft ;-) Deshalb gibt es auch den Parameter sendmail_path, dort gibt man normalerweise den Pfad zu Sendmail an und dahin gibt die Funktion mail() dann ihre Mails.

          Aha...verstanden :)

          Jetzt ist es ja aber leider so, dass man unter Windows im Normalfall kein Sendmail hat - deshalb muss eine Alternative her, unter Windows hat man i.d.R. einen lokalen Mail-Server, der wird dann über SMTP angesprochen. Dann verschickt die Funktion mail() die Mails über den lokalen Mail Server per SMTP. Beachte das Wort lokal, ein Mailserver nimmt lokale Mails normalerweise ohne weitere Prüfungen an und verschickt diese, sodass du über deinen lokalen Mail-Server alle Mails verschicken kannst, unabhängig vom Absender.

          Dann muß ich wohl mal schauen, ob ich den Windows-STMP-Server ans laufen bekomme.

          Wenn du weder Sendmail, [...]

          Danke, ich werd mich da mal einarbeiten :)...sehe schon, hab noch viel vor mir :)

          so long
          Ole
          (8-)>

          --
          Stickstoff eignet sich nicht für Handarbeiten.
          1. Hallo Dennis

            Jein, stell dir bitte vor, dass im Idealfall eine Software wie PHP unter Linux läuft ;-) Deshalb gibt es auch den Parameter sendmail_path, dort gibt man normalerweise den Pfad zu Sendmail an und dahin gibt die Funktion mail() dann ihre Mails.

            Also ich kann dir die Pear Klasse nur nahe legen, da steht eigentlich alles drin, und Du musst quasie nur die ABfrage einbauen woher der Request kam..
            Viel Grüße TomIRL

  2. Hallo,

    die bisherigen Antworten haben mich schon ein großes Stück weiter gebracht, danke dafür :), allerdings verfolge ich noch einen zweiten Weg.

    Das senden von E-Mails mittels PHP über den IIS-SMTP-Server

    Ich hab den IIS-SMTP-Server nun ans laufen bekommen und so konfiguriert, dass er nur von "innen" genutzt werden kann.

    Das erstellen und versenden einer Testmail im "Pickup"-Ordner war auch erfolgreich. Jedoch gelingt es mir nicht PHP dazu zu bewegen diesen Mail-Server zu nutzen.

    Die relevanten Einstellungen in der php.ini sehen wie folgt aus

    [mail function]
    ; For Win32 only.
    SMTP = localhost
    smtp_port = 25

    ; For Win32 only.
    ;sendmail_from = me@example.com

    Jedoch: Weder Wordpress noch ein Testscript* verschicken eine Mail

    Hat jemand einen Tipp für mich, wie ich dieses Problem in den Griff bekomme?

    Danke
    Ole
    (8-)>

    *
    <?php
    // The message
    $message = "Diese Mail\nWurde mit\nPHP verschickt!";

    // In case any of our lines are larger than 70 characters, we should use wordwrap()
    $message = wordwrap($message, 70);

    // Send
    mail('olemail@web.de', 'Testmail', $message);
    ?>

    --
    Stickstoff eignet sich nicht für Handarbeiten.
    1. Hallo !

      Bin hier zwar gerade Windows-frei aber

      "Pickup"-Ordner

      klingt sehr nach "Spool-Verzeichnis".

      SMTP = localhost
      smtp_port = 25

      hast Du denn mal ein

      telnet localhost 25

      vesucht ?
      Bin mir nicht sicher ob Dein Server ueberhaupt  TCP-Transport akzeptiert.
      "Nach draussen" ist er naemlich der Client !

      Gruss

      Holger