Extern Email Konto anlegen.

#1
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;-)
 
#3
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?
 
#5
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
#6
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.
 
#7
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());
}

?>
 
#9
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
 

Till

Administrator
#11
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';
}
 
#12
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
#13
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.
 
#14
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:
#15
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
#16
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.
 
#18
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