You are here:   Blogs
  
Author: SUF Created: 2008.11.26. 10:28
SUF Blog

Naív voltam. Azt hittem, hogy szerdán megkapom az új alaplapom. Nem kaptam meg. Ma felhívtam a nagykert, azt mondta az ember, hogy az intel jelenleg leállította a gyártást és nyomozza, hogy mi a gond. Neki 2 hetet igértek szállításra. Látom, hogy nagyon próbál segíteni. Szerzett valahonnan 3 db-ot belőle ami keddre jön meg állítólag. Ezekről persze nem lehet tudni, hogy a hibás vagy a hibátlan szériából származnak-e.
Tehát az ügynek nincs vége.
Folyt köv.

A folyattás:
Eltelt egy olyan másfél óra. Hívnak a nagykerből, hogy expresz csere lesz, adjam meg a szériaszámot, elvileg szerdán jön a cseredarab. Ez bíztató.
 
Folyt. köv.

Úgy döntöttem, hogy lecserélem a tűzfalunkat. Vagy három hete rendeltem is egy Intel pizzásdobozt. Ezt:
http://www.intel.com/design/servers/boards/SE7221BK1-E/index.htm
A régi már lassú is, beteg is ráadásul VPN-t IPS-t és hasonlókat akarok rápakolni így nekiugrottam. Múlt hét péntekig itt ültem az alkatrészkupac tetején és vártam a dobozt és a bele szerelt alaplapot.
Pénteken megjött, összeraktam, jön a nagy pillanat, bekapcsolom, elkezdenek forogni a ventilátorok és ...
Se kép, se hang.
Csipogás nincs, a VGA kimeneten semmi, a négy POST LED folyamatos sárgán világít.
Kipróbáltam néhány dolgot eredmény nélkül, majd hazamentem...
Ma reggel bejövök, nekiugrok megint - semmi.
Memóriát cserélek - semmi.
A végén körbenézek az intel oldalon valami troubleshooting-ért. Erre ezt találom:
http://www.intel.com/support/motherboards/server/sb/CS-021056.htm
Magyarra lefordítva:
Néhány (értsd jó sok) alaplap a megadott PCB számmal (nekem persze pont olyan van) előadja a fenti hibát.
Oka: Ki tudja? Az intel legalábbis nem.
Megoldás: Küldd vissza!
Nagyker: Nincs raktáron, intel rosszul szálít, majd lesz.
Várok...
 
Folyt köv.

Csütörtökön Bende Imre kolléga feldobott egy magas labdát. Volt egy telefonbeszélgetésünk is ezügyben. A feladat a következő:
Van egy Exchange 2000 szerver ahol tömegesen kellene felvenni domaineket a tiltott domainek listájára.
Csak, hogy pontosan jelezzem miről is van szó, ide:
Exchange System Manager/Administrative Groups/First Administrative Group/Servers//Protocols/SMTP/Default Virtual Server, Properties, Access fül, Connection..., Add..., Domain
Ezt már megkeresni se egyszerű, hátmég tömegben felvenni ide valamit. Elkezdtem keresgélni, hogy honnan veszi a beállításokat. Végigtúrtam a metabase-t (adsutil.vbs-el), a registry-t, az AD-t és nem találtam semmit.  Azután hosszas keresgélés után rájöttem, hogy csak a metabase-ben tárolja a dolgokat, bináris formában egy IPSec tipusú (semmi köze az IPSEC protokolhoz) propertyben. Ezt a tipust a fent említett adsutil.vbs nem kezeli és miután az IPSec tipusnév nem kicsit félreérthető, elsiklottam felette. Végül némi küzdés árán megszültem a dolgot. VBScript (broáf) azért lett belőle mert a JScript a VBScript tipusú tömböt (azt hiszem SafeArray-nak hívják hivatalból) csak olvasni hajlandó és írni nem. Miután az adsutilban ignorálták az IPSec típus kezelését, ezért azt vettem a fejembe, hogy írok egy olyan scriptet ami teljeskörüen kezeli. A legszebb az lenne, ha beleraknám az adsutilba, de nem tudom, hogy ezzel milyen jogi macerákat vennék magamra, amihez semmi kedvem.
Az elkészült kód innen tölthető le.

Hogy mit is okozhat ha valaki rendszergazda és egyetlen percre nem figyel oda tökéletesen arra amit csinál:
 
Kitaláltam, hogy az otthoni pici router dobozt lecserélem egy linuxra, mert rugalmasabb és ki tudom vele próbálni azt a vpn konfigot ami a távoli telephelyeinken lesz.
Sikerült összeraknom, hogy feljelentkezzen az ADSL-re. Azt hogy minden működik azzal próbáltam ki, hogy bejelentkeztem a céges tűzfalra. Ezek után lelőttem a gépet visszadugtam a router dobozt és mint aki jól végezte dolgát eljöttem otthonról.
Még volt egy kis dolgom mielőtt bejövök dolgozni, valahol félúton kapom a hírt, hogy nem működik a céges háló. Beérek abszolult idegesen, hogy mi is lehet. Meglepetten tapasztalom, hogy nem megy a tűzfal. Fizikailag ki van kapcsolva a gép. Visszakapcsolom és teljesen értetlenül állok a jelenség felett...
 
Eltelik 5 perc és belém hasít a felismerés, hogy az otthoni linuxon nem az otthoni, hanem a céges tűzfalat lőttem le. 
 
No Comment...

Egy valami kis kézi eszköz egyszeri szinkronizációjához szükségem volt arra hogy az Outlook névjegyalbumból kipakoljam a bejegyzéseket vcf formátumba. Ahogy elnéztem ezt a drága Outlook csak egyesével hajlandó előadni. Gyorsan összedobtam egy scriptet rá. Azt, ha keletkezett név nem felel meg a fájlnév konvencióknak nem kezeli le, de egyenlőre nekem ennyi elég volt. Minden egyéb magyarázat helyett itt a kód innen tölthető le.

Belekezdtem egy számomra nagyméretű projectbe (azért nagy mert nem értek hozzá). Le akarom cserélni a tűzfalunkat. Jelenleg Debian Woody-n fut és most szeretném átrakni Sarge-re.
Első körben azokat a szolgáltatásokat akartam megvalósítani ami a mostanin is mentek. Ezzel szemben belefutottam két olyan problémába amiből az egyikre nem számítottam, a másikkal pedig később akartam foglalkozni:
1. A tűzfalban olcsó RAID vezérlőt használok a lemezek tükrözésére. Kiderült, hogy ezeknek az olcsó "Soft" RAID kártyák támogatása megváltozott a 2.6-os kernellel. Úgy néz ki, hogy a jelenlegi hardveremben nem tudom megkerülni ezt a vezérlőt és szoftver RAID-et használni helyette. Azzal, hogy a támogatás megváltozott és a szükséges eszközök még nincsenek kész a hardver támogatás egyszerűen kikerült a Sarge-ből.
2. VPN-t kellett építenem két telephely közé ezért elkezdtem összerakni az OpenS/WAN nevű szerkezetet kissebb nagyobb cirkuszokkal össze is jött. Ez hozza magával, hogy néhány egyéb dolgot is meg fogok valósítani.

Valamikor május tájékán feldobtam egy labdát a különböző levelező rendszereink levél routolásával kapcsolatban. Akkor még nem okozott nagy gondot csak piszokul zavart. Megoldani nem tudta senki, kaptam ötleteket de egyik sem volt jó.
Néhány héttel később a dolog teljesen bedőlt. Egy nap kemény szenvedés és egy rossz éjszakai alvás árán sikerült megoldani a dolgot. A tettes elsősorban én voltam. Egy helyen A osztályu IP maszk helyett C osztályut írtam be a 10.0.0.0-ás hálóhoz a mail relay kivételei közé. Ez azért okozta a korábbiakban jelzett problémát mert azoknál a domaineknél ahol kivesszük a recipient policyban a "This Exchange Organization is responsible for..." című checkboxot a befelé jövő levél is relaynek fog számítani, mert az SMTP transport csak a domaint ellenőrzi az egyedi címet nem!!!
Ez utóbbit jó tudni. Végeredményben a sör/bor osztogatás elmarad (saját magamnak is mert alapban a saját hülyeségem)

Az elmúlt időszakban nem foglalkoztam se blog írással, se a weboldal frissítéssel. Nem is tudom mi lehetett az oka. Feledékenység? Időhiány? Valami ilyesmi.
Sokat foglalkozatam a magánügyeimmel, kevesebbet az Exchangel mint idáig, továbbá megint elővettem a linuxot, pontosabban a tűzfalat és a VPN megoldásokat.
Próbálom pótolni azokat a dolgokat amiket ígértem, valamint azt hiszem írkálni fogok a linux tűzfal dolgairól is.

Jó néhány hónappal ezelőtt volt egy elég kemény problémám egy WMI script-el

var objWMIServices; 
var Sink; 
var EventArr; 
var i = 0; 

EventArr = new Array(); 
objWMIServices = 
    GetObject("WinMgmts:{impersonationLevel=impersonate, (security)}"); 
Sink = WScript.CreateObject("WbemScripting.SWbemSink","SINK_"); 
objWMIServices.ExecNotificationQueryAsync(Sink,
    "SELECT * FROM __InstanceCreationEvent " + 
    "WHERE TargetInstance ISA 'Win32_NTLogEvent' " + 
    "AND TargetInstance.LogFile = 'Application'"); 

WScript.Sleep(5000); 

for (i = 0; i < EventArr.length; i++) 
{ 
    WScript.Echo(EventArr[i].TimeGenerated); 
    WScript.Echo(FromWMIDateTime(EventArr[i].TimeGenerated).toLocaleString()); 
    WScript.Echo(FromWMIDateTime(EventArr[i].TimeGenerated).toUTCString()); 
    WScript.Echo(((EventArr[i].User == null)? "N/A" : EventArr[i].User)); 
} 
Sink.Cancel(); 
delete Sink; 

function SINK_OnObjectReady(objEvent, objAsyncContext) 
{ 
    EventArr[i] = objEvent.TargetInstance; 
    i++; 
} 

function FromWMIDateTime(WMIDT) 
{ 
    var RetVal; 
    RetVal = new Date(ToInt(WMIDT.substr(0,4)), 
        ToInt(WMIDT.substr(4,2)) - 1, 
        ToInt(WMIDT.substr(6,2)), 
        ToInt(WMIDT.substr(8,2)), 
        ToInt(WMIDT.substr(10,2)), 
        ToInt(WMIDT.substr(12,2))); 
    return RetVal; 
} 

function ToInt(Str) 
{ 
    var i = 0; 
    while((Str.charAt(i) == "0") & (i < Str.length)) 
        i++; 
    return parseInt(Str.substring(i,Str.length)); 
} 

Ha ezt a kedves darabot Adminként futtatom, működik. Ha egy más felhasználó nevében, akkor is. Ha Adminként Scheduled Taskban megy akkor is működik, viszont ha egy más felhasználó nevében megy Scheduled Taskban akkor kapok egy kedves Eventlog hibát. Ezt:

Event Type: Error
Event Source: DCOM
Event Category: None
Event ID: 10003
Date:  2005. 05. 26.
Time:  17:20:21
User:  XXXXX\backup
Computer: XXXXXX
Description:
Access denied attempting to launch a DCOM Server using DefaultLaunchPermssion. The server is:
{49BD2028-1523-11D1-AD79-00C04FD8FDFF}
The user is backup/XXXXX, SID=S-1-5-21-XXXXXXXXXX-XXXXXXXXXX-XXXXXXXXXX-XXXX.

Több helyen a neten feltettem mint kérdést, de nem jött rá válasz. Ma egy más probléma kapcsán elkezdtem vele megint játszani és ez lett a megoldás:

Az MMC Component Services Snap-in -ben a DCOM alatt a Microsoft WBEM Unsecured Apartment -re (ennek a GUID-je található az Eventlog bejegyzésben) Launch jogot kell adni annak a felhasználónak akinek a nevében a Scheduled Task fut.

Tegnap írtam, hogy elkezdtem csinálni egy kis scriptet ami képes kilistázni egy Outlook elem összes tulajdonságát. Na ez nem fog elkészülni mert újra ráakadtam erre:

http://www.outlookspy.com

Egyszer már láttam, de akkor nem érdekelt különösebben mert mással foglalkoztam. A mostani feladataimhoz pontosan jó.

Az elmúlt kb. egy hetem gyakorlatilag a levelezéssel kapcsolatos dolgok megoldásával telt. Ennek kapcsan egy nagy rakás új script, kódrészlet készült, ami vagy teljesen új, vagy a már meglévő dolgaimat egészíti ki. Remélhetőleg a héten lesz időm, hogy ezeket ki is pakoljam az oldalamra. Most elsősorban magamnak le is írom ezeket, hogy tudjam hol tartok és milyen feladataim vannak (persze lehet, hogy mást is érdekel, hogy mik jönnek). Ha bárkinek szüksége lenne, az itt következő kódokra, még mielőtt kirakom őket a netre, akkor írjon és elküldöm e-mailben.

1. Névjegyek generálása az Outlookban lévő üzenetekből.

A technetklub levlistán felmerült egy igény, hogy jó lenne Outlook üzenetekből tömegesen névjegyeket gyártani:

http://listmanager.technetklub.hu/read/messages?id=126246
[Megjegyzés 2009.01.20: Ez a link már nem működik. Ha egyszer lesz archívum a régi levlistából, akkor majd frissítem]

Az eredeti "igénylőnek" elküldtem a scriptet. Ez még egy elég nyers fapados állapot. Dokumentálni, publikálni mindenképp fogom. Jó lenne valami kezelőfelületet is elkövetni hozzá, bár ezt nem igérem (van aki rágja a fülem a kezelőfelület miatt, ha megunom akkor írok egyet hozzá)

2. Microsoft Windows Server 2003 POP3/SMTP szolgáltatás Alias és Autoforward

Mint azt egy korábbi bejegyzésben írtam, be kell vezetnem az egyik cégünknél a címben jelölt szolgáltatást. Megnéztem mind a dokumentációt, mind az eszközt magát és arra a megállapításra jutottam, hogy a fenti két funkciót nem tudja megoldani (ettől persze még lehet, hogy tudja, csak nekem nem sikerült kicsikarnom belőle), ezért írtam egy SMTP Event Sink-et ami megoldja a feladatokat. Kész is van, némi dokumentáció, fazonírozás szükségeltetik még hozzá és mehet ki a netre.

3. Outlook Form, VBScript és Olvasóablak

Szintén az egyik korábbi bejegyzésben volt róla szó, hogy az Outlook az olvasóablakban nem tudja megjeleníteni azokat a leveleket amiknek az eredeti form-jában VBScript kód van. Kitaláltam rá egy koncepciót, hogyan lehet ezt megkerülni. A kód már el is készült olyan 80-90% -ig. Már működik, csak be kéne fejezni és ki kéne találni egy olyan módszert amivel más is fel tudja használni a saját programjaiban. Azt hiszem nincs már sok munka vele, talán ebből is cikk lesz még a héten.

4. Maildump

Az előző probléma megoldásának a mellékterméke egy olyan kis script ami képes egy Outlook levél (remélhetőleg összes hasznos) tulajdonságait kilistázni fájlba, megkönnyítve ezzel a különböző leveleket piszkáló programocskák fejlesztését. Tudom, hogy a Microsoft rendelkezik egy ilyen eszközzel http://www.microsoft.com/downloads/details.aspx?familyid=3d1c7482-4c6e-4ec5-983e-127100d71376&displaylang=en , de ez elsősorban c/c++ programozóknak készült, ebből következően nem igazán jó script és VBA makrók gyártásához. Ez a darab még eléggé kezdetleges állapotban van, de ettől függetlenül nem sok munka van már vele.

5. Alternatív feladó

Már elég régen csinálgatom ezt az alternatív feladó nevű dolgot. Most a publikáció mellett éles környezetben is kipróbáltam és kiderült ez-az (ennek lett a következménye a 3. pont is). Ezeket összefoglalva, összerakva ki fogom rakni az egész megoldás egy új verzióját, ami néhány már meglévő hiányosságot és néhány azóta talált újat javít. Még tervezem az OWA kiegészítését egy megfelelő form-mal, de ez nem most lesz.

6. Hasznos fügvények

A hasznos fügvények szekciót akarom kiegészíteni néhány apró osztállyal mint pl. fájlba logolás, vagy template-ek kezelése. Ezekben nincs semmi trükk vagy nagy ötlet, csak jól jönnek a scriptek gyártásához.

Na szóval mára ennyi. Lesz min rágódnom.

A napokban elkezdett rendetlenkedni az egyik régi, nem Exchange mail szerver az egyik cégünknél. Pontosabban nem elkezdett, hanem láthatóan már régen ilyen volt, csak egy hibás konfiguráció rendberakására volt szükség arra, hogy ez kiderüljön. Pontosan az történik, hogy az illető szerver néha nem veszi át a leveleket egy-két órán keresztül, utána pedig minden ok nélkül megjavul. Az adott termék nem épp egy mai gyerek, eredetileg NT4-en futott, úgy tették át a kollégák w2k3-ra, és ezen a platformon nem támogatott, akár ez is okozhatja a gondot. Arra a döntésre jutottunk, hogy nem kezdjük nyomozni az okokat, hanem megy a dolog a kukába és helyette a w2k3 beépített POP3/SMTP párosa lesz (Exchange sajnos nem lehet pénzügyi okokból). Ez már a platformváltáskor is felmerült, de akkor nem lépték meg, mert hiányoltak két funkciót, az alias-okat és az átirányítást. Én még nem néztem utána, hogy valójában tudja-e ezeket a POP3/SMTP. Most elkezdem olvasni a doksit, és gyártok némi teszt konfigurációt.

Ha nem tudom vele megoldani az említett funkciókat, akkor jön a kódgyártás, mert a fejemben már megvan, hogy az említett funkciókat hogyan lehet SMTP Sink-ben megoldani. Szóval, ha szükség lesz rájuk akkor megcsinálom és publikálom a kódot.

Épp egy Outlook Formot próbálok irogatni. Eközben belefutottam egy érdekes üzenetbe. Az ember megtervezi a formot, tesz mögé valami kódot, minden szépen ketyeg, elmennek az üzenetek, ráadásul úgy ahogy szeretném, jó is lenne, de....

Amikor megérkezik az üzenet, a másik oldalon az olvasó ablakban az üzenet szövege helyett ezt találom:

"This item contains active content that cannot be displayed in the Reading Pane. Open the item to read its contents."

Na jó, ha megnyitom a levelet akkor szépen tudom olvasni, de se én, se a felhsználók nem akarják megnyitni, úgy látszik, hogy az emberek legnagyobb százaléka az olvasó ablakban szeret levelet olvasni. Akkor keressük meg, mit követtem el, hogy ez történik. Megtaláltam:

http://support.microsoft.com/?id=241205

A cikk szerint, ha egy üzenet életrajzának bármely időpillanatában a form mögött volt VBScript kód akkor a fenti kedves üzenetet kapom. Beállít valami flag-et és ez már örökre így is marad. Hurrá!

Kipróbáltam, hogy fogtam egy egyszerű eredeti Message formot, beleraktam a kód részébe egyetlen megjegyzést, és elküldtem a levelet rögtön látszik a fenti üzenet, tehát valóban így van és nem én vagyok a hunyó.

Csináltam két referencialevelet egy jót és egy rosszat és megvizsgáltam őket ezzel az eszközzel:

http://www.microsoft.com/downloads/details.aspx?familyid=3d1c7482-4c6e-4ec5-983e-127100d71376&displaylang=en

Azt tapasztaltam, hogy egy rakás mapi property különbözik a leveleim között, ráadásul a rossz levélben RTF!!! body van, csak tudnám minek. Gyanítom, hogy ha elkezdenék bogarászni és c/c++-ban elkövetnék valami com objektumot, akkor át tudnám állítani a dolgot. Ezzel csak két bajom van:

- Az ilyen irányú programozó ismereteim elég korlátosak, tehát nagy biztonsággal hónapjaim mennének rá, ennyit meg az egész nem ér

- Amikor publikálom a saját dolgaimat, ma még nem szívesen adok ki a kezemből se bináris kódot, se olyan forrást amihez azoknak akik olvassák az oldalamat még fordítgatnijuk kell, elvégre a dolog rendszergazdáknak és nem fejlesztőknek szól

A dolognak az lett a vége, hogy készül egy VBA makró az Outlookhoz ami megoldja azt, ami a Microsoft cikk szerint lehetetlen.

A történet a háttérben fog generálni egy az eredetivel megegyező üzenetet, és el fogja dobni az eredetit (még nincs kész, de már működget ).

Utolsó megjegyzésként azért hozzátenném a történethez, hogy láthatóan ez a működés már az Outlook 98-ban is fennált (találtam egy 1999-es OL98-as verziót is a fenti cikkből). Drága Microsoft! Miért nem lehetett ezt röpke 6 év alatt megoldani?

Elég régóta adminisztrálok Exchange szervereket. Sok-sok bajom volt már a levelek routolásával. Most épp egy olyan környezetünk van ahol több domainben több Exchange szerver található ráadásul nem is meinden levelező rendszer Exchange (valami régi SMTP/POP3 cucc, na meg egy Notes). Ezt megfejelve a szokásos kis Exchange Event Sinkjeimmel egy elég nagy routing gubanc jön ki.

Ma reggel a fent említett Notes-től (róla migrálunk és nem lesz már sokáig, hála istennek) át akartam tenni a levelek beérkeztetéssét arra az Exchange szerverre amire a régi Notes felhasználók levelei kerültek.

Szépen átírom a DNS-t, erre a tűzfalon csücsülő sendmail elkezd balhézni, hogy Relaying denied. Megnézem telnetből és tényleg. Eldobja az INBOUND !!! leveleket RELAYING !!! denied-al.

Na én ilyet még nem láttam.

Hogy tiszta legyen, egyszerüsítve a környezet a következő. Vegyünk két Exchange szervert, legyenek EX1 és EX2. Mind a két szerveren van két-két SMTP Virtual Server legyenek EX1_def, EX1_ext, EX2_def és EX2_ext. Legyen két domainünk local.ex és corp.local.ex. Legyen egy felhasználónk akinek mind a két domainben van címe user@local.ex és user@corp.local.ex. Van még egy Notes szerver ami eredetileg a local.ex domain leveleit kezelte. Az EX1_def és az EX2_def a 25-ös porton hallgat és a 9025-ös porton csatlakozik kifelé. Az EX1_ext és az EX2_ext a 9025-ös porton hallgat és a 25-ös porton csatlakozik kifelé. Az EX1_def-nek az EX1 a smarthostja az EX2_defnek az EX2, az EX1_ext-nek és az EX2_ext-nek a tűzfal. Na ez idáig működik is mint a kisangyal.

Most jön a gáz. Ugye a recipient policy-ban a corp.local.ex domainre be van kapcsolva az, hogy "This Exchange Organization is responsible for all mail delivery to this address" a local.ex -re pedig ki van kapcsolva. Van továbbá egy olyan SMTP Connector ami átirányítja a local.ex-es leveleket a Notes szerverre és az EX1_ext virtual serveren csücsül.

Ezek után ha az EX2-re küldök levelet akár user@loacal.ex -nek akár a user@crop.local.ex -nek akkor azt átveszi a szerver, ha az EX1-re küldök levelet a user@corp.local.ex -nek akkor azt átveszi, viszont ha az EX1-re küldök levelet a user@local.ex -nek akkor azt relaying denied-al eldobja.

Na most az a kérdés, hogy valamit rosszul konfiguráltam, vagy ez egy icipici bug az Exchange-ben?

Ez az egyész egy olyan probléma amit nem tudok megoldani. A környezet E2K3SP1.

A megfejtőnek söröket/borokat osztok...

Gondolom már mindenki unja a témát aki véletlenül olvassa ezt (csak reménykedem benne, hogy van ilyen), én legalábbis nagyon unom.

Összearktam kipróbáltam, oda akartuk adni a kedves felhasználónak aki miatt újra elővettem a témát (eredetileg egy bő éve írtam meg a kódot, de eddig a saját rendszerünkben nem kellett). Természetesen nem volt jó. Írtam a cikkben pár korlátozásról, mint például, hogy a display name nem cserélhető le vele (elvégre az adatok az AD-ból jönnek és ott nincs lehetőség arra, hogy valahol értelmesen el tudjam tárolni ezeket, schemá-t pedig majd hülye leszek bővíteni e miatt).

Na ez persze nem volt így jó.  Végül is kitaláltam a megoldást. A kód nagyrészét már át is írtam ennek megfelelően, tehát lassan jön az egész megoldás következő kiadása ami már ezt is tudni fogja (talán még ezen a héten).

Na ma végre hosszas küszködés után (főleg az idővel és a lustasággal) befejeztem ezt a Sent Items szétválogató szerkezetet.

Elkészült, működik, de nem vagyok vele elégedett. Ennyit sikerült megoldanom. Ha valakinek van rá ötlete, hogyan lehetne rajta javítani (ne kelljen időzíteni és ne generáljon "Sent behalf of" tipusú leveleket), azt szívesen veszem.

Használja mindenki egészséggel akinek szüksége van rá!

El kezdtem gondolkozni ezen a blog dolgon. Vajon olvassa ezt valaki? Eddig semmi visszajelzést sem kaptam.  Egyenlőre még nem vesztettem el a kedvem, hogy írjak. Meglátjuk.

Az előző bejegyzésem kapcsán (OWA programozás) újra eszembe jutott, hogy sok minden piszkálja a csőröm az Exchange-ben. Mindenféle hírekben lehet róla olvasni, hogy jön az E12 az Exchange következő verziója. Nem tudom, hogy időben vagyok-e még, de úgy gondolom, hogy össze kéne állítani egy kívánságlistát a Microsoftnak, hogy mit is szeretnénk látni a következő verzióban. Én leírok néhány ötletet, remélem másoknak is lesz hozzáfűzni valójuk, utána megpróbálom eljuttatni az illetékeseknek.

- Programozható, dokumentált OWA felület. Legalább olyan szinten dokumentált és testreszabható legyen mint az Outlook, hiszen egyre többen már csak ezt használják és ebből következően a mai helyzetben, az Outlook hozzáfejlesztések nem érhetők el az OWA-t használók számára.

- SQL motor a JET engine helyett. Tudom, ez nem fog bekövetkezni, de akkor is leírom

- Az SMTP szerver jobb scriptelhetősége. Szeretném elérni, hogy ne csak a jelenlegi OnArrival ponton lehessen scriptből beavatkozni, hanem a többi EventHandlernél is.

- A több e-mail címmel rendelkező felhasználók korrekt kezelése. Értem ez alatt, hogy az alapértelmezettől eltérő címekkel lehessen levelet küldeni, a különböző címekre beérkező levelekről a felhasználó lássa, hogy melyik címére érkezett, az elküldött elemek szétválogathatóak legyenek.

- A scripting egységesítése. A különböző pontokon lévő scripting engine jelenleg különböző tudással rendelkezik. Pl. a Store Eventeket és az Outlook formokat csak VBScriptben lehet megírni. Az SMTP-nél és a WSHnál működik a JScript is.

Most hirtelen ennyi jutott eszembe, ha valakinek van még ötlete, akkor azt várom, hátha el tudunk érni valamit.

Azt vettem a fejembe, hogy belenyúlok a Microsoft Exchange 2003 OWA kódjába. Ezt ugye alapvetően meg tudom tenni, hiszen az egész OWA láthatóan DHTML (HTC objektumok) alkalmazás. Azért akarom ezt megtenni, hogy ugyanúgy ahogy az Outlook-hoz az OWA-hoz is tudjak saját formokat elkövetni. Dokumenttációt nem találtam a dologhoz (ha valaki tud ilyet azt megköszönöm), összesen ennyit találtam:

"OWA customization and component reuse is not supported by Microsoft"

Tehát saját magamnak kell kibogarásznom a dolgokat. Belenéztem a kódba, hogy

Próbálok finoman fogalmazni. Nem vagyok róla meggyőződve, hogy az OWA-ban használt programozási stílus (a forráskód kinézete, dokumentáltsága) megfelel a Microsoft belső szabályainak. Ráadásul ez olyan kód ami ki is kerül, nemcsak bináris állományként. Nem akarok ítélkezni, miután nem vagyok programozó. Mindenki győződjön meg róla saját maga! Egy telepített Exchange 2003 SP1-esen érdemes megnézni ezt:

C:\Program Files\Exchsrvr\exchweb\6.5.7226.0\controls\ctrl_Message.js

Nem tudom mi lesz belőle, de megpróbálok valamit összehozni. Majd beszámolok, hogy mire jutottam.

Ma reggel leültem a gép elé, hogy megírjam a dokumentációt az elmúlt napokban reszelgetett scriptemhez, valamint belekzdtem néhány új dologba - pontosabban - csak belekezdtem volna, de ennek kapcsán észrevettem egy hibát a már publikált dolgokban amit ráadásul elég sok helyre beraktam, így most javítgatok.

Az történt, hogy a "Levelesláda méretértesítő"-höz tartozó doksi megírásakor a HTML template-jeimben használt megjegyzés tag-ekben amiket a behelyettesitendő pontokra raktam lemaradtak a felkiáltójelek így helyett <--TAG--> került oda.

A script doksi írása félrerakva, most a hibákat javítgatom.

A "Levelesláda méretértesítő", és a "Jelszó lejárat értesítő", az "Exchange Store méret" dokumentációját javítottam, valamint ez utóbbinál a scriptet és a minta htm fájlt is mert ezekbe is belekerült az idióciám.

Ez rögtön arra is lehetőséget ad, hogy az "Exchange Store méret" scriptben még a múlt héten elkövetett kis plusz funkcionalitás is kikerüljön, nevezetesen az, hogy már a levél címében is lehet használni a template tag-eket.

Mint már kedden is írtam, belekezdtem az alternatív feladó játékomhoz tartozó, az elküldött elemeket szétválogató script gyártásába. Második nekifutásra sikerült is megcsinálni a dolgot (szépséghibája az lesz, hogy időzítve kell futtatni, mert ugye Store Sink-ként nem lehet). Már össze is raktam, amikor jött az ötlet, hogy nem elég szétválogatni a leveleket és kiírtani belőlük a speciális csatolmányt (ami a valós e-mail címet tartalmazza), hanem át is kellene írni az e-mail feladóját.

Ez ugye nem jelenthet gondot, hiszen alig kell nyúlni valamihez. A CDO.Message objektumon át kell írni a From property-t és már kész is vagyunk.

Átírtam, megnéztem az eredményt és meglepetten tapasztaltam, hogy az Outlookban nem látok változást. Elkezdtem kisérletezni. Állítgattam az ide vonatkozó propertyket (From, Sender) - Semmi. Állítgattam a lehetséges httpmail és mailheader mezőket:

"urn:schemas:mailheader:from"
"urn:schemas:mailheader:sender"
"urn:schemas:httpmail:from"
"urn:schemas:httpmail:fromemail"
"urn:schemas:httpmail:fromname"
"urn:schemas:httpmail:sender"
"urn:schemas:httpmail:senderemail"
"urn:schemas:httpmail:sendername"

(Már ami ebből állítható és nem Read-Only)

Eredmény semmi.

Arra gondoltam, hogy én berakom a levelet úgy ahogy kell, ő pedig az AD alapján visszakeresi az e-mail-t és változatlanul a számomra épp nem jó AD objektumot rakja be a levélbe. Emlékeztem az Exchange ResolveP2 funkcionalitására, ami kísértetiesen ilyen. Megnéztem a KB-t. Meg is találtam az Exchange 2000-es cikket:

http://support.microsoft.com/kb/288635

Majd miután sejtettem, hogy ez nem jó a 2003-ra tovább keresve azt is megtaláltam:

http://support.microsoft.com/kb/828770

Ez utóbbiból kiderült, hogy amire gondoltam az

1. A 2003-ban már ki van kapcsolva tehát nem lehet a tettes

2. Csak a transporton beérkező levelekre vonatkozik, így az adott esetre nem.

Továbbmenve végül találtam egy ilyen névteret:

"http://schemas.microsoft.com/mapi"

Ugye ehhez a névtérhez tartoznak azok a paraméterek amik az Outlook kiegészítő információit tartalmazzák. Az Exchange ugye MIME formátumú levelekkel beszélget a nagyvilágban, az Outlook meg MAPI leveleket használ (ez utóbbi többet tud, de nem szabványos). Az az információ, hogy egy e-mail cím nem SMTP formátumú ezek között a paraméterek között keresendő. Olvasgattam az MSDN-t (CDO, Exchange schema, MAPI doksi) turkáltam a Platform SDK-ban (Mapitags.h) és meg is találtam amit kerestem. Az eredeti Exchange-es (Active Directory-ból származó) e-mail cím (pontosabban AD user object) ebben a három paraméterben található:

PR_SENDER_NAME
PR_SENDER_ADDRTYPE
PR_SENDER_EMAIL_ADDRESS

Át is írtam az értékeket megfelelően, és láss csodát működik. Legalábbis félig. Mostmár megjelenik a várt feladó, csak éppen a meghatalmazott (on behalf of) státuszban. Túrtam tovább, de nem találtam megoldást (az ide vonatkozó mezőket átírva nem történik semmi).

Ez volt az a pont ahol úgy gondolom, hogy a dolog már használható, így amint dokumentálva össze lesz rakva (remélhetőleg legkésőbb holnap reggelre) megy ki a web-re.

A múlt pénteken publikáltam az Exchange Alternatív Feladó nevű kis szösszenetemet (http://www.gomori.hu/as_hu.htm). Valahogy nagy közlési kényszerem volt így kihagytam belőle egy még el nem készült kiegészítést. Bele is írtam a szövegbe:

"A megoldáshoz tartozik még egy opcionális elem, ami megoldja, hogy a felhasználó Elküldött üzenetek (Sent Items) mappája alatt különböző mappákba szortírozza feladó szerint a leveleket. Ez a kiegészítő elem Exchange Store Sink formájában lesz elérhető, amint elkészült."

Na most gratulálhatok magamnak.  Nem készült el. Ebben a formájában nem is fog.

Péntek óta írtam az igért Store Sinket folyamatosan. Tegnap reggelre már majdnem elkészült amikor rájöttem, hogy kiszúrtam magammal.

Regisztáltam a Store Sinket a teszt felhasználóm Sent Items mappájára és azzal tesztelgettem, hogy megfelelő leveleket dobáltam bele kézzel. Amikor már majdnem kész volt az egész, akkor egyszer kipróbáltam úgy is, hogy küldtem egy levelet a teszt felhasználó nevében (ami ugye bedobja a Sent Items-be a levelet) és csodáloztam rajta, hogy nem lövi el a Sinket. Több órát bohóckodtam vele, hogy mit rontottam el. Nem találtam. Feldobtam mint kérdést a levlistára is. Még mielőtt választ kaptam volna rá, ezt találtam:

http://support.microsoft.com/?id=297274

Hurrá, kiszúrtam magammal (mellesleg nem értem, hogy mi a halálért nem volt képes az MS megoldani, hogy a Sent Items-en is működjön a Store Sink, vagy inkább mondjam azt, hogy nem ártana végre ezt az RPC-s, MAPI-s bohóckodást bevágni a kukába), amit kitaláltam soha a büdös életben nem fog működni.

Ahogy egy kedves kollégám szokta mondani:

"Akkor most középkezdést hirdetünk"

Miután az, hogy a Sent Items legyen szétválogatva feladónként nem az én saját agyszüleményem volt, hanem az egyik kedves felhasználó találta ki, így nem mondhatom azt, hogy "ok, ezt felejtsük el", hanem valahogy meg kell oldanom. Nekiugrottam mégegyszer, most 80%-os állapotában van az a script ami mondjuk óránként időzítetten futtatva végigmegy a Sent Items-en és leválogatja az elemeket.

Ennyi, majd ha kész lesz kirakom.

Üdvözlök Mindenkit!

Ilyet eddig még nem csináltam. Csodálkozom is magamon.   Elkezdem a saját naplómat.

Ez az első, bemutatkozó bejegyzés.

Néhány hónappal ezelőtt nekikezdtem egy saját web oldal készítésének, ahol a mindennapi munkámban használt, elkészített scriptjeim és leírásaik találhatók. Ezidő alatt folyamatosan gondolkoztam rajta, hogy ezzel kapcsolatban elindítsak-e egy internetes naplót. Most megteszem. Ha a saját lustaságom nem akadályoz meg benne, akkor itt fogom kommentálni, kicsit kötetlenebb formában azokat a dolgokat amik az oldalra kikerülnek (és azokat amik nem). Ugyanakkor ez lehetőséget ad arra is, hogy fórumként funkcionáljon a weboldal mellett.

Az oldal itt található:

http://www.gomori.hu

Ez a kis script az egyik legegyszerűbb SMTP EventSink. Semmi mást nem csinál, csak a megadott könyvtárba lementi a beérkező leveleket. A levelek formátuma olyan, hogy az Outlook Express tudja olvasni. A script archiválásra, vagy levelezéssel kapcsolatos hibakeresésre használható jól. Ezt a verziót még jó néhány dologgal ki akarom egészíteni a közeljövőben.

[2009.04.10] Már nem fogom kiegészíteni. A kód innen tölthető le.

 Megjegyzés

Ahhoz, hogy megjegyzést tégy a bejegyzésekhez, regisztrálnod szükséges. Egyszerűen válaszd ki a regisztráció linket a jobb felső sarokban és add meg a szükséges információkat. Ha bejelentkeztél, fűzhetsz megjegyzést a bejegyzésekhet. 

Már regisztráltál? Kattints ide a bejelentkezéshez. 

 

 Keresés