PHP IMAP/Vlastní administrace
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
- ...
- Uživatel
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