Levélküldő gw váltás

Hi!

A terv a következő:

Inet----[gw-1 postfix]---[Mail server]------[gw-2 postfix]----Inet
                               |                                   |
                               |-----[SQL, NFS]----------|

A feladat, hogy a Mail szerveren elküldött levelek alap esetben a gw-1 felé menjenek, de abban az esetben, ha az ottani net megszakad, akkor gw-2 felé terelődjön a forgalom.
A tervet leírom, arra lennék kíváncsi, hogy működhet -e az alábbi koncepció, vagy valamiről megfeledkezem?

Alapeset: MX a gw-1-re mutat, MX2 pedig gw-2-re.
GW-2 alapból áll, levelek gw-1 felé mennek, felhasználók LDAP-ban.
GW-1 és gw-2-n is graylist + spamassasin fut, mely a háttérben lévő MySQL szerverben tárolja az adatokat.
GW-1-en és gw-2-n is a /var/spool/postfix a felcsatolt NFS-en lenne.
Amennyiben GW-1 felöl szakad a net, akkor kézzel leállítom a GW-1-et, a Mail szervert átállítanám, hogy a GW-2 felé továbbítsa a leveleket, majd GW-2-t elindítanám. Így az elküldött levelek, amik esetleg még a spoolban vannak, a közös tárterület miatt "átkerülnének" a GW-2-re, a többi összetevő (graqylist, spamassasin) meg úgyis SQL-ben van, az kezelhető.

A kérdés tehát, hogy a fentebb vázolt dolog működhet levélvesztés nélkül?
Hol lehet esetleg "gubanc", a tervezésnél miről feledkezhettem el?

Az, hogy az átállás, mennyi időt vesz igénybe, hogy matatni kell esetleg a konfigokat, kézzel kell esetleg belenyúlni pillanatnyilag nem érdekes.

Előre is köszönöm a segítséget!

Hozzászólások

Szerintem elbonyolítod így a megoldást. Én szimplán betenném MX 10-zel a gw-1-t, MX 20-szal a gw-2-t a domainbe. Így matatnod se kell az MX-eket és automatikus a váltás a bejövő leveleknél.
A gw-1 és gw-2 gépeken futna 1-1 szkript, ami figyeli a Inet kapcsolatot + Mail servert + egymást is. Ha egymást vagy a mail szervert nem érik el, akkor álljon le a postfix. Ha nem akarsz 2 db gw postfixet, akkor pedig elég csak az Inet kapcsolatot figyelni és a default gw-t babrálni a gw postfix gépen. Persze az NFS még jelenthet problémát (elérhetetlenné válik valamiért), így ezt is kezelned kell szkriptből - ekkor is a postfix leállítását javaslom.

Igen, az MX-re ez a terv, hogy mindkét gw be lessz téve úgy ahogy írtad, ebben nem láttam problémát.
Ha mindkét gw-n fut a posfix és egy azon NFS-en van a spool/postfix, akkor érzésem szerint ebből "kavarodás" lehet, ezért nem futtatnám alapból a gw-2-n a postfixet.
Az NFS figyelése jogos, jó ötlet! Köszönöm!

AZ alap a gw-1, de ha bedöglik a Net, akkor némi piszkálódás után pár perc alatt a gw-2 felé jönnek-mennek a levelek és a félig elküldött levél sem vész el, hanem kézbesítődik.
Épp ma fejezték be a Net javítását 69 óra állás után. Mondanom se kell, hogy a külker és a vezérkar tombolt...

Az MX a bejövő levelekhez kell - ha jól tudom -, azzal nincs is gondom.
A problémát abban látom, hogy amikor a belső Mail szerver küld egy levele külső címre, akkor ott nem játszik az MX, ott van egy default gw és kész. Jelen esetben ez a gw-1. Mi van akkor, ha gw-1 átvette a kiküldendő nagy csatolmányú levelet, majd miközben tolná át a hálón jön a a NET szakadás?
Ha simán átállítom a Mail szervert a gw-2-re, akkor a gw-1-en lévő megszakadt levél addig fog várakozni, amig vissza nem jön a NET.

Mi a gw1 és gw2 gépeken futó mail servernek? Simán relay? Nem lenne egyszerűbb a forgalmat betolni rögtön a mail server felé? Ezzel a befele jövő levelek problémája azonnal megoldódna. A kifelé menő levelek esetén szintén nem teljesen értem, miért probléma, ha a belső mail server direktben tud küldeni? Ebben az esetben küld a default gw-n, de nem a gw-n futó mail relay-nak. Ha szakad a kapcsolat, akkor gw csere és a levél kimegy a másik gw-n. Tehát a megoldásod a szükségesnél bonyolultabbnak tűnik - de nyilván van oka, hogy így tervezed megcsinálni. Hogy konstruktív legyek a témában:
Az általad vázolt megoldás működhet, de ajánlott több dologra is erősen ajánlott oda figyelni:
- postfix verzió mindenképpen azonos legyen a két gw-n
- egyszerre mindkét postfix sose fusson
- NFS miatt postfix user UID/GID legyen azonos a két rendszeren
További apró javaslat: a gw-1 és gw-2 a saját belső IP-je mellett használjon egy "szolgáltatást nyújtó IP"-t, ami arra a gépre van felhúzva, amelyik épp a szolgáltatást nyújtja. Így a mail serveren nem kell semmit átkonfigurálni, hiszen a gw-k két postfixének konfigja azonos, a cél IP meg a szolgáltatást nyújtó IP, ami mindig ott van felhúzva, ahol fut a postfix.
Egyébként egy további megoldási lehetőséget is felvetnék, amennyiben mindenképpen kell a gw-n futó mail-relay. Fusson a postfix mindig csak a gw-1-en, de ha ott elfekszik a net, akkor a gw-1 gépen álljon át a default gw a gw-2-re. Így a levél ki tud jutni a gw-1-ről a gw-2-n keresztül. Az, hogy a hálózat helyre áll, ellenőrizhető úgy, hogy egy adott helyet mindenképpen a net kapcsolaton át kell elérni - ha elérhetővé vált, akkor a net kapcsolat helyre állt a közvetlen szolgáltató felé. Ezzel a megoldással a mail-relay-k száma csökkent, a mail serveren pedig semmilyen konfigot nem kell cserélni net elérés váltás esetén.