Gdy Kopano zgłasza komunikat „Nie udało się połączyć z serwerem pamięci masowej” podczas dostarczania poczty, agent dostarczający (dagent) nie mógł nawiązać połączenia z podanym punktem końcowym serwera Kopano. Sam komunikat nie identyfikuje, czy przyczyną jest zatrzymany serwer, nieprawidłowa ścieżka do gniazda, uprawnienia dostępu, czy problem ze zdalnym połączeniem. Zacznij od sprawdzenia skonfigurowanego punktu końcowego i samego serwera; unikaj zmiany danych skrzynki pocztowej lub magazynu załączników podczas diagnozowania awarii połączenia.
Dokumentacja administratora Kopano opisuje dagent jako komponent dostarczający pocztę od agenta transportu poczty (MTA) do użytkownika Kopano. W dokumentacji konfiguracji Kopano Core 8.0 podano, server_socketże połączenie z serwerem Kopano i dokumentami file:///var/run/kopano/server.sockjest domyślne. Wersje pakietów, menedżery usług i konfiguracja lokalna mogą się różnić, dlatego przed zastosowaniem przykładu należy sprawdzić wartości na hoście.
Co należy sprawdzić w pierwszej kolejności?
Sprawdź, czy błąd dotyczy wszystkich odbiorców, czy tylko jednej ścieżki doręczenia. Jeśli wszystkie wiadomości przychodzące zawiodą jednocześnie, sprawdź dostępność serwera i punkt końcowy. Jeśli zawiodą tylko wiadomości kierowane przez jeden host lub węzeł, porównaj ścieżkę tego węzła dagent.cfgi ścieżkę sieciową z działającym węzłem. Zachowaj nieudaną wiadomość lub wpis w kolejce podczas testowania; wielokrotne próby mogą spowodować utratę pierwszego użytecznego znacznika czasu w logach.
W systemie wykorzystującym systemd sprawdź jednostki Kopano i dziennik serwera mniej więcej w czasie dostawy:
systemctl list-units 'kopano*'
systemctl status kopano-server --no-pager
journalctl -u kopano-server -b --no-pager
Jeśli Twój pakiet nazywa jednostkę inaczej, użyj nazwy jednostki wyświetlanej przez list-units. Nieaktywny lub wielokrotnie restartujący się serwer wskazuje na problem po stronie serwera. Przeczytaj jego dziennik w poszukiwaniu wcześniejszego błędu uruchamiania, bazy danych, konfiguracji lub pamięci masowej; ponowne uruchomienie programu Dagent nie naprawi niedostępnego serwera Kopano. Podręcznik administratora opisuje zarządzanie usługami Kopano, ale dokładne nazwy jednostek zależą od pakietu.
Czy dagent wskazuje na właściwe gniazdo serwera?
Przeczytaj aktywny plik konfiguracyjny, zazwyczaj /etc/kopano/dagent.cfg, i znajdź server_socketwpis:
grep -nE '^[[:space:]]*server_socket[[:space:]]*=' /etc/kopano/dagent.cfg
W przypadku lokalnego gniazda Unix porównaj ustawienie z gniazdem faktycznie utworzonym przez działający serwer. Typową wartością w dokumentacji Kopano Core jest:
server_socket = file:///var/run/kopano/server.sock
Sprawdź, czy plik istnieje i jest gniazdem:
ls -l /var/run/kopano/server.sock
test -S /var/run/kopano/server.sock && echo "Socket exists"
Jeśli skonfigurowane i rzeczywiste ścieżki różnią się, popraw server_socketwartość, dostosowując ją do punktu końcowego celowo używanego przez instalację. Nie kopiuj wartości domyślnej bezmyślnie, gdy serwer jest skonfigurowany do korzystania z innego katalogu środowiska wykonawczego, adresu klastra lub transportu zdalnego. Dokumentacja Kopano dokumentuje również ustawienia klucza SSL dla transportu HTTPS; składnia zdalnego punktu końcowego i wymagania dotyczące certyfikatu powinny być zgodne z konfiguracją zainstalowanego serwera.
Czy uprawnienia do gniazda mogą zablokować połączenie?
Tak. Gniazdo może istnieć i nadal być niedostępne dla użytkownika uruchamiającego dagent. Znajdź aktywnego użytkownika procesu z odpowiedniej jednostki usługi lub procesu, a następnie sprawdź gniazdo i każdy katalog nadrzędny. Na przykład:
namei -l /var/run/kopano/server.sock
stat -c '%A %U:%G %n' /var/run/kopano/server.sock
Porównaj uprawnienia właściciela, grupy i przechodzenia przez katalogi z tożsamością środowiska uruchomieniowego Dagent. W dokumentacji konfiguracji Kopano Dagent zaznaczono, że można skonfigurować użytkownika i grupę „run-as”, przy czym Kopano jest udokumentowanym domyślnym ustawieniem; pakowanie lub nadpisywanie może to zmienić. Jeśli używany jest systemd, przed zmianą właściciela należy sprawdzić jednostkę i wszelkie nadpisywania:
systemctl cat kopano-dagent
systemctl show kopano-dagent -p User -p Group
Dostosuj uprawnienia tylko w celu przyznania kontu usługi dostępu, którego potrzebuje. Nie używaj ich chmod 777w gnieździe ani w jego katalogu: może to spowodować ujawnienie uprzywilejowanego punktu końcowego usługi niezwiązanym z nim użytkownikom lokalnym. Katalogi środowiska wykonawczego mogą zostać utworzone ponownie podczas rozruchu, dlatego popraw konfigurację usługi lub pakietu, która je tworzy, zamiast polegać na tymczasowej, ręcznej zmianie uprawnień.
A co jeśli serwer znajduje się na innym węźle?
W konfiguracji wieloserwerowej lub o wysokiej dostępności sprawdź, czy DaGent używa dostępnego adresu klastra lub serwera dla swojego węzła. Przewodnik Kopano dotyczący wysokiej dostępności pokazuje, że punkty końcowe usługi i routing dostarczania Postfix muszą być skoordynowane między węzłami. Porównaj server_socketnasłuchiwanie serwera, adres DNS lub klastra, reguły zapory sieciowej i wszelkie ustawienia TLS po obu stronach. Udane połączenie z gniazdem lokalnym na jednym węźle nie dowodzi, że zdalny punkt końcowy jest dostępny z innego węzła.
Przetestuj łączność, używając tego samego punktu końcowego i ścieżki sieciowej skonfigurowanych dla programu DaGent. W przypadku transportu zdalnego sprawdź stan programu nasłuchującego i politykę zapory sieciowej na hoście Kopano, a następnie przejrzyj logi programu DaGent i serwera pod kątem odmów połączenia, przekroczenia limitu czasu lub błędów TLS. Nie udostępniaj programu nasłuchującego szeroko do internetu jako skrótu do rozwiązywania problemów; ogranicz dostęp do zaufanych hostów poczty i aplikacji.
Jak można przetestować dostarczanie poczty bez zmiany przepływu poczty produkcyjnej?
Po aktywacji serwera i uzyskaniu zgody na punkt końcowy oraz uprawnienia, należy przeprowadzić kontrolowany test z użyciem wyznaczonej testowej skrzynki pocztowej. Podręcznik administratora Kopano opisuje bezpośrednie wywołanie programu dagent przez użytkownika na tym węźle, a następnie wprowadzenie tematu i treści wiadomości. Podstawowy schemat testowy wygląda następująco:
kopano-dagent -v -c /etc/kopano/dagent.cfg testuser
Subject: Kopano connection test
This is a controlled delivery test.
[Press Ctrl-D to finish input]
Zastąp testuseristniejącym lokalnym użytkownikiem Kopano i postępuj zgodnie ze składnią poleceń zainstalowanej wersji. Ten test pomija niektóre funkcje routingu i kolejki MTA; pomyślne dostarczenie bezpośrednie weryfikuje użyteczną część ścieżki, ale nie dowodzi, że Postfix lub inny MTA prawidłowo kieruje pocztę. Przed ponowną próbą wysłania wiadomości produkcyjnych z kolejki sprawdź dane wyjściowe programu Dagent, logi Kopano i skrzynkę pocztową testową.
Kiedy należy ponownie uruchomić usługę?
Uruchom ponownie tylko komponent, którego konfiguracja uległa zmianie, i dopiero po zapisaniu znanej, poprawnej kopii jego konfiguracji. Jeśli zmieniłeś dagent.cfg, uruchom ponownie jednostkę Dagent, gdy instalacja uruchomi Dagent jako usługę trwałą. Niektóre instalacje uruchamiają Dagent dla pojedynczych dostaw, więc może nie być potrzeby ponownego uruchamiania długo działającej jednostki Dagent. Jeśli zmieniłeś server.cfgustawienia nasłuchiwania serwera, postępuj zgodnie z procedurą zmiany dla serwera Kopano w swojej witrynie. Dokumentacja Dagent opisuje tylko wybrane opcje jako ponownie ładowalne przez HUP; nie zakładaj, że każda zmiana gniazda lub tożsamości środowiska wykonawczego jest realizowana za pośrednictwem sygnału.
Jak potwierdzić poprawność rozwiązania?
Przed zamknięciem incydentu należy sprawdzić wszystkie poniższe elementy:
- Serwer Kopano pozostaje aktywny i nie odnotowuje w swoim dzienniku żadnych nowych błędów związanych z połączeniem.
- Punkt końcowy skonfigurowany w programie dagent pasuje do aktywnego gniazda lub zamierzonego zdalnego odbiornika.
- Użytkownik środowiska wykonawczego Dagent może przechodzić przez katalogi nadrzędne gniazda i uzyskiwać dostęp do punktu końcowego.
- Kontrolowana wiadomość testowa dociera do docelowej skrzynki pocztowej, a jej logi nie wykazują żadnego błędu połączenia z serwerem pamięci masowej.
- Nowa wiadomość przychodząca wysłana przez normalną trasę MTA zostaje zaakceptowana i dostarczona; kolejka MTA nie będzie ponownie zgłaszać tego samego błędu.
Jeśli bezpośrednie dostarczanie poczty działa, ale poczta przez MTA nadal nie działa, sprawdź transport LMTP, ścieżkę gniazda i routing MTA zamiast zmieniać pamięć skrzynki pocztowej Kopano. Jeśli serwer i punkt końcowy wylogowują się, ale program Dagent nadal zgłasza błąd połączenia, zbierz pasujące znaczniki czasu, server_socketwartość zdezynfekowaną, status usługi i odpowiednie logi dla opiekuna pakietu lub administratora Kopano. Usuń hasła, klucze prywatne, treść wiadomości i adresy osobiste przed udostępnieniem diagnostyki.
Odnośniki: Podręcznik administratora Kopano Core ; Odnośnik konfiguracji Kopano dagent ; Przewodnik wysokiej dostępności Kopano ; Specjalne konfiguracje i rozwiązywanie problemów Kopano .