Feltettem egy kérdést a levlistán a minap. Viszonylag ritkán szoktam kérdezni, de most megtettem. Kiváncsi voltam, hogy az előttem álló problémát mások hogyan szokták megoldani.
A feladat a következő:
Van egy Exchange szerverem (ami mellesleg DC, meg fájl szerver is) ami kezd kifogyni a szabad helyből. Úgy döntöttem, hogy a bővítést nem plusz diskek berakásával, hanem a jelenlegiek cseréjével fogom megoldani. Ez néhány órás rendszerleállást okoz. Ez felveti azt a problémát, hogy mi legyen a közben beérkező levelekkel. Az is lehetőség lenne, hogy nem törődöm az egésszel, mert a levelezőrendszerek alapértelmezett időtúllépései miatt nagy valószínüséggel nem okozna problémát, de ennél biztosabb megoldást szeretnék két okból:
1. Ha esetleg mégsem jönne össze az időtúllépésen belül megoldani a dolgot, nem  vet jó fényt rám, hogy a leveleket küldők felé késleletetésre vonatkozó üzenetek menjenek vissza, ráadásul ha valaki átállítgatta a saját SMTP szerveret időzítéseit, akkor nyugodtan lehet, hogy eldobja a leveleket.
2. Mi van akkor, ha az upgrade valamilyen okból nem sikerül, de az SMTP service mégis elindul és elkezd leveleket fogadni. Hogyan fogom ebben az esetben kibogarászni a közben bejött leveleket?
Feltettem azt a kérdést, hogy:
“Ki, hogyan oldaná meg azt a feladatot, hogy mondjuk van egy Exchange szerver amit karbantartási okokból néhány órára le kell állítani és nem szeretném, ha ez idő alatt a rendszerről visszapattannának a levelek. Magyarán az lenne a feladat, hogy valami átmenetileg átvegye a leveleket és tárolja addig amíg az Exchange újra nem él, majd beadagolja ezeket a leveleket.”
Többféle választ kaptam a kérdésre:
1. Megpróbálták megmagyarázni, hogyan működik az MX rekord, az SMTP és a DNS. Ezekről van némi távoli körvonalas fogalmam, nem igazán erre vonatkozott a kérdés. Tuti, hogy rosszul fogalmaztam (szoktam. ).
2. Többen javasolták a szolgáltató által nyújtott másodlagos relay szolgáltatást. Ez technológiailag jó lenne, ugyanakkor pont most versenyeztettem a szolgáltatókat, mert a bérelt vonalért jelenleg fizetett összeg nem picit barokkos. Ebben a képlékeny helyzetben nem szeretnék semmit megrendelni a jelenlegi szolgáltatótól.
3. Álítsak be másodlagos SMTP szervet! Na igen, erre gondoltam. Ugyanakkor senki sem fejtette ki, hogy ezt hogyan tudom a legkissebb munkával megoldani. Magánbeszélgetésekben hallottam erre PostFixet, másik Exchange-et stb. Ezekkel az a baj, hogy messze vannak a legkissebb munkáról alkotott elképzeléseimtől. A PostFix azért mert nem értek hozza, az Exchange meg azért mert nem szeretnék atombombával lövöldözni a bolhára.
Ezek után gondoltam, hogy maradok a fejemben lévő eredeti megoldásnál. Ez abból állna, hogy fogok egy XP-t, felrakom rá az SMTP Service-t, írok egy Event Sink-et ami berakja a levél fejlécébe az SMTP boríték recipient mezőjét és egy scriptet ami felveszi a Drop könyvtárból a leveleket és az Event Sink által berakott fejléc mezőben lévő címekre elküldi a levelet (ezek a scriptek úgy is jól jönnének nekem később másra).
Neki is kezdtem a munkának amikor is az MSDN-en mászkálva (http://msdn.microsoft.com/en-us/library/ms875938(EXCHG.65).aspx) valamin megakadt a szemem:
“The address list corresponds to the set of RCPT TO SMTP protocol commands received for the message, or the X-receiver headers present at the beginning of the message if it was submitted to the local SMTP service pickup directory.”
Nézzük csak meg. Mi van akkor, ha a bejövő levelet az SMTP szolgáltatással lepakoltatom a Drop könyvtárba? Kipróbáltam. Szépen megjelenik benne az X-receiver mező. Hopp, Event Sink kilőve. Nem kell mert az SMTP megcsinálja maga. Ha már itt tartunk, továbbmentem. Némi konfig után beraktam az így kapott levelet a Pickup könyvtárba. A levél elment és megkaptam a céges levelezőben. Hurrá!!!  Ugy látszik sikerül megoldanom a legkisebb munkával a problémát, még programolni sem kellett, hozzá. Akkor most a procedúra (hátha egyszer jól jön másnak is):
1. XP telepítés (Na ez nem fog kelleni, mert van gép amit tudok rá használni)
2. SMTP Service telepítés (XP tűzfalon beengedni a 25-ös portot!!!)
3. SMTP Service-en beállítani a szóban forgó domain-t mint lokális domain-t.
4. DNS-ben átírni az MX-et
5. Megcsinálni a szerver átállást, leellenőrizni, hogy minden megy-e
6. Visszaírni (kivenni) az MX-et
7. Kivenni az SMTP Service-en a szóban forgó domain-t a lokális domain-ek listájából.
8. A Drop könyvtár tartalmát átmásolni a Pickup-ba.
Kész.
Ha minden jól megy a jövő hét végén meg is csinálom az upgrade-et. Remélem sikerül gördülékenyen lebonyolítani a dolgot. Valahogy nem szeretnék olyan cikket írni a jövő hétvége után amilyet JoeP-nek sikerült (https://www.emaildetektiv.hu/2005/07/14/a-lehetetlenre-egy-kicsit-varni-kell/). Abszolult együttéreztem vele annak idején amikor olvastam.
[2008-05-30: Kicseréltem a linkekeket élőkre, remélem nem nyúltam mellé]