English (United States) Magyar (Magyarország)
You are hereBlogs
Register   |  Login
  
  
  
Author: SUF Created: 2008. 11. 26. 10:28
SUF Blog

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.

Azt hiszem a fenti feladat nagyjából mindenki előtt ismert aki vállalati környezetben Exchange Server-t használ. Bárki aki SMTP Sink-ekkel kezd foglalkozni általában ezzel a feladattal és a megoldásával találja szembe magát. Erre a Microsoft saját maga írt egy VBScript Sink-et ami a KB 317680-as cikkben található. Amikor hosszú évek után újra programozgatásra adtam a fejem nekem is ez volt az első feladatom, kicsit átírva sokáig használtam is az említett Microsoft megoldást.

Az évek során kiderültek e script hibái:
- A jogi nyilatkozat szövege nem módosítható a forrás megváltoztatása nélkül
- A script belepiszkál az elektronikusan aláírt levelekbe, ezzel tönkreteszi a biztonsági borítékot
- Ha az Exchange Server több domaint (céget) kezel, akkor nehézkes megoldani, hogy különböző jogi nyilatkozat legyen a különböző domainekre

Az itt közzétett script a fenti kérdésekre ad megoldást. Használatához mindössze:
1. El kell készíteni hozzá domainenként két fájlt ami a jogi nyilatkozat szövegét tartalmazza text és html (a html formátum csak a szöveget esetleg a formázásokat tartalmazza, se a html fejléc, se a tag-ek ne legyenek benne!) formátumban valahogy így:
.txt
.htm
Ezekből természetesen annyi kell ahány domain-hez akarunk jogi nyilatkozatot rendelni.
2. A 1. pontban létrehozott fájlok elérési útvonalát be kell írni a script-be a DisclaimerFiles változóba.
3. A levéltovábbítás eseményeinek kezelése című cikkemben vázolt módon regisztrálni kell a scriptet.
[2009.04.11] Ez a Sink az Exchange 2003-hoz használható. Az Exchange 2007-hez nem szükséges, mert ott beépített megoldás van a feladat megoldására. A Sink forrása innen tölthető le.

 Comments

In order to add comments, you must register on the site. Simply select the Register link in the top right portion of the screen and enter your contact information. Once you are logged-in, you will be able to add comments.

Already registered? Click here to login to the site. 

 

 Keresés