probleemoplossing

Inleiding in
is actief in ontwikkeling sinds 1997. Heel wat bugs zijn over de jaren opgedoken. Veel ervan zijn opgelost. Als u nieuwsgierig bent naar een van deze oude bugs, kijk dan op KMail/FAQs Hints and Tips in de UserBase Wiki van . Of bezoek hoofd bug volgpagina van om meer te weten te komen over bugs met een recentere datum.
Op dit moment (2021) hebben veel problemen die mensen tegenkomen met te maken met de -server. is een extra programma dat als een intermediair tussen (plus alle andere toepassingen) en een database-daemon voor algemene doelen functioneert (gewoonlijk "mysqld"). Het faciliteert communicatie tussen processen onder de verschillende stukjes van de toepassingen. Afhankelijk van de manier waarop uw systeem is geconfigureerd, kan gestart worden tijdens de opstart van het systeem / het aanmeldproces. Of het kan niet gestart worden totdat u een toepassingsprogramma (zoals , of of ) opstart.
Er zijn twee toepassingsprogramma's die u directe interactie met de -server biedt: akonadictl (een terminal georiënteerd besturingsprogramma) en akonadiconsole (een GUI toepassing). Hier enige informatie over deze twee programma's.
 

Het Akonadictl besturingsprogramma
statusrapport
statusrapport
Akonadictl statusrapport, 32 agenten actief
 
De voorgaande schermafdruk illustreert een van de commando's die gebruikt kunnen worden met het programma akonadictl. Hier zijn alle commando's die akonadictl herkent.

~$ akonadictl start

Start de -server.

~$ akonadictl stop

Stopt de -server.

~$ akonadictl restart

Stopt de -server en start deze als nieuw.

~$ akonadictl status

Produceert het statusrapport geïllustreerd in de voorgaande schermafdruk.

~$ akonadictl instances

Geeft een lijst met exemplaren van -server (meer dan één kunnen tegelijk actief zijn).

~$ akonadictl vacuum

Schoont de opslag van op of probeert dat tenminste.

~$ akonadictl fsck

Er wordt een controle op consistentie van het bestand gedaan. De uitvoer van dit commando kan behoorlijk veel zijn, speciaal als u uw eigen mappen aan hebt toegevoegd. Gebruik deze version van het commando (met pipe van de uitvoer door grep) om te verifiëren dat uw database gezond is, zonder veel overbodige uitvoer.

~ $ akonadictl fsck 2
>&1 | grep ^Found
Found 0 external files.
Found 0 external parts.
Found no unreferenced external files.
Found 0 parts to be moved to external files
Found 0 parts to be moved to database
Found 6 collections without RID.
Found 0 items without RID.
Found 0 dirty items.

RID staat voor RemoteId, een veld met een naam in de mysql database tabellen. Als er meer dan 0 items zonder RID zijn, hebt u een klein probleem dat gecorrigeerd zou moeten worden. Als er meer dan 0 dirty items zijn kunt u een groter probleem hebben dat gecorrigeerd moet worden. Zie "Item ophalen lukt niet..." en ook "Dirty" items van corrigeren, zie onderstaand.
 

Het programma Akonadiconsole
Hoe akonadiconsole er uit ziet
Hoe akonadiconsole er uit ziet
Akonadiconsole in actie
 
Het programma akonadiconsole levert twaalf verschillende "vensters" in de interne werking van de toepassingen. Hier is een korte samenvatting van de beschikbare beelden.
Tabblad Agents. 	Hier ziet u een lijst met de gebruikersagenten (processoren).
Tabblad Bladeren. 	Dit tabblad levert een overzicht van de verschillende verzamelingen gegevens die beheert, georganiseerd als een hiërarchische boomstructuur die toont hoeveel items er zich in elke verzameling bevinden.
Tabblad Debugger. 	Hier kunt u debugging aan en uit zetten en de debugberichtenlog bekijken.
Tabblad Logging. 	Dit tabblad laat u berichten uitgezonden door verschillende componenten bekijken.
Tabblad DB-browser. 	Dit tabblad gebruiken om in de mysql database te gluren. Er zijn veel verschillende tabellen.
Tabblad DB console. 	Hier kunt u de mysql database bevragen.
Tabblad Query debugger. 	Dit tabblad gebruiken om query-debugging aan en uit te zetten. bevraagt de mysql database vele keren in enkele seconden; uitvoer kan veel zijn.
Tabblad Takenvolger. 	De toepassingen voeren verschillende functies uit door "taken" te initiëren. Dit tabblad gebruiken om taken volgen aan en uit te zetten.
Tabblad Hulpbronnen plannen. 	Hier kunt u zien welke hulpbronnen nodig zijn wanneer een specifieke functie wordt aangeroepen. U kunt een lijst met alle hulpbronnen van in uw systeem zien in de map ~/.config/akonadi/.
Tabblad Meldingenmonitor. 	Dit tabblad gebruiken om meldingen te monitoren verzonden door verschillende hulpbronnen van .
Tabblad Item zoeken. 	Dit tabblad biedt een generieke zoekfunctie. Zoekopdrachten kunnen beperkt worden tot Agenda, Contactpersonen, E-mail of Notitie.
Tabblad Monitoren. 	Hier kunt u een lijst van alle monitoren die onder actief zijn bekijken evenals hun eigenschappen. Agenten, hulpbronnen en zelfs enige toepassingsprogramma's worden gemonitord.

"Item ophalen uit de backend" wanneer u een IMAP-map ingaat
Er zijn hiervoor minstens twee mogelijke redenen. Hier zijn enige omwegen.
Workaround 1 	
bewerk ~/.local/share/akonadi/mysql.conf
Onder de sectie [mysql] voeg toe: binlog_format=row
Als dat niet werkt, probeer workaround 2 (onderstaand).
Workaround 2 	 Hierbij is het zaak om opnieuw op te starten zodat de vervelende items kan ophalen. Enkele mogelijke stappen zijn:
Gebruik F2 () of om te typen: kquitapp kmail, wacht dan een minuut, dan akonadictl stop. Wacht een minuut, typ akonadictl start, wacht een minuut, typ kmail. Dit stopt (met het sluiten van alle vensters), stopt de backend van , herstart deze en herstart . Met een werkende internetverbinding wordt de kans op succes vergroot. Soms kunt u ook gewoon kquitapp kmail doen, wacht een minuut en start opnieuw. Vaak is er een paar keer opnieuw starten nodig. Het is onduidelijk wat de reden van deze fout is, maar met een slechte netwerkverbinding is het meer waarschijnlijk.
Zie ook het onderstaande onderwerp voor hoe akonadiconsole behulpzaam kan zijn.

Uw e-mails worden niet verzonden, zonder foutmeldingen
Als geen e-mail verzendt zonder iets te melden, dan is de agent verantwoordelijk voor het versturen van de berichten vastgelopen. Natuurlijk moet u nagaan dat u een werkende netwerkverbinding hebt zodat u e-mail kunt verzenden!
Om dit te verhelpen kan het zijn dat de huidige actie afbreken en opnieuw starten helpt. Beëindig als eerste door te gebruiken (F2) of en invoeren van: kquitapp kmail. Merk op dat een normale F4 of Bestand Afsluiten niet helpt! Wacht een minuut, start dan opnieuw. Start dan akonadiconsole met (F2) of . Ga naar de Agent voor het verzenden van e-mail (onder het tabblad Agenten), klik rechts en breek de huidige actie af. U zult waarschijnlijk een soort foutmelding zien verschijnen. Ga nu terug naar en kies Bestand Berichten in wachtrij verzenden. Nu zou het kunnen werken. Zo niet, in plaats van de huidige actie afbreken, probeer de status offline/online van de genoemdAgent voor het verzenden van e-mail (hetzelfde contextmenu) om te schakelen of start de dingen opnieuw zoals eerder genoemd in de workaround 2 van het eerdere probleem.
akonadiconsole kan erg behulpzaam zijn voor een aantal situaties omdat het alle agenten toont, de separate componenten van de backend van . U kunt ze stoppen en starten, ze in een modus offline zetten, gaande acties afbreken . Het kan zeer behulpzaam zijn wanneer vreemd reageert.
Soms werkt de Agent voor het verzenden van e-mail niet goed omdat de dbus-daemon (een faciliteit op systeemniveau voor communicatie tussen processen) niet juist functioneert. Uw beste gok in deze omstandigheid is eenvoudig het systeem opnieuw opstarten. De dbus-daemon is een van de eerste processen die worden gestart wanneer u zich aanmeldt in het bureaublad van , zodat het niet gemakkelijk gestopt en herstart kan worden. De gehele omgeving hangt er vanaf.

"Item ophalen uit de backend ... [LRCONFLICT]"
Dit probleem is direct gerelateerd aan bug #283682, die een nagel aan de doodskist van is sinds oktober, 2011. Er is een probleem met timing / coördinatie tussen asynchroon verwerken van berichtfilters. Af en toe is er een filterregel die berichten naar een andere map verplaatst "hiccups (verslikt zich)" en produceert meer dan één database item voor een bericht dat verplaatst is. Wanneer u de tweede kopie van zo'n bericht opent, verschijnt de foutmelding "Item ophalen uit de backend ... [LRCONFLICT]". Zo'n spookbericht kan niet verwijderd of verplaatst worden naar de prullenbak met ingebouwde functies van . Maar u kunt ze kwijtraken. Hier is hoe u dat doet.
Sluit het programma af. Dis misschien niet nodig, maar beter veilig dan sorry.
U kunt te weten komen hoeveel corrupte berichten er aanwezig zijn door akonadictl te gebruiken.

~ $ akonadictl fsck 2
>&1 | grep ^Found
Found 6 external files.
Found 6 external parts.
Found no unreferenced external files.
Found 0 parts to be moved to external files
Found 0 parts to be moved to database
Found 6 collections without RID.
Found 9 items without RID.
Found 0 dirty items.

In dit exemplaar zijn er negen gedupliceerde berichten (zonder RID).
 
U moet weten hoe direct een verbinding te maken met de mysql-server. Gebruik de commando's ps en grep om dat te doen.

~ $ ps ux | grep mysql
david     8788  0.2  0.9 3736292 153936 ?      Sl   06:45   0:16 /usr/sbin/mysqld 
--defaults-file=/home/david/.local/share/akonadi/mysql.conf
--datadir=/home/david/.local/share/akonadi/db_data/ 
--socket=/run/user/1000/akonadi/mysql.socket 
--pid-file=/run/user/1000/akonadi/mysql.pid
david    24275  0.0  0.0   8056  2144 pts/1    S+   08:24   0:00 grep --colour=auto mysql

 
Gebruik het serverprogramma mysql met de socketinformatie uit stap 3 en geeft drie mysql commando's, zoals onderstaand geïllustreerd.

~ $ mysql --socket=/run/user/1000/akonadi/mysql.socket                  <==
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 114
Server version: 10.5.10-MariaDB Source distribution

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> use akonadi;                                         <==
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
MariaDB [akonadi]> delete from pimitemtable where remoteid is NULL;    <==
Query OK, 9 rows affected (0.003 sec)

MariaDB [akonadi]> \q                                                  <==
Bye

The drie mysql commando's zijn "use akonadi;", "delete from pimitemtable where remoteid is NULL;" en "\q". Nadat u "mysql --socket= ..." ingeeft zult u in een dialoog komen met de mysql-server (aka "MariaDB"), die een prompt > laat zien. De gehele dialoog is hier, voor de helderheid, gepresenteerd. Ingevoerde regels zijn gemarkeerd met <== in de voorgaande illustratie.
Wanneer u herstart zijn deze pesterige gedupliceerde berichten verdwenen. Het waren eigenlijk fantomen veroorzaakt door de NULL pointers in de mysql database tabellen.

Extra opslaggebieden van schoon houden
slaat gegevens op op verschillende plaatsen op uw machine op. De meeste van deze plaatsen zijn ergens in de map ~/.local/share/. Op de meeste Linux distributies zitten uw Lokale mappen in ~/.local/share/local-mail/ . slaat het meeste van zijn gegevens op in ~/.local/share/akonadi/ .

~ $ cd .local/share/akonadi
~/.local/share/akonadi $ ls
Akonadi.error      db_data  file_db_data     mysql.conf  socket-localhost-default
Akonadi.error.old  db_misc  file_lost+found  search_db

Akonadi.error en Akonadi.error.old zijn logbestanden die gemaakt worden wanneer stopt en opnieuw start. Tekstbestand mysql.conf is een configuratiebestand voor de mysqld-daemon die dienst als de backend van . De twee mappen db_data en search_db bevatten de actuele mysql database tabellen. Er zijn ook een aantal mysql logbestanden in db_data die kunnen helpen als en wanneer vreemd doet.
De twee mappen file_db_data en file_lost+found bevatten extra gegevens geassocieerd met asynchrone verwerking. schoont de map file_lost+found niet automatisch op, u zou deze bestanden handmatig zo af en toe kunnen opschonen (⪚, with ). probeert de map file_db_data op te schonen nadat het alles in de hoofddatabasebestanden heeft samengevoegd, maar soms blijft er daar rommel zich opstapelen. Gebruik dit commando

find .local/share/akonadi/file_db_data/ -type f | xargs rm

om dit te repareren wanneer het gebeurt. (Als de map file_db_data al schoon is, zal het commando "find", boven getoond, een fout tonen.)

"Dirty" items in corrigeren
Dit probleem is direct gerelateerd aan bug #436550, die gerapporteerd is in april, 2021. Het komt van de "dirty" items die zo af en toe door akonadictl fsck gevonden worden.

~ $ akonadictl fsck 2
>&1 | grep ^Found
Found 5 external files.
Found 5 external parts.
Found no unreferenced external files.
Found 0 parts to be moved to external files
Found 0 parts to be moved to database
Found 6 collections without RID.
Found 0 items without RID.
Found 750 dirty items.

De vlag "dirty" op een item in pimitemtable (een van de tabellen in de database) wordt gebruikt om bepaalde aspecten van asynchrone verwerking te controleren. Deze is op true is gezet wanneer er bewerkingen staan te wachten voor een bepaald e-mailbericht. Meestal wordt de vlag "dirty" een of twee seconden later gewist, wanneer de eens wachtende bewerking beëindigd wordt.
Af en toe, voor redenen die niet geheel helder zijn, kan de vlag "dirty" gezet worden op tientallen of zelfs honderden berichten alles ineens, zoals boven aangegeven. Wanneer dat gebeurt zal het automatische wismechanisme vastlopen en is is niet in staat om zichzelf automatisch te repareren. De primaire reden voor een "dirty" item in deze omstandigheden is dat het veld "remoteid" niet juist is gezet, waardoor ophalen van een "dirty" bericht onmogelijk is in . Het bericht bestaat nog steeds op de schijf. Maar kan het niet vinden.
Er zout een betere manier moeten zijn om dit probleem te corrigeren. Als u een betere manier weet, laat het dan de auteurs weten, zodat deze documentatie verbeterd kan worden. De volgende procedure zal tenminste de databasefouten corrigeren. Maar het vraagt heel wat werk.
Beëindig en stop de server met een terminalcommando: akonadictl stop .
Maak een reservekopie van al uw e-mailberichten. U zou PIM gegevensexporteur voor dit doel kunnen gebruiken. Of u kunt gebruiken om een archief te maken of om een tweede kopie van ~/.local/share/local-mail/ ergens anders op uw vaste schijf. Als u van avonturen houdt, zou u uw lokale mappen direct naar iets als local-mail-save kunnen hernoemen. Maar het is veiliger om zeker te zijn dat u een reservekopie van uw berichten hebt alvorens u verder gaat.
U zou ook een reservekopie van alle filters die u hebt gemaakt kunnen maken en nagaan dat u weet hoe aangepaste items Map Verzonden e-mail, Map Concepten of Map Sjablonen geassocieerd met uw identiteiten herstelt. De volgende stap zal al uw persoonlijk aangepaste e-mailmappen verwijderen en u zult enige zaken moeten aanpassen nadat zijn databasetabellen opnieuw bouwt.
Verwijder nu alle mappen in de map local-mail of hernoem die map tot iets zoals local-mail-save . Start daarna het programma . Dit dwingt om alle databasetabelitems geassocieerd met e-mailberichten te wissen. U zult uw oude mapnamen zien, kort, maar deze zullen verdwijnen wanneer eindigt met het verwijderen van alle "dirty" items (en alle schone, ook).
Beëindig en stop de server zoals uitgelegd in stap 1, herstel daarna de reservekopie van uw berichten (aangemaakt in stap 2) naar de map ~/.local/share/local-mail/ .
opnieuw opstarten en afdwingen dat zich opnieuw synchroniseert met de database. De gemakkelijkste manier om dat te doen is L Bestand E-mail controleren; synchroniseert automatisch alle mappen wanneer het e-mail ophaalt. Dit kan een aantal minuten duren om te voltooien, afhankelijk van hoeveel berichten u hebt opgeslagen in uw mappen in . Maar wanneer het proces gereed is zullen alle "dirty" items weg zijn.
Tenslotte zult u uw e-mailfilterregels wille herstellen waarvan een reservekopie in stap 3 is gemaakt en controleer dat alle aangepaste mapitems (Map Verzonden e-mail, ) voor uw identiteiten ingesteld zijn op de manier die u wilt. Het is ook nodig om elke aangepaste mapeigenschap die u hebt ingesteld terug te zetten en u zult waarschijnlijk wat moeten doen met een aantal onverwachte "Ongelezen bericht" meldingen. Maar uw databasetabellen zullen weer schoon en glanzend zijn!