Jak zbudować system Postfix o wysokiej dostępności?

12

Muszę skonfigurować zdalne dublowanie dla serwera Postfix (gdzie zawartość obu serwerów poczty powinna być taka sama w dowolnym momencie).

Chodzi o to, że jeśli główny serwer ulegnie awarii w pewnym momencie, serwer lustrzany zajmie jego miejsce, zarządza nowymi przychodzącymi wiadomościami e-mail, a gdy serwer e-mail pojawi się ponownie, zaktualizuje go o nowe wiadomości e-mail i zwróci to kontrola do zarządzania nowymi wiadomościami przychodzącymi.

Serwery pocztowe będą hostowane w różnych miejscach (tj. Maindomain.com, themirrorsite.com).

Uzyskanie prostego serwera kopii zapasowej nie wydaje się zbyt trudne:

Problem polega jednak na tym, że ta konfiguracja nie spowodowałaby, że strona kopii zapasowej byłaby pełnym lustrem głównego serwera pocztowego (będzie przechowywała tylko e-maile otrzymane, gdy główny serwer jest wyłączony).

Czy istnieje sposób na osiągnięcie wymaganej konfiguracji?

VanHackman
źródło

Odpowiedzi:

22

Wynik, który chcesz osiągnąć, i sposób, w jaki zdecydowałeś się to zrobić, są bardzo różne. Mówiąc wprost, to, co chcesz wdrożyć, jest złym pomysłem, a jeśli uda ci się jakoś sprawić, by działało, nie będzie działać zbyt długo (lub bardzo dobrze).

Trudno odpowiedzieć na to pytanie, ponieważ od razu przeszedłeś do implementacji i nie opisałeś nic przydatnego w swoim środowisku ani tego, co próbujesz osiągnąć. Nie rób tego, uzyskasz tutaj znacznie lepsze wyniki, jeśli „pokażesz swoją pracę”.

Pozwólcie jednak, że przedstawię kilka scenariuszy, aby dać wam przedsmak tego, co możliwe, praktyczne i przydatne:

  • Zapewnienie, że żadna poczta nie zostanie utracona: (Nie sądzę, że jest to potrzebne, ponieważ dokumentacja, do której się odwołujesz, odpowiednio ją obejmuje) Wszystko, co chcesz mieć tutaj, to pewność, że bez względu na to, jak długo trwa infrastruktura dostarczania i zarządzania pocztą, nie będziesz odbijaj dowolną pocztę, a Ty możesz kontrolować, kiedy dostawa zostanie zrealizowana. W tym celu „prosta” zewnętrzna kopia zapasowa MX będzie działać poprawnie. Mówię „prosty”, ponieważ musisz replikować dużo danych do kopii zapasowej (cała logika antyspamowa, prawidłowe informacje o użytkowniku / aliasie, abyś mógł poprawnie odrzucić nieprawidłową pocztę w czasie SMTP, tego rodzaju rzeczy), ale wszystko to jest możliwe do skryptowania , automatyczny i dość trywialnie możliwy do wdrożenia z odrobiną staranności. Tak długo, jak masz wystarczająco dużo dysku, aby ustawić w kolejce całą pocztę,
  • Zapewnienie pełnej dostępności systemu poczty : Wygląda na to, że tego właśnie chcesz, ale nie jest to proste ani ładne. Zasadniczo chcesz mieć możliwość dostarczania „pełnej” usługi pocztowej do bazy użytkowników w przypadku całkowitej awarii witryny. Zasadniczo jest to w rzeczywistości niemożliwe, ponieważ replikacja nie jest natychmiastowa, ale można uzyskać co najmniej rozsądny poziom niezawodności. Trudnym elementem nie jest jednak MTA; to sam sklep pocztowy. Musisz znaleźć sposób replikacji wszystkich operacji przechowywania poczty (dostarczanie nowej poczty, zmiany stanu wiadomości, usuwanie) do drugiej witryny w czasie zbliżonym do rzeczywistego - i zrobić to na dwa sposoby, w zależności od tego, która strona jest aktywna . Możesz skorzystać z taniej opcji okresowego rsync (z ryzykiem, że cokolwiek zrobione od czasu ostatniego rsync zniknie na zawszejeśli potrzebujesz przełączenia awaryjnego) lub skorzystaj z różnych technik replikacji na poziomie plików lub bloków, aby spróbować zachować synchronizację w czasie zbliżonym do rzeczywistego (zmniejszając utratę danych w zamian za znacznie bardziej skomplikowaną konfigurację i działanie) . Niektóre systemy pocztowe mają wbudowane funkcje replikacji, które mogą ułatwić życie. Potem jest cały problem z awarią i jak to zrobić, a następnie z powrotem , co jest trudniejsze, i wreszcie musisz to okresowo testować, aby upewnić się, że aktualizacja systemu operacyjnego, którą zrobiłeś jakiś czas temu, nie zepsuć cokolwiek ...

Zasadniczo ta ostatnia opcja jest bolesna i denerwująca. Moją osobistą preferencją jest to, że możesz sobie z tym poradzić (i będziesz zaskoczony, jak często), aby umieścić wszystkie jajka w jednym koszyku, po upewnieniu się, że masz naprawdę dobry, solidny kosz (odpowiednia inżynieria systemów) ), mając pod ręką zapas łatek i narzędzi (skupiając się na wysokiej odzysku ) i upewniając się, że ludzie wiedzą, że co jakiś czas kilka jaj może się połamać i naprawdę przepraszam, ale życie nie jest idealne (nie udzielaj gwarancji SLA, które nie są rozsądne).

Są chwile, kiedy potrzebujesz ultra wysokiej dostępności, a ja zbudowałem systemy, które to zapewniają, ale nie są one proste, aw wielu przypadkach nie są opłacalne, po to tu jesteśmy. Tak, HA jest fajna i seksowna, a ty zdobywasz uznanie maniaków za budowanie ogromnej potworności złożoności, ale nie jesteśmy tu po to, by pogłaskać nasze ego. Jesteśmy tu po to, aby dostarczać wartość biznesową i przepraszam, ale wysoce dostępny klaster poczty z wieloma witrynami Rube Goldberg raczej nie zapewni takiej wartości, jak prosta, niezawodna usługa pocztowa i okazjonalne „my” przepraszamy za awarię poczty, za godzinę odzyskamy systemy, zapraszam na kawę i muffinki na ogłoszenie ”.

womble
źródło
2
Nie mógłbym tego lepiej powiedzieć.
voretaq7,
4
Przepraszam, że mogę zaoferować tylko jeden +1
mailq
Myślę, że NAS zasadniczo rozwiązuje problem przechowywania i synchronizacji poczty, prawda? Zwłaszcza jeśli twój sklep pocztowy robi się duży i hostujesz pocztę dla wielu domen.
Ernie
Nie, NAS stanowi około 5% całego problemu i wpływa negatywnie na wydajność i skalowalność.
womble
1

Można to osiągnąć przez przełączenie awaryjne MX DNS + system replikacji danych.

W przypadku przełączania awaryjnego MX: dwa serwery pocztowe potrzebują pomocy w konfiguracji dns dla kopii zapasowej

Do replikacji danych: http://www.drbd.org/docs/install/

- $

SparX
źródło
Czy drbd będzie działać z serwerami, które nie są w tej samej sieci LAN? Serwer główny i serwer awaryjny powinny komunikować się tylko przez Internet, więc nie jestem pewien, czy to zadziała w tym przypadku.
VanHackman
DRBD ma zastrzeżony produkt proxy, który znacznie poprawia replikację sieci WAN; nie jest tani i nie ma gwarancji, że wszystko będzie zawsze aktualne.
womble
1

Użyłem dbmaila, aby osiągnąć podobne rozwiązanie. dbmail przechowuje wszystkie wiadomości e-mail w bazie danych. Można skonfigurować replikację bazy danych, aby upewnić się, że wiadomości e-mail są również przechowywane w zdalnej lokalizacji. To sprawia, że ​​zarządzanie systemem pocztowym jest bardziej skomplikowane, ponieważ musisz zarządzać bazą danych oraz pocztą e-mail.

Jawor Szahpasow
źródło
0

To, czego chcesz, to replikacja Postfix, której nie sądzę, że Postfix obsługuje natywnie. Rozwiązaniem, które widziałem inne osoby, jest replikacja plików danych Postfix między serwerami za pomocą rozproszonego systemu plików.

Klox
źródło
3
Mirroring Postfix jest łatwy. Ale to nie jest problem. Trudność polega na synchronizacji magazynu poczty (mbox lub Maildir). Przechowywanie maili w NFS dla IMAP jest prawie niemożliwe i prowadzi do ponownego wystąpienia pojedynczego punktu awarii.
mailq