Extern Email Konto anlegen.

graf_rudolf

New Member
Hallo liebe Community,
Ich würde gerne meinen Benutzern ein E-mail Konto zu verfügung stellen.
Ist es möglich das durch ein Formular auf meiner Webseite, ein E-Mail Konto angelegt wird? Sodass sich danach jeder der sich angemeldet hat im Webmail einloggen kann?

Danke;-)
 

graf_rudolf

New Member
alles klar danke;-)
Leider klappt es bei mir mit der API noch nicht so ganz.
Hier erstmal der Code meine .php Datei.
PHP:
<?php
   
  $username = 'XXXX'; // API User
  $password = 'XXXX'; // API PW
   
  $myusername = 'test@meine-domain.de'; //Mail User
  $mypassword = 'test'; // Mail PW
   
  $soap_location = 'https://localhost:8080/remote/index.php'; //'http://localhost:8080/ispconfig3/remote/index.php'

  $soap_uri = 'https://localhost:8080/remote/'; // 'http://localhost:8080/ispconfig3/interface/web/remote/'
   
  $client = new SoapClient(null, array('location' => $soap_location,
   
  'uri'      => $soap_uri));
  try {
      //* Login to the remote server
      if($session_id = $client->login($username,$password)) {
          echo 'Logged into remote server
  sucessfully. The SessionID is '.$session_id.'
  ';
   echo 'Logged into remote server sucessfully. The SessionID is '.$session_id.'
  ';
   
  $domain_id = 1;
   
  $client_id = 1;
    $params = array(
            'server_id' => 1,
            'email' => '$myusername',
            'login' => ''$myusername',
            'password' => '$mypassword ',
            'name' => 'test',
            'uid' => 5000,
            'gid' => 5000,
            'maildir' => '/var/vmail/meine-domain.de/',
            'quota' => 0,
            'cc' => '',
            'homedir' => '/var/vmail/',
            'autoresponder' => 'n',
            'autoresponder_start_date' => '',
            'autoresponder_end_date' => '',
            'autoresponder_text' => '',
            'move_junk' => 'n',
            'custom_mailfilter' => 'spam',
            'postfix' => 'y',
            'access' => y',
            'disableimap' => 'n',
            'disablepop3' => 'n',
            'disabledeliver' => 'n',
            'disablesmtp' => 'n'
            );
    
    $affected_rows = $client->mail_user_add($session_id, $client_id, $params);

    echo "New user: ".$affected_rows."<br>";
    
    if($client->logout($session_id)) {
        echo 'Logged out.<br />';
    }
    
    
} catch (SoapFault $e) {
    echo $client->__getLastResponse();
    die('SOAP Error: '.$e->getMessage());
}

?>
Wenn ich die Datei jetzt aufrufe kommt leider nur eine Weiße Seite, und es wird kein E-Mail User angelegt.

Was mach ich falsch?
 

graf_rudolf

New Member
PHP:
[Mon Nov 11 17:13:54 2013] [warn] [client 95.91.229.XX] mod_fcgid: stderr: PHP Parse error:  syntax error, unexpected '$myusername' (T_VARIABLE), expecting ')' in /var/www/clients/client1/web1/web/mail/useradd/test.php on line 31

Das ist der Error Log

in Zeile 31 Steht:
PHP:
  $client_id = 1;
 

Till

Administrator
Schau mal in die zeile:

'login' => ''$myusername',

da sind 2 einfache anführungszeichen. Außerdem kannst Du keine variablen wie $myusername innerhalb von einfachen anführungszeichen in php verwenden. Am Besten lässt Du die Anführungszeichen um die variablen weg, oder erstzt sie durch doppelte " anführungszeichen.
 

graf_rudolf

New Member
So vielen Dank erstmal, hab noch bisschen dran rumgespielt und jetzt legt er zumindest schonmal die User an so wie ich das möchte.

Ich bastel nochmal bisschen weiter dran rum;-)

Als nächsten Schritt will ich jetzt ein Forumlar bauen der
$myusername = "xxx";
$mypassword = "xxx";
mit Werten füttert.


Hier ist die PHP so wie sie grade bei mir funktioniert.
Wenn ihr noch verbesserungsvorschläge habt immer her damit.



PHP:
<?php
   
  $username = "xxx"; // API User
  $password = "xxx"; // API PW
   
  $myusername = "xxx"; //Mail User
  $mypassword = "xxx"; // Mail PW
   
  $soap_location = 'https://localhost:8080/remote/index.php'; //'http://localhost:8080/ispconfig3/remote/index.php'

  $soap_uri = 'https://localhost:8080/remote/'; // 'http://localhost:8080/remote/'
   
  $client = new SoapClient(null, array('location' => $soap_location,
   
  'uri'      => $soap_uri));
  try {
      //* Login to the remote server
      if($session_id = $client->login($username,$password)) {
          echo 'Logged into remote server
  sucessfully. The SessionID is '.$session_id.'
  ';
   echo 'Logged into remote server sucessfully. The SessionID is :'.$session_id.'<br />';
    }
    $params = array(
            'server_id' => 1,
            'email' => "$myusername",
            'login' => "$myusername",
            'password' => "$mypassword",
            'name' => 'test',
            'uid' => 5000,
            'gid' => 5000,
            'maildir' => '/var/vmail/xxx.de/',
            'quota' => 10000000000,
            'cc' => '',
            'homedir' => '/var/vmail/',
            'autoresponder' => 'n',
            'autoresponder_start_date' => '',
            'autoresponder_end_date' => '',
            'autoresponder_text' => '',
            'move_junk' => 'n',
            'custom_mailfilter' => 'spam',
            'postfix' => 'y',
            'access' => 'y',
            'disableimap' => 'n',
            'disablepop3' => 'n',
            'disabledeliver' => 'n',
            'disablesmtp' => 'n'
            );
    
    $affected_rows = $client->mail_user_add($session_id, $client_id, $params);

    echo "New user: ".$affected_rows."<br>";
    
    if($client->logout($session_id)) {
        echo 'Logged out.<br />';
    }
    
    
} catch (SoapFault $e) {
    echo $client->__getLastResponse();
    die('SOAP Error: '.$e->getMessage());
}

?>
 

graf_rudolf

New Member
Bzw wenn noch jemand Tipps hat, wie ich das Formular am besten erstelle
bin ich auch immer für Tipps dankbar.

schönen Abend;-)
 

graf_rudolf

New Member
Nabend,
der Aktuelle Stand:
Es ist jetzt möglich über ein Formular (Name, Mail Adresse, Passwort)
eine E-Mail aresse zu erstellen.
Das Problem ist jetzt das sich Teilweise mehrere Benutzer ein Postfach teilen.
Das sieht man z.B dadran, dass 5 User angelegt werden, und alle 5 User auch von den anderen die ISPconfig Willkommens Nachricht im Passwort haben.

Danke für eure Hilfe.

mfg
 

graf_rudolf

New Member
Gibt es auch noch eine Möglichkeit mit der API abzufragen welche E-Mail adressen noch frei sind? oder gibt es da andere Lösung für?
 

Till

Administrator
Ja, die gibt es. z.B.:

Code:
$email = 'test@domain.de';
$mailuser = $client->mail_user_get($session_id, array('email' => $email));
if(is_array($mailuser)) {
  echo 'Email gibt es noch nicht';
}
 

graf_rudolf

New Member
Ich hab nochmal ein Problem.

In ISP Config werden die E-mail Adressen jetzt ja ohne Probleme angelegt.

Aber es wird im Ordner /var/vmail/xxx.de nicht für jeden Benutzer ein neuer Ordner angelegt.

Jetzt kann ich mehrer Benutzer anlegen aber alle haben den gleichen Posteingang.

Was mach ich falsch?

schönes Wochenende;-)
 

Till

Administrator
Schau mal in Deinem Code nach und stell sicher dass Du für jeden neu angelegten User auch ein anderes maildir im $params Array angibst.
 

ww1com

New Member
Ja, die gibt es. z.B.:

Code:
$email = 'test@domain.de';
$mailuser = $client->mail_user_get($session_id, array('email' => $email));
if(is_array($mailuser)) {
  echo 'Email gibt es noch nicht';
}


Hay Danke das hat mir noch gefehlt. Vielen Dank an denn
Till Administrator

Jetzt habe ich mal eine Frage unter ispconfig 3 remote User_mail_add.php
die beide Verzeichnisse
homedir und maildir sind das unterschiedliche verzeicnisse
 
Zuletzt bearbeitet:

ww1com

New Member
Hay Danke das hat mir noch gefehlt. Vielen Dank an denn
Till Administrator
Hay Danke das hat mir noch gefehlt. Vielen Dank an denn
Till Administrator

Jetzt habe ich mal eine Frage unter ispconfig 3 remote User_mail_add.php
die beide Verzeichnisse
homedir und maildir sind das unterschiedliche verzeicnisse
Leider finde ich nichts im Netz Wer kann Helfen
maildir' => '/var/vmail/$Domain/$name',
was muss ich machen oder ändern . Danke
 

Till

Administrator
Lege eine mailbox in ispconfig an, dann schau in die mail_user tabelle dann weißt Du wie alle api parameter gefüllt werden müssen alles ausßer den $sys_* spalten der DB übergibst Du im $params array.
 

ww1com

New Member
ich weiss nicht was ich falsch mache..
Nu jetzt gehe ich erstmal die Sonne genießen
// Template für ispconfig 3 Mail server hosting.ww1net.de
require 'soap_config.php';

$exemail="xxxxx@ww1net.de";
$exlogin="xxxxx@ww1net.de";
$expw="xxxxxx";
$exname="xxxxxx";
// '/var/vmail/ww1net.de/joerg',
$Var1="/var/vmail/";
$domain="ww1net.de/";

$var = var1 . $domain . $exname;
$client = new SoapClient(null, array('location' => $soap_location,
'uri' => $soap_uri,
'trace' => 1,
'exceptions' => 1));


try {
if($session_id = $client->login($username, $password)) {
echo 'Logged successfull. Session ID:'.$session_id.'<br />';
}

//* Set the function parameters.
$client_id = 1;
$params = array(
'server_id' => 2,
'email' => $exemail,
'login' => $exlogin,
'password' => $expw,
'name' => $exname,
'uid' => 5000,
'gid' => 5000,
'maildir' => $var,
'quota' => 5242880,
'cc' => '',
'homedir' => '/var/vmail',
 

Werbung

Top