Tartalom
Bevezető
Az ISPConfig frissítése után nem indult újra minden szolgáltatás. Jelen esetben a Dovecot POP3/IMAP levelező kiszolgáló, valamint még a Postfix is dobált warningokat. Ezeket a hibákat ugyan korábban már javítottuk, de az ISPConfig frissítése során ismét felülíródtak a beállításaink. Ebben a hibaelhárítóban egyrészt javítjuk magát a szolgáltatás működésképtelenségét okozó "Address family not supported by protocol" típusú hibákat, valamint elvégezzük a tartós beállításukat is, hogy azok a további ISPConfig frissítések után is megmaradjanak.
A hibajelenség
Az ISPConfig frissítő script a Postfix szolgáltatások konfigurálása során "Address family not supported by protocol" hibát jelzett, amitől a Postfix ugyan warningokkal, de elindult, a Dovecot azonban már nem:
[...] Reconfigure Services? (yes,no,selected) [yes]: Configuring Postfix postalias: warning: inet_protocols: disabling IPv6 name/address support: Address family not supported by protocol postmap: warning: inet_protocols: disabling IPv6 name/address support: Address family not supported by protocol postmap: warning: inet_protocols: disabling IPv6 name/address support: Address family not supported by protocol [...]
[...] Restarting services ... Job for dovecot.service failed because the control process exited with error code. See "systemctl status dovecot.service" and "journalctl -xe" for details. Update finished.
Ilyenkor nem működik a levelezőrendszerünk, így nem tudunk belépni az email fiókjainkba sem, mert a Dovecot POP3/IMAP kiszolgálónk nem fut.
Ha a Monit szolgáltatásfigyelő felületén megnézzük (amennyiben telepítettük a szerverünkre), itt is látjuk a problémát: Nem működik a Dovecot, és ennek következtében a postfix sem tud megfelelően működni, mivel a levéltovábbító szolgáltatás függ a levelezőkiszolgáló működésétől is. Ilyen esetekben a Monit leállítja a hibásan működő szolgáltatás monitorozását, így a probléma innen nézve is egyből észrevehető:
Ha pedig a systemctl paranccsal ránézünk a dovecot szolgáltatásra, akkor láthatjuk a konkrét hibaüzenetet is:
sudo systemctl status dovecot
● dovecot.service - Dovecot IMAP/POP3 email server
Loaded: loaded (/lib/systemd/system/dovecot.service; enabled; vendor preset: enabled)
Active: failed (Result: exit-code) since Fri 2023-02-24 21:07:07 CET; 18min ago
Docs: man:dovecot(1)
http://wiki2.dovecot.org/
Process: 4016353 ExecStart=/usr/sbin/dovecot -F (code=exited, status=89)
Main PID: 4016353 (code=exited, status=89)
CPU: 110ms
Feb 24 21:07:07 vps dovecot[4016353]: master: Error: service(imap-login): listen([::], 143) failed: Address family not supported by protocol
Feb 24 21:07:07 vps dovecot[4016353]: Error: socket() failed: Address family not supported by protocol
Feb 24 21:07:07 vps dovecot[4016353]: Error: service(imap-login): listen([::], 993) failed: Address family not supported by protocol
Feb 24 21:07:07 vps dovecot[4016353]: Fatal: Failed to start listeners
Feb 24 21:07:07 vps dovecot[4016353]: master: Error: socket() failed: Address family not supported by protocol
Feb 24 21:07:07 vps dovecot[4016353]: master: Error: service(imap-login): listen([::], 993) failed: Address family not supported by protocol
Feb 24 21:07:07 vps dovecot[4016353]: master: Fatal: Failed to start listeners
Feb 24 21:07:07 vps systemd[1]: dovecot.service: Main process exited, code=exited, status=89/n/a
Feb 24 21:07:07 vps systemd[1]: dovecot.service: Failed with result 'exit-code'.
Feb 24 21:07:07 vps systemd[1]: Failed to start Dovecot IMAP/POP3 email server.
A hiba oka
A hiba abból adódik, hogy a rendszerünkben le van tiltva az IPv6 hálózat kezelése, amiből eredően különböző programok és szolgáltatások hibásan, vagy sehogy sem működnek, mert a beállításaik alapján az IPv4 és az IPv6 hálózaton is várnák a bejövő kapcsolódásokat. Egyesek csak dobnak egy "Address family not supported by protocol" típusú hibát vagy figyelmeztetést, amitől még futnak tovább, más programok, szolgáltatások viszont el sem indulnak. Az első táborba tartozik például a Postfix, ami csak kiírja ezt a hibát, majd letiltja a saját IPv6 használatát és végül elindul, míg a másik táborba pedig a Dovecot tartozik, ami ilyenkor el sem indul. Ezeket a programokat ilyenkor be kell konfigurálni, hogy egyáltalán ne használják az IPv6 hálózatot.
A megoldás
Az "Address family not supported by protocol" típusú hibák javításához a konfigurációs fájlok környékén kell szétnéznünk.
Dovecot konfigurálása
Elsőként javítsuk a Dovecot konfigurációt, mivel ez a szolgáltatás egyáltalán nem indul el, ezért ez a fontosabb. Nézzünk bele a konfigurációs fájljába, hogy ott mi a helyzet:
nano /etc/dovecot/dovecot.conf
Ennek a legelején láthatunk is három sort:
# Do not change this file, as changes will be overwritten by any ISPConfig update. # Put your custom settings in /usr/local/ispconfig/server/conf-custom/install/dovecot_custom.conf.master. # To start using those changes, do a force upgrade and let it reconfigure your services. (ispconfig_update.sh --force)
Itt az első sorban azt írja, hogy ne módosítsunk bele ebbe a fájlba, mert az ISPConfig a következő frissítésekor ez a fájl felül lesz írva.
Azonban vannak olyan részek, aminek az egyedi beállítását az ISPConfig nem teszi lehetővé a saját webes felületén, erre viszont más módon biztosít megoldást, ahol lehetőséget nyújt a saját beállításaink megadására. Itt most éppen egy ilyennel találkozunk, ezzel folytatja is a kis kommentezett szöveg 2. sorában:
A második sorban írja le, hogy ha vannak egyedi beállításaink, akkor azokat hol tudjuk érvényre juttatni. Valamint az utolsó sorban pedig tájékoztat, hogy ezeknek az érvénybe léptetését az ISPConfig újbóli frissítésével végezhetjük el a --force kapcsoló megadásával.
A működési elv tehát a következő: Bele kell tenni az egyedi beállításainkat a fent említett fájlba, majd a frissítéskor a "hivatalos" konfig fájlt felülírja a skeletonban eltárolt változattal, és összefésüli a mi egyedi beállításainkat tartalmazó fájllal. Ezek alapján tehát elég csak a módosítani kívánt beállításokat beletenni ebbe a fájlba, ami jelen esetben egy sor, amivel éppen kezdődik is a konfigurációs rész:
listen = *,[::]
Ez a beállítás szabályozza, hogy a Dovecot az IPv4-es hálózaton is (*), és az IPv6-os hálózaton is ([::]) várja a kapcsolódásokat. Azonban mivel a rendszerünkben le van tiltva az IPv6 hálózat, ezért a Dovecot nem indul el, mivel ahogy fentebb is már említettem, ez a program azok közé tartozik amely nem indul el, ha a beállításainak megfelelően valami nem felel meg a szerverkörnyezetben.
Ezt a beállítást kell tehát módosítani az alábbira ahhoz, hogy a hálózati konfigurációnknak (letiltott IPv6) megfelelően a Dovecot csak az IPv4 hálózatot használja:
listen = *
Akik úgy érkeztek ide (például keresőkből), hogy nem rendelkeznek ISPConfig kezelőpanellel, tehát nem ez módosította ezt a fájlt, hanem más rendszerű szerverkörnyezetet használnak, csak éppen most tiltották le az IPv6 hálózatukat, és amiatt jött elő ez a hiba, azok nyugodtan végezzék el a módosítást ebben a fájlban (ilyenkor természetesen a fent mutatott három soros ISPConfig leírásnak sem szabad ottlennie). Illetve ha más kezelőpanelt használnak ami hasonló módon felülírja ezt a fájlt, akkor azok kövessék a saját rendszerükben leírt instrukciókat, hogy hol kell ezt a módosítást elvégezni.
Mivel ebben a leírásban az ISPConfig-os szerverkörnyezettel foglalkozunk, ezért értelemszerűen én itt ennek megfelelően haladok tovább.
ISPConfig-os szerverkörnyezetben tehát - a tartós beállítás érdekében - az egyedi beállításunk elvégzéséhez hozzuk létre a megfelelő fájlt:
nano /usr/local/ispconfig/server/conf-custom/install/dovecot_custom.conf.master
És tegyük bele az alábbi sort:
listen = *
De ínyencek akár egy parancsból is elvégezhetik:
echo "listen = *" > /usr/local/ispconfig/server/conf-custom/install/dovecot_custom.conf.master
Ha már van ilyen fájlunk, amiben vannak már egyedi beállítások, akkor hozzáfűzéssel írjunk a fájlba, hogy a többi beállítás ne vesszen el:
echo "listen = *" >> /usr/local/ispconfig/server/conf-custom/install/dovecot_custom.conf.master
(Például ha előttünk más felügyelte a rendszert, és így nem tudunk ennek a fájlnak a létezéséről)
Postfix konfigurálása
Ahogy fentebb már említettem, a Postfix ugyan elmegy ezzel a beállítással is, de egyrészt ha már nekiálltunk, akkor legyünk precízek, és itt is végezzük el a beállítást, valamint ha nem végezzük el, akkor pedig a /var/log/mail.log fájlunk fog teleszemetelődni a "disabling IPv6 name/address support: Address family not supported by protocol" hibaüzenetekkel.
Hogy csak a legutóbbiakat lássuk nálam:
Mint említettem, a levélküldés ettől még működik, mivel ezek egészen pontosan "csak" warning-ok, viszont ha bármi hibát fel kell derítenünk, akkor roppant zavaró, ha a naplófájljaink tele vannak olyan felesleges hibaüzenetekkel, amiket könnyedén elkerülhetünk.
A Postfix konfigurációját a /etc/postfix/main.cf fájlban találjuk:
nano /etc/postfix/main.cf
És itt keressük meg az alábbi sort:
inet_protocols = all
És ezt kellene az alábbira módosítani:
inet_protocols = ipv4
Azonban itt is van egy kis csavar a dologban, mert ha ezt átírjuk, akkor a következő ISPConfig frissítés Postfix hiba nélkül lefut, azonban a frissítő script ezt is felülírja. Így tehát az utána következő frissítés során már megint warningokat fog kiírni. Itt viszont nincs a konfiguráció elején semmilyen komment, amiben le lenne írva, hogy milyen néven fogja keresni az ISPConfig a Postfix egyedi konfigurációit a frissítés során. Ezt az információt az ISPConfig telepítőcsomagjából tudhatjuk meg.
Ezt a részt most itt nem kell végrehajtani, csak mutatom, hogyan nézhetjük meg, hogy milyen fájlnévre van szükségünk ahhoz, hogy az ISPConfig beolvassa belőle az egyedi beállításainkat, ha esetleg más szolgáltatásokhoz szükségünk lenne egyedi beállításokra:
cd /tmp
A legfrissebb ISPConfig letöltőlinket az ISPConfig oldalán szerezhetjük be:
Ezen leírás készítésekor a 3.2.9-es változat a legfrissebb, tehát (a /tmp könyvtárban maradva) ezt töltöm le és csomagolom ki:
wget https://ispconfig.org/downloads/ISPConfig-3.2.9.tar.gz
tar -xzf ISPConfig-3.2.9.tar.gz
cd ispconfig3_install/
Miután beléptem a telepítő csomag főkönyvtárába, azon belül van még egy install/ könytár és azon belül egy tpl/ könyvtár. Ebbe belépek:
cd install/tpl
Ebben a könyvtárban van sok konfigurációs fájl, minden szolgáltatáshoz, amikbe ha belenézünk, akkor mindegyikben le van írva, hogy mire való Itt nekünk most a postfix konfig fájl kell. Ehhez listázok egyet, rászűrve a postfix-re:
ls -al | grep postfix
És itt kiad több postfix fájlt is:
Meg is van, innen tehát nekünk a "postfix_custom.conf.master" fájlra van szükségünk. Nézzünk is bele:
Itt már meg is van a keresett kis kommentünk is, amiben leírja, hogy mit kell tenni ezzel a fájllal:
# You can use this file for custom Postfix settings. The used settings will overrule the settings set by ISPConfig. # Use with caution! # Put this file in /usr/local/ispconfig/server/conf-custom/install/ and make your changes there.
Innentől tehát már a napnál is világosabb hogy mi a teendőnk, innentől folytassuk a műveletet, amennyiben a fenti "nyomozást" kihagytuk:
Másoljuk át ezt a fájlt a "helyére":
cp postfix_custom.conf.master /usr/local/ispconfig/server/conf-custom/install/
Majd nyissuk meg a fájlt szerkesztésre:
nano /usr/local/ispconfig/server/conf-custom/install/postfix_custom.conf.master
És tegyük bele az alábbi sort:
inet_protocols = ipv4
Majd mentsük le.
ISPConfig frissítése
Nem maradt más hátra, mint hogy frissítsük az ISPConfig panelünket a --force kapcsolóval:
ispconfig_update.sh --force
A frissítéskor láthatjuk, hogy beolvasta a két egyedi konfigurációs fájlt:
/usr/local/ispconfig/server/conf-custom/install/dovecot_custom.conf.master /usr/local/ispconfig/server/conf-custom/install/postfix_custom.conf.master
Ezután az első frissítésnél még megjelennek a Postfix hibaüzenetek:
Ami talán egy telepítő hiba lehet, de ettől függetlenül már nem keletkeznek újabb hibaüzenetek a mail.log naplófájlban, tehát az egyedi beállítás működik.
Valamint ha ismét lefuttatjuk a frissítést, akkor már a hiba sem jelenik meg:
Valami hiba lehet a telepítőben, de a lényeg, hogy működik már az első frissítés után is, csak így néz ki jól ha már a hibát se írja ki.
Természetesen előfordulhat, hogy másnál már egyből hibátlan kimenetet ad, ezt csak azért tettem ide be, hogy ha máshol is így viselkedik a frissítő script, nem kell megijedni, mert az egyedi beállításunk működik.
Ellenőrzés
Végül, ha van Monit szolgáltatásfigyelő rendszerünk, akkor még ennek adjuk ki a parancsot, hogy monitorozzon minden szolgáltatást, mivel korábban a két hibás szolgáltatás monitorozása leállt:
monit monitor all
Ezután frissítsünk a Monit felületére:
Ekkor láthatjuk, hogy inicializálódik a két szolgáltatás figyelése
Majd később amikor lejár egy Monit ciklus, vagy nyomunk egy F5-öt a böngészőben, akkor már minden rendben:
Ezután még ellenőrizzük a levelek küldését és fogadását, valamint a biztonság kedvéért benézhetünk a /var/log/mail.log fájlba is, hogy látunk-e még benne "Address family not supported by protocol" hibaüzeneteket.
Konklúzió
Ezzel tehát tartósan elhárítottuk a Dovecot "Address family not supported by protocol" hibáit, mert az ISPConfig frissítése után már a saját beállításainkat tartalmazó egyedi fájlok kerültek felhasználásra. Azonban ne feledkezzünk meg róla, hogy ha a későbbiek során bármilyen további beállítást kell módosítanunk a Dovecot vagy a Postfix konfigurációiban, akkor azokat szintén ezekben az egyedi fájlokban tegyük meg!
- A hozzászóláshoz regisztráció és bejelentkezés szükséges
- 142 megtekintés