# Roundcube Webmail - bräuchte Hilfe



## Xervek (15. Januar 2006)

Guten Tag alle zusammen,

es gibt im Internet ein wunderbares Programm um eMails webbasierend abzurufen. Generell ist es ein extrem gutes Programm, jedoch gibt es im Login bereich ein paar Probleme, eigentlich keine richtigen Probleme da es generell anständig funktioniert. Das Programm findet ihr *hier* 

Da ich mit PHP und generell Webdesign und sowas jetzt nicht allzuviel am Hut habe sondern eher mit Programmieren hätte ich damit schon eine Lösung jedoch nicht mit PHP.

Nach erfolgreichem Einrichten, alles funktioniert nun soweit, konnte ich mich mit meinem Benutzernamen und Passwort erfolgreich einloggen. Wenn ich nun aber versuche mich mit meiner email Adresse anzumelden, bekomme ich eine Fehlermeldung. (zumindest bei ALL-Inkl, denn da habe ich meinen Webspace).

Logische schlussfolgerung, ich muss irgendwo in dem Programm eine IF Schleife einbauen nach dem Motto

Wenn eingabefeld = meine@mail.de Dann
    eingabefeld = v264320423
Ende

Ich bräuchte dann allerdings eine If schleife in der ich unbegrenzte usernames eingeben kann und diese dann umwandeln kann.

Eigentlich sollte es ein extrem einfacher Eingriff sein, jedoch habe ich wirklich null Plan von PHP, weiß nicht wo ich diesen Teil zu suchen habe und wo ich was ändern muss, damit es funktioniert. Es wäre also nett, wenn mir hier einer helfen könnte. Ich kann mir vorstellen, dass es etwas Arbeit ist erst das Programm anzuschauen aber wie gesagt, wäre wirklich nett wenn mir dabei jemand helfen könnte

Liebe Grüße


----------



## Mairhofer (15. Januar 2006)

Komisch das hier noch keiner geantwortet hat, aber nunja, wollen wir mal:

Also erstmal Vorweg: Ich kenne das Script nicht und ich hab auch kein Space bei All-Inkl
Daher meine Frage: logged man sich nicht per Emailadresse da ein sondern mit dieser v....irgendwas nummer als Username?

Wenn dem so wäre, dann müsstest du den Namen der Variable aus dem Login Formular finden, welches wahrscheinlcih per POST an ein PHP Script übermittelt wird.
Bsp: $_POST['feld_username'];

In der Datei, welches dieses $_POST verarbeitet müsste dann sowas rein wie

IF($_POST['feld_username'] == 'mail@domain.de')
   $_POST['fled_username'] = 'v123456789';
ELSEIF($_POST['feld_username'] == 'zweitemail@domain.com')
  $_POST['feld_username'] = 'v98765431';
usw

Natürlich müsstest du bei dieser simplen Methode jede neue "umzuwandelnde" Mailadresse als IF Abfrage in den Quellcode schreiben.....wem es gefällt.
Ok, ich würds nicht so machen, weil mir das zu doof wäre...

Aber mal ne andere Frage: Warum gibst dunicht direkt diese v...nummer in das Eingabefeld ein?  Wenn da nen PrüfLogarithmus drin ist, der nachschaut ob Eingabefeld = ^name@domain.de dann nimmste das raus...
Gibt soviele Möglichkeiten, aber das hier alles zu erklären dauert lang, da du ja selber sagst, das du nicht die Vorkenntnisse für PHP Scripting besitzt.

Ansonsten: Selber mal was versuchen
Gruss


----------



## Xervek (15. Januar 2006)

Hallo,

vielen Dank für die schnelle Antwort.

Anscheinend greift dieses Programm nur als "imap" auf die eMails zu. Bei All-Inkl ist es so, dass du generell eine Benutzernummer bekommst, beispiel "v123456". Legst du nun beispielweise eine eMail Adresse an, sieht diese etwa so aus "v1234561" (die 1 am Ende steht für eMail benutzer Nummer 1 angelegt).
Wenn ich nun also versuche mich in dem Programm mit meiner eMail und dem dazugehörigen Passwort anzumelden bekomme ich eine Fehlermeldung das ich nicht authorisiert bin... meine Anfrage an den Support brachte eine mehr oder weniger typische Antwort: "Wenn Sie über die entsprechenden Kenntnisse verfügen, können Sie das Programm so 'abändern', dass Sie sich direkt mit der eMail anmelden können."

Nun das Problem ist, dass ich mir diese Nummer'n nicht merken kann. Und da ich mehrere Mails habe, müsste ich mir ziemlich viele Nummern merken und die müsste ich dann noch einem Passwort zuordnen und da finde ich es wiederum etwas einfach das ich einfach dazu in der Lage bin die nötige eMail eintragen zu können, Passwort hinter her und schwupp alles wunderbar. Da ich aber weder vom All-Inkl Support noch andere Möglichkeiten gefunden habe irgendwie an Hilfe zu kommen wie ich das am Besten machen kann, wollte ich hier einfach nachfragen.

Dürfte ich dich dann auch fragen wie du es machen würdest? Alles was ich gern hätte wäre, dass ich beim
"Username" meine Mail eingeben kann und beim
"Password" halt mein Passwort (aber das geht ja sowieso)
Nur wie halt oben gesagt nimmer er es nur an, wenn ich die Nummer/n eingebe. Deshalb habe ich auf Anhieb an eine IF Schleife gedacht die einfach umwandelt wenn eine bestimmte Nummer eingeben wird. Aber wenn du meintest es gibt andere, kompfortablere Möglichkeiten wäre es nett, wenn du mir die sagen könntest.

Aber zu deiner IF Schleife noch eine Frage...

IF($_POST['feld_username'] == 'mail@domain.de')
$_POST['fled_username'] = 'v123456789';
ELSEIF($_POST['feld_username'] == 'zweitemail@domain.de')
$_POST['feld_username'] = 'v98765431';
ELSEIF($_POST['feld_username'] == 'drittemail@domain.de
$_POST['feld_username'] = 'v632347432';
bla

wie wird dass denn dann beispielweise in diesem Teil beendet? Also die ganzen IF abfragen, wie die beendet werden meine ich.

Ansonsten aber vielen Dank für die schnelle Hilfe!

Liebe Grüße


----------



## Mairhofer (16. Januar 2006)

Hi,

hab mir das Script mal auf die schnelle angeschaut.
Den ganzen Krempel müsstest du in die index.php packen....

Irgendwo in der Datei ist ne Passage:


```
// try to log in
if ($_action=='login' && $_task=='mail')
  {
  $host = $_POST['_host'] ? $_POST['_host'] : $CONFIG['default_host'];
  
  // check if client supports cookies
  if (empty($_COOKIE))
    {
    show_message("cookiesdisabled", 'warning');
    }
  else if (isset($_POST['_user']) && isset($_POST['_pass']) && rcmail_login($_POST['_user'], $_POST['_pass'], $host))
    {
    // send redirect
    header("Location: $COMM_PATH");
    exit;
    }
  else
    {
    show_message("loginfailed", 'warning');
    $_SESSION['user_id'] = '';
    }
  }
```
Hier wird geprüft, ob dein Login stimmt und du dann eingelogged oder nicht.

Wenn du das wie folgt änderst:



```
// try to log in
if ($_action=='login' && $_task=='mail')
  {
  $host = $_POST['_host'] ? $_POST['_host'] : $CONFIG['default_host'];
// BEISPIELE
IF($_POST['_user'] == 'mail@domain.de')
{
$_POST['_user'] = 'v1234567891';
}
ELSEIF($_POST['_user'] == 'mail2@domain.de')
{
$_POST['_user'] = 'v1234566782';
}
// usw
// ENDE BEISPIELE  

  // check if client supports cookies
  if (empty($_COOKIE))
    {
    show_message("cookiesdisabled", 'warning');
    }
  else if (isset($_POST['_user']) && isset($_POST['_pass']) && rcmail_login($_POST['_user'], $_POST['_pass'], $host))
    {
    // send redirect
    header("Location: $COMM_PATH");
    exit;
    }
  else
    {
    show_message("loginfailed", 'warning');
    $_SESSION['user_id'] = '';
    }
  }
```

Ich kann dir aber nicht versprechen, ob das funktioniert. Der macht nämlich noch beim Login ne SQL Abfrage "query if user already registered". Da ich das Script nicht installiert und getestet habe und ich nciht weiss, ob das funktioniert kann ich nicht auf richtigkeit setzen.
Da müsstest du dann selber fummeln und das Script verstehen.

Nochmal zu deiner Frage, wann die Ifs zu ende sind.
Ich habe eine gekürzte schreibweise genutzt:
IF(a == b) 
c = 5;
elseif(a == 5)
c = 2;

PHP versteht das, weil der immer eine Zeile (also bis zum nächsten Semikolon) der If Abfrage zuweisst.

IF(a == b)
c = 2;
c=5;

hier wäre, wenn a == b , c =5; er macht zwar zuerst c = 2, aber dann noch c=5.
Hoffe das war jetzt nicht zu schnell... 
Korrekt lautet es natürlich

IF($a == $b) 
{
$c = 5;
}
ELSEIF($c == $b)
{
$a = 1;
}
usw

Wenn die IF Abfragen nicht stimmen (also $a nie == $b ist) dann beachtet er sie auch nicht weiter.

Ok, habe jetzt viel geschrieben und wenig erklärt. Hoffe zu kommst damit klar, hab immo nicht so viel Zeit

Gruss


----------



## Xervek (16. Januar 2006)

Hallo,

vielen Dank für die Antwort. Es funktioniert! Jetzt habe ich nur noch ein kleines Problem, ein "Schönheitsproblem". Wenn ich also meine Mail benutze, so wie ich sie im index.php eingetragen habe, funktioniert alles bestens, achte ich nun allerdings nicht auf die groß und kleinschreibung... Zack da meckert er dann wieder. Letztlich soweit kein Problem, jedoch würde ich gern noch mal kurz fragen ob es eine Möglichkeit gibt, dass PHP groß und kleinschreibung ignoriert. Also, dass es keinen Unterschied macht ob ich "hans@wurst.com" oder "Hans@wurst.com" schreibe.

Vielen, vielen Dank nochmal, hast mir echt schon extrem geholfen


----------



## Mairhofer (16. Januar 2006)

Dann änderst du die IF Abfragen um in:


```
IF(strtowlower($_POST['_user']) == ....
```
Infos zu strtolower() 


> strtolower -- Make a string lowercase



Gruss


----------



## Xervek (16. Januar 2006)

Hallo,

liege ich recht in der Annahme, dass es etwa so aussehen müsste:


```
IF(strtowlower($_POST['_user']) == 'mail1@beispiel.de')
{
$_POST['_user'] = 'v1234561';
}
ELSEIF(strtowlower($_POST['_user']) == 'mail2@beispiel.de')
{
$_POST['_user'] = 'v1234562';
}
```

Wenn ja dann scheint ihm das wiederum nicht zu gefallen. Jetzt geht es gar nicht mehr, er läd nach Eingabe der Daten irgendetwas und zeigt mir direkt dannach eine weiße Seite an. Mache ich es wieder weg und gebe die Mail dann wie angegeben an funktioniert es wieder. Es funktioniert damit aber gar nicht, weder wenn ich die Mail "mit großbuchstaben" noch mit "kleinbuchstaben" eintippe.


----------



## Xervek (20. Januar 2006)

Hallo,

hat keiner sonst eine Idee wie ich dieses Problem umgehen kann?

Liebe Grüße


----------



## ice_thunder (22. April 2006)

Hi,
Du hast da einen Schreibfehler drin es muss heißen

strtolower nicht strto*w*lower

viele Grüße
Sebastian


----------



## Matthias Reitinger (23. April 2006)

Ähem… das geht doch auch wesentlich einfacher und vor allem ohne am Quellcode rumzufummeln.

Erstelle einfach eine Datei im Installationsverzeichnis von roundcube, die in deinem Fall folgenden Inhalt hat:

```
mail@domain.de v123456789
zweitemail@domain.de v98765431
drittemail@domain.de v632347432
```

In der ./config/main.inc.php muss dann $rcmail_config['virtuser_file'] nur noch auf den Namen der angelegten Datei geändert werden.


----------



## MichaelHolzi (13. Oktober 2006)

Hallo Matthias!

Deine Tipp ist klasse, nur leider funktioniert er bei mir nicht. Kannst Du mir bitte weiterhelfen?!

Ich habe folgendes gemacht:
Eine Textdatei angelegt mit Deinem Muster
mail@domain.de v123456789 (natürlich mit meinen Daten ;-)

Diese habe ich auf meinen Server in das gleiche Verzeichnis wie die main.inc.php gelegt. Die main.inc.php habe ich wie folgt bearbeitet:

// Path to a virtuser table file to resolve user names and e-mail addresses
$rcmail_config['virtuser_file'] = 'virtuelleuser.txt';

Aber leider klappt es nicht. Was habe ich falsch gemacht?
Vielen Dank und viele Grüße,
Michael


----------



## Matthias Reitinger (13. Oktober 2006)

Hallo,

wie schon erwähnt muss die virtuser-Datei in das _Installationsverzeichnis_ von roundcube, nicht in das Konfigurationsverzeichnis. Alternativ kannst du aber natürlich auch mit einer relativen Pfadangabe arbeiten, die dann vom Installationsverzeichnis von roundcube ausgeht. Eine absolute Pfadangabe wäre selbstverständlich auch möglich.

Grüße,
 Matthias


----------



## MichaelHolzi (13. Oktober 2006)

Hallo Matthias!

1.000 Dank, es hat geklappt.

Bitte entschuldige, das die Datei ins Installationsverzeichnis muss, hab ich leider nicht richtig gelesen.

Also vielen Dank nochmal und viele Grüße,
Michael


----------



## damonn (29. November 2006)

hatte selbst das Problem, und hab eine elegante Lösung im Netz gefunden:

klick


----------



## max2011 (23. Juli 2007)

hallo,
das problem hatte ich auch. du mußt im adminbereich unter alias dein namen eintragen, dann kannste dich auch mit der e-mailadresse einloggen:
beispiel:
deine e-mail lautet: hans@muster.de
dann mußt du unter alias hans eingeben, zumindestens bei all inkl.

das war ja noch einfach. ich bekomme es einfach nicht hin, wenn ich eine mail verfasse dann die angelegten e-mailadressen aus dem adressbuch als empfänger einzugeben. 
Kannst du mir da weiterhelfen ?


----------



## 31er (29. Juli 2011)

Hallo,

wo muss ich des denn ganz genau bei main.inc.php plazieren****

MfG


----------

