PHP IMAP/Vlastní administrace

Z Wikiknih

Tento návod se týká především pokročilých, kteří již svůj ArGoSoft Mail server mají již nainstalovaný a rádi by vytvořili nějakou lepší administraci - některým uživatelům především vadí Google reklama, jež je vložená na originální administraci a její omezená nastavitelnost. (Je napevno v programu a nejde tak upravovat nic jiného než šablony ve složce webtemplates)

V tomto návodu si ukážeme vytvoření PHP aplikace, jež zvládne správu emailového serveru - zejména jinde nepopsanou správu uživatelských účtů a schránek. (Čtení emailů je popsáno v jiné kapitole)

Tento skript umožňuje správu emailových účtů v programu ArGoSoft Mail server. Jedná se o open source, takže nemusíte váhat ho přidat do své administrace.

Podstatou je adresářová struktura Mail serveru:

  • Mail Server
    • Uživatel
      • userdata.rec
      • email 1
    • ...

Kde slovo uživatel je nahrazeno přihlašovacím jménem uživatele a v souboru userdata jsou jeho nastavení.

Příklad souboru userdata.rec:[editovat | editovat zdroj]

__VER__1.5.0.8
aGVzbG8= (heslo zašifrované pomocí base64)
Real name
Forward addres
Return addres
0
Finger Information

Pro jednoduchost se ale vfgsd administraci soustředíme pouze na heslo a skutečné jméno.

uzivatele.php[editovat | editovat zdroj]

<html>

<head>

<title>ArGoSoft Mail Server - administrace</title>

</head>

<body>

<h1>
<?php
 // Složka kam jste nainstalovali ArGoSoft Mail Server
 $umisteniserveru="C:\Program Files\Mail Server";

if($akce=="novy"):
 // Tvorba uživatele
 if($login=="" or $heslo==""):
  echo "Musíte vyplnit přihlašovací jméno a heslo!";
 else:
  @mkdir($umisteniserveru."\\".$login);
  // Soubor userdata.rec
  $soubor= "__VER__1.5.0.8\n";
  $soubor.=base64_encode($heslo)."\n";
  $soubor.=$jmeno."\n";
  $soubor.="\n\n0\n\n\n\n";
  $file=fopen($umisteniserveru."\\".$login."\\userdata.rec","w");
  fwrite($file,$soubor);
  fclose($file);
  
  // Otestování funkčnosti
  $pokus=@IMAP_Open("{localhost/pop3}INBOX",$login,$heslo);
  if($pokus){echo "Uživatel byl úspěšně vytvořen.";}
  else{echo "Uživatel vytvořen, ale nelze se na něj připojit!";}
 endif;

elseif($smazat!=""):
 // Smazání uživatele
 $dir=opendir($umisteniserveru."\\".$smazat);
 while ($file = readdir($dir)){
	if($file != '..' && $file !='.'){
 if(is_dir($umisteniserveru."\\".$smazat."\\".$file)){
    rmdir($umisteniserveru."\\".$smazat."\\".$file)or print("Nelze smazat podsložku $file !<br />");
   }else{
    unlink($umisteniserveru."\\".$smazat."\\".$file)or print("Nelze smazat soubor $file !<br />");
   }
	}
 }
 @rmdir($umisteniserveru."\\".$smazat)or print("Nelze smazat složku samou!<br />Špatně nastavená oprávnění!<br />");
 echo 'Mazání dokončeno.';
endif;

 // Výpis uživatelů
 echo "</h1>";
 $dir=opendir($umisteniserveru);
 echo "<h2>Výpis uživatelů:</h2>";
 while ($file = readdir($dir)){
  // Musí se jednat o podsložku
	if($file != '..' && $file !='.' && !strpos($file,".")){
 // Ve složce musí být umístěn soubor userdata.rec
 if(file_exists($umisteniserveru."\\".$file."\\userdata.rec")){
    echo '''''.$file.'''' <a href="uzivatele.php?smazat='.$file.'">Smazat</a><br />';
   }
	}
 }
 echo "<br /><br />";
 ?>

<form method="post" action="uzivatele.php?akce=novy">
<table>
<tr><td>Přihlašovací jméno:</td><td><input type="text" name="login" size="21" /></td></tr>
<tr><td>Skutečné jméno:</td><td><input type="text" name="jmeno" size="21" /></td></tr>
<tr><td>Heslo:</td><td><input type="password" name="heslo" size="21" /></td></tr>
<tr><td colspan="2"><input type="submit" value="Vytvořit" /></td></tr>
</table>
</form>

</body>

</html>

Když následně otevřeme soubor uzivatele.php, ukáže se nám jednoduchá administrace pomocí níž můžeme vytvářet a mazat emailové schránky z ArGoSoft Mail serveru bežícího na stejném počítači jako skript, jinak by se musel skript upravit.

Zabezpečení[editovat | editovat zdroj]

Nevýhodou této administrace je, že se k ní dostane prakticky kdokoli v místní síti. (Pokud by byl server s trvalou IP adresou a nejlépe i s doménou, tam dokonce kdokoli z internetu.) Toto můžeme zabezpečit buď pomocí rozšíření o složité přihlašování, nebo jednoduše zpřístupněním pouze z lokálního počítače. (tj. Počítače na nemž jede webový server.) To lze udělat přidáním následujícího souboru .htaccess do složky s administrací:

Options FollowSymLinks Indexes
AllowOverride None
Order deny,allow
Allow from 127.0.0.1
Deny from all