Er búinn að vera í þvílíku veseni í kvöld sem mig langar að segja ykkur lítilega frá.
Málið er að ég hef verið að nota QmailAdmin til að admin’a póstþjónin hérna hjá mér, en ég er orðinn leiður á honum.. margt sem vantar í hann og.. í hreinskilni sagt.. er þetta með þeim ljótari vefviðmótum sem ég hef unnið á.
Þannig að.. ég ákvað að skoða aðeins hvort það væri ekki séns að ég myndi fikta aðeins í því að gera mitt eigið viðmót sem ég myndir forrita í PHP5.. Það fyrsta sem poppar upp í hugan á mér varðandi það ferli er, hvernig skyldi vpopmail vista notandaupplýsingar í MySQL.
Til að útskýra aðeins hvað er hvað áður en lengra er haldið þá er vpopmail clientinn sem brúar bilið milli IMAP/POP3 og notanda hugbúnaðarins (td. RoundCube, SquirrelMail, Outlook, Mail.app ofl), vpopmail heldur ss. utan um öll email, stillingar fyrir hvert og eitt og allt því um líkt. Allt þetta er svo vistað í MySQL gagnagrunni.
En áfram með söguna.. Ég fletti upp nokkrum aðgöngum sem ég er með sjálfur (og veit því lykilorðið að) og virti fyrir mér hvernig vpopmail skráir þessar upplýsingar í MySQL grunnin. Sé strax að lykilorðið er dulkóðað:
$1$Q5bJoj1P$4GPxHBgt7UROKHrPEWHht0
Þar sem ég hef að mestu leyti bara verið að nota MD5 og ekkert meira í dulkóðun á gögnum í MySQL, þá þekkti ég ekki hvaða kerfi var verið að nota, google hjálpaði mér lítið þegar ég spurði það að hinum ýmsu spurningum varðandi vpopmail, mysql, encrypt og password. En ég fann loksins 2 þræði á póstlista (síðan 2003 minnir mig) sem komu mér á sporið.. Málið er að það sem er verið að nota er plain crypt(); í PHP4/5, nema hvað.. að lesa þennan streng inn og að átta mig almennilega á því hvernig hann er byggður upp tók .. sæmilegan tíma. Skv GNU síðunni þá er strengurinn byggður þannig upp að tegund algorithmans sem er verið að nota er milli fyrstu dollaramerkjanna ($1$), því næst kemur svokallaður salt strengur, en hann er notaður til að geta búið til sama streng aftur á ný ef þú ert með lykilorðið (td. ef þú vilt sannreyna að uppgefið lykilorð sé hið rétta, sem er nákvæmlega það sem ég vildi), svo í lokin er dulkóðað lykilorðið.
Á endanum var þetta svo ekkert flókið, eina alvöru vesenið sem ég lenti í varðandi PHP kóða bútinn sem ég gerði til að sannreyna þetta var að kóðinn hér að ofan vildi ekki virka sem strengur fyrr en ég notaði \$ í stað $ eins og sér.
Kóðabúturinn sem ég endaði á að nota til að sannreyna það að ég væri búinn að ná áttum á því hvernig þetta virkaði er svona:
<?php
$venjulegt=“passinnminn“;
$fullt=“\$1\$Q5bJoj1P\$4GPxHBgt7UROKHrPEWHht0″;
$nytt=crypt($venjulegt, substr($fullt, 0, 2).substr($fullt, 2, 8).substr($fullt, 10, 22)) . „<br />“;
echo „Stemma lykilorðin?<br>“;
if(substr($nytt, 10, 22)==substr($fullt, 10, 22)){
echo „<font color=’green’>Já, sama lykilorð</font>“;
}else{
echo „<font color=’red’>Nei, rangt lykilorð</font>“;
}
?>
Núna virkar kóðinn þannig að ég get staðfest að uppgefið lykilorð sé rétt og einnig get ég búið til og sett nýtt lykilorð á notendur. Sem þýðir? Næsta verkefni sem ég ætla að dútla mér í verður admin kerfi á Qmail/vpopmail. Sem er gott af því að það eina sem er nothæft í dag (af því sem ég hef séð og/eða prófað) er QmailAdmin sem er keyrt sem cgi-bin scripta.. Mér finnst frekar þörf á því að vera með PHP5 kerfi sem þarf engar sérstillingar, bara benda kerfinu á hvar MySQL þjónninn er, notandanafn og lykilorð á grunnin and your set!
Ég ætla allavega að dúlla mér við að búa til útlit á þetta í kvöld, læt það mögulega hérna inn á síðuna á morgun ef ég verð búinn að gera eitthvað af ráði í þessu. Ef ekki þá, þá bara þegar ég hef gert eitthvað í þessu ;)