# Solució de problemes al &kmail;

## Introducció a l'&akonadi;

El &kmail; ha estat sota desenvolupament actiu des de 1997. Al llarg dels anys han sorgit un munt d'errors. Molts d'aquests s'han resolt. Si teniu curiositat per algun d'aquests errors antics, consulteu KMail/Preguntes més freqüents (PMF) consells i trucs en el wiki de &kde; UserBase. O visiteu la pàgina principal de seguiment d'errors del &kde; per a aprendre sobre els errors d'una collita més recent.

En l'actualitat (2021), molts dels problemes que s'estan experimentant amb el &kmail; involucren el servidor &akonadi;. L'&akonadi; és un programa auxiliar que funciona com a intermediari entre el &kmail; (més totes les altres aplicacions &PIM;) i un dimoni de propòsit general per a la base de dades (el més habitual és «mysqld»). També facilita les comunicacions entre processos entre les diverses peces de les aplicacions &PIM;. Depenent de la manera com configureu el sistema, l'&akonadi; es pot iniciar durant el procés d'inici/inici de la sessió. O podria no iniciar-se fins que invoqueu un programa d'aplicació &PIM; (com el &kmail;, &kaddressbook; o &kontact;).

Hi ha dos programes d'aplicació que permeten que un interactuï directament amb el servidor &akonadi;: `akonadictl` (un programa de control orientat al terminal) i `akonadiconsole` (una aplicació amb &IGU;). Aquí hi ha una mica d'informació sobre aquests dos programes.

### El programa de control «akonadictl»

Informe de l'estat de l'&akonadi; Informe de l'estat de l'&akonadi;

Informe de l'estat d'akonadictl, hi ha 32 agents en execució

La captura de pantalla anterior il·lustra una de les ordres que podeu emprar amb el programa `akonadictl`. Aquí hi ha totes les opcions que reconeix `akonadictl`.

    ~$ akonadictl start

Inicia el servidor &akonadi;.

    ~$ akonadictl stop

Atura el servidor &akonadi;.

    ~$ akonadictl restart

Atura el servidor &akonadi; i després el llança de nou.

    ~$ akonadictl status

Produeix l'informe d'estat il·lustrat en la captura de pantalla anterior.

    ~$ akonadictl instances

Llista les instàncies del servidor &akonadi; (se'n pot executar més d'un al mateix temps).

    ~$ akonadictl vacuum

Neteja l'emmagatzematge d'&akonadi;, o almenys intenta fer-ho.

    ~$ akonadictl fsck

Realitza una comprovació de coherència dels fitxers. La sortida d'aquesta ordre pot ser força voluminosa, especialment si heu afegit les vostres pròpies carpetes al &kmail;. Utilitza aquesta versió de l'ordre (fent una canonada de la sortida a través de grep) per a verificar que la vostra base de dades d'&akonadi; està saludable, sense produir una gran quantitat de sortida estranya.

    ~ $ 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 vol dir «RemoteId», un camp amb nom en les taules de la base de dades MySQL. Si hi ha més de 0 elements sense RID, teniu un problema menor que s'ha de corregir. Si hi ha més de 0 elements bruts, podríeu tenir un problema important que s'ha de corregir. Vegeu «No s'ha pogut obtenir l'element «...»» així com Corregir els elements «bruts» del &kmail;, a continuació.

### El programa «akonadiconsole»

El que veu «akonadiconsole» El que veu «akonadiconsole»

Akonadiconsole en acció

El programa `akonadiconsole` proporciona dotze «finestres» diferents amb el funcionament intern de les aplicacions &PIM;. Aquí hi ha un breu resum de les vistes disponibles.

La pestanya Agents.

- Aquí podeu veure una llista dels agents d'usuari (processadors).

La pestanya Navega.

- Aquesta pestanya ofereix un resum de les diverses col·leccions de dades que manté l'&akonadi;, organitzada com un arbre jeràrquic que mostra quants elements resideixen a cada col·lecció.

La pestanya Depurador.

- Aquí podeu activar i desactivar la depuració, així com veure el registre dels missatges de depuració.

La pestanya Registre.

- Aquesta pestanya permet veure els missatges emesos pels diversos components de l'&akonadi;.

La pestanya Navegador de la BD.

- Utilitzeu aquesta pestanya per a donar una ullada dins de la base de dades MySQL. Hi ha moltes taules diferents.

La pestanya Consola de la BD.

- Aquí podreu consultar la base de dades MySQL.

La pestanya Consulta al depurador.

- Utilitzeu aquesta pestanya per a activar i desactivar la depuració de la consulta amb la base de dades. El &kmail; consulta la base de dades MySQL moltes vegades en uns pocs segons -la sortida pot ser voluminosa-.

La pestanya Seguidor de treballs.

- Les aplicacions &PIM; realitzen diverses funcions en iniciar «treballs». Utilitzeu aquesta pestanya per a activar i desactivar el seguiment dels treballs.

La pestanya Programadors dels recursos.

- Aquí veureu quins recursos es necessiten quan s'invoca una funció &PIM; en particular. Veureu una llista de tots els recursos d'&akonadi; en el vostre sistema a la carpeta `~/.config/akonadi/`.

La pestanya Monitor de notificació.

- Utilitzeu aquesta pestanya per a vigilar les notificacions enviades per diversos recursos d'&akonadi;.

La pestanya Cerca d'elements.

- Aquesta pestanya proporciona una funció de cerca genèrica. Les cerques es poden restringir a Calendari, Contacte, Correu electrònic o Nota.

La pestanya Monitors.

- Aquí veureu una llista de tots els monitors que s'executen sota &akonadi;, i també veure les seves propietats. Agents, recursos, fins i tot es vigilen alguns programes d'aplicació.

## «No s'ha pogut obtenir l'element des del dorsal» quan entreu a la carpeta &IMAP;

Hi ha almenys dues raons possibles per a això. Aquí hi ha algunes solucions.

Solució 1

- - Editeu `~/.local/share/akonadi/mysql.conf`

  - Sota la secció [mysql], afegiu: `binlog_format=row`

  Si això no funciona, intenteu la solució 2 (a continuació).

Solució 2

- Això és qüestió de reiniciar de manera que el &kmail; pugui obtenir aquests elements molestos. Alguns passos possibles inclouen:

  Utilitzeu &Alt;F2 (el &krunner;) o el &konsole; per a escriure: ``kquitapp kmail``, després espereu un minut i escriviu ``akonadictl stop``. Espereu un minut i escriviu ``akonadictl start``, espereu un minut i escriviu ``kmail``. Això aturarà el &kmail; (tancant totes les finestres), aturarà el dorsal del &kmail;, tornarà a iniciar el dorsal del &kmail; i el &kmail; en si. Tenir una connexió a Internet augmenta les possibilitats d'èxit. De vegades, també podeu senzillament fer ``kquitapp kmail``, espereu un minut i inicieu el &kmail; de nou. Sovint, semblen ser necessaris uns quants reinicis. No està clar quina és la causa d'això, però en connexions de xarxa dolentes és més probable que passi.

Vegeu també el tema següent per a saber com pot ser-vos d'ajuda akonadiconsole.

## El correu no s'envia, sense missatges d'error

Si el &kmail; no envia el correu sense dir res, l'«agent» responsable d'enviar els missatges pot estar encallat. Per descomptat, cal que primer assegureu que teniu una connectivitat a xarxa adequada per a enviar el correu!

Per a solucionar això, interrompre avortar l'acció actual i reiniciar pot ajudar. Primer, sortiu del &kmail; utilitzant el &krunner; (&Alt;F2) o el &konsole; i escriviu: ``kquitapp kmail``. Cal tenir en compte que el normal &Alt;F4 o Fitxer Surt no farà el truc! Espereu un minut, i després inicieu de nou el &kmail;. Ara inicieu akonadiconsole utilitzant el &krunner; (&Alt;F2) o el &konsole;. Aneu a l'Agent distribuïdor de correu (sota la pestanya Agents), feu-hi clic dret i interrompeu l'acció actual. El més probable és que obteniu alguns missatges d'error. Ara torneu al &kmail; i escolliu Fitxer Envia la cua de missatges. Ara, podria funcionar. Si no és així, en comptes d'interrompre l'acció actual, intenteu alternar l'estat fora de línia/en línia de l'Agent distribuïdor de correu(el mateix menú contextual) o torneu a iniciar les coses com s'esmenta en la solució alternativa 2 en el tema anterior a aquest.

L'akonadiconsole pot ser molt útil per a un nombre de situacions, perquè mostra tots els «agents», els components separats de dorsal del &kmail;. Els podeu aturar i iniciar, posar-los en mode fora de línia, avortar les accions en curs, &etc; Pot ser molt útil quan el &kmail; es comporta de forma horrible o estranya.

De vegades, l'Agent distribuïdor de correu no funciona perquè el dimoni de &DBus; (una instal·lació en l'àmbit del sistema per a les comunicacions entre processos) no funciona correctament. La vostra millor aposta en aquesta circumstància és senzillament reiniciar el sistema. El dimoni de &DBus; és un dels primers processos iniciats quan inicieu una sessió a l'escriptori &kde;, de manera que no es pot aturar i reiniciar amb facilitat. Tot l'entorn &plasma; depèn d'això.

## «No s'ha pogut obtenir l'element des del dorsal «...» [LRCONFLICT]»

Aquest problema està directament relacionat amb l'error núm. 283682 de l'&akonadi;, el qual ha estat una espina al costat del &kmail; des d'octubre de 2011. Hi ha un problema de temps/coordinació amb el processament asíncron dels filtres de missatges. De tant en tant, una regla de filtre mou els missatges a una carpeta diferent «hiccups», i produeix més d'una entrada a la base de dades per a un missatge que s'ha mogut. Quan s'intenta obrir la segona còpia del missatge, s'obté el missatge d'error «No s'ha pogut obtenir l'element des del dorsal «...» [LRCONFLICT]». Aquests missatges fantasma no es poden suprimir o moure a la paperera amb les funcions incorporades del &kmail;. Però podeu desfer-vos-en. Així és com ho fareu.

1. Primer, sortiu del programa &kmail;. Això pot ser innecessari, però millor anar segur que penedir-se.

2. Podeu aprendre quants missatges corruptes hi ha presents mitjançant `akonadictl`.

       ~ $ 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.

   En aquest cas, hi ha nou missatges duplicats (sense RID).

3. Heu de saber com connectar-vos directament amb el servidor MySQL. Utilitzeu les ordres `ps` i `grep` per a fer això.

       ~ $ 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

4. Invoqueu el programa servidor de MySQL utilitzant la informació del sòcol des del pas 3 i emeteu tres ordres de MySQL, com s'il·lustra a continuació.

       ~ $ 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

   Les tres ordres de MySQL són «use akonadi;», «delete from pimitemtable where remoteid is NULL;» i «\q». Després de dir «mysql --socket= ...» estareu en un diàleg amb el servidor MySQL (també conegut com a «MariaDB»), el qual proporciona un missatge. Per a més claredat, aquí es presenta tot el diàleg. En la il·lustració anterior, les línies d'entrada de l'usuari estan marcades amb «<==».

Quan reinicieu el &kmail;, aquests molestos missatges duplicats hauran marxat. Senzillament eren fantasmes causats pels punters nuls en les taules de la base de dades MySQL.

## Mantenir netes les àrees d'emmagatzematge auxiliar del &kmail;

El &kmail; emmagatzema dades en diversos llocs diferents del sistema. La majoria d'aquests llocs estan en algun lloc dins de la carpeta `~/.local/share/`. Per exemple, en la majoria de les distribucions de Linux, les vostres Carpetes locals estan a `~/.local/share/local-mail/`. L'&akonadi; emmagatzema la majoria de les seves dades a `~/.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` i `Akonadi.error.old` són fitxers de registre que es creen cada vegada que s'atura i es reinicia l'&akonadi;. El fitxer de text `mysql.conf` és un fitxer de configuració per al dimoni mysqld que serveix com a dorsal de l'&akonadi;. Les dues carpetes `db_data` i `search_db` contenen les taules de base de dades MySQL reals. A `db_data` també hi ha un parell de fitxers de registre MySQL que poden ser útils quan actuï l'&akonadi;.

Les dues carpetes `file_db_data` i `file_lost+found` contenen dades auxiliars associades amb el processament asíncron. L'&akonadi; no neteja automàticament la carpeta `file_lost+found`, de manera que és possible que vulgueu netejar manualment els fitxers de tant en tant (&pex;, amb el &dolphin;). L'&akonadi; intentarà netejar la carpeta `file_db_data` una vegada s'hagi fusionat tot en els fitxers principals de la base de dades, però de vegades queden piles d'escombraries. Utilitzeu aquesta ordre

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

per a solucionar això quan passi. (Si ja està neta la carpeta `file_db_data`, l'ordre «Cerca» que es mostra a dalt retornarà un error).

## Corregir els elements «bruts» del &kmail;

Aquest problema està directament relacionat amb l'error núm. 436550 de l'&akonadi;, el qual es va informar l'abril de 2021. Resulta dels elements «bruts» trobats a vegades per `akonadictl fsck`.

    ~ $ 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.

L'etiqueta «brut» en un element a «pimitemtable» (una de les taules a la base de dades d'&akonadi;) s'utilitza per a controlar certs aspectes del processament asíncron. S'estableix a cert quan hi ha operacions pendents per a un missatge de correu electrònic en particular. La majoria de les vegades, l'etiqueta «brut» s'esborra un o dos segons més tard, quan finalitza l'operació pendent.

A vegades, per raons que no estan del tot clares, l'etiqueta «brut» es pot establir en dotzenes o fins i tot centenars de missatges d'una vegada, com s'ha il·lustrat anteriorment. Quan succeeix això, s'encalla el mecanisme de neteja automàtica i no es pot reparar automàticament. La raó principal d'un element «brut» en aquesta circumstància és que el camp «remoteid» no és correcte, el que fa impossible la recuperació d'un missatge «brut» en el &kmail;. El missatge encara existeix en el disc. Però el &kmail; no pot trobar-lo.

Hi hauria d'haver una millor manera de corregir aquest problema. Si penseu d'una millor manera, permeteu que els autors ho sàpiguen, de manera que aquesta documentació pugui millorar-se. El procediment següent almenys corregeix els errors a la base de dades. Però implica molta feina.

1. Sortiu del &kmail; i atureu el servidor de l'&akonadi; amb una ordre de terminal: `akonadictl stop`.

2. Feu una còpia de seguretat de tots els vostres missatges de correu electrònic. Possiblement podreu utilitzar l'Exportador de dades PIM per a aquest propòsit. O podeu utilitzar l'&ark; per a crear un arxiu, o el &dolphin; per a crear una segona còpia de `~/.local/share/local-mail/` en un altre lloc del disc dur. Si sou aventurer/a, és possible que senzillament canvieu el nom del directori de carpetes locals a quelcom com `local-mail-save`. Però és més segur tenir una còpia de seguretat dels missatges abans de continuar.

3. També hauríeu de fer una còpia de seguretat dels filtres que heu creat i assegurar-vos que coneixeu com restaurar qualsevol entrada de carpeta de correu Enviat, Esborranys o Plantilles personalitzada associada amb les vostres identitats en el &kmail;. El pas següent eliminarà totes les carpetes de correu personalitzades i haureu d'apedaçar algunes coses després que l'&akonadi; reconstrueixi les taules de la base de dades.

4. Ara suprimiu totes les carpetes dins de la carpeta `local-mail` o canvieu-ne el nom a quelcom com `local-mail-save`. Després inicieu el programa &kmail;. Això obligarà a l'&akonadi; a netejar totes les entrades de la taula de la base de dades associades amb els missatges de correu electrònic. Veureu breument els seus noms de carpeta antics, però aquests desapareixeran quan l'&akonadi; acabi de suprimir tots els elements «bruts» (així com tots els nets).

5. Sortiu del &kmail; i atureu el servidor &akonadi; com s'explica en el pas 1, després restaureu la còpia de seguretat dels vostres missatges (creada en el pas 2) a la carpeta `~/.local/share/local-mail/`.

6. Inicieu el &kmail; una altra vegada i forceu a l'&akonadi; perquè torni a sincronitzar la base de dades. La forma més fàcil de fer això és amb l'element de menú o drecera &Ctrl;L Fitxer Comprova el correu. l'&akonadi; tornarà a sincronitzar automàticament totes les carpetes quan recuperi el correu. Això trigarà diversos minuts a completar-se, depenent de quants missatges hàgiu desat en les carpetes del &kmail;. Però quan es completi el procés, tots els elements «bruts» hauran marxat.

7. Finalment, voldreu restaurar les regles de filtre de correu en el pas 3 i comproveu que estiguin configurats tots els elements de carpeta personalitzada (carpeta de correu Enviats, &etc;) per a les vostres identitats. També haureu de restablir les propietats de la carpeta personalitzada que hàgiu configurat, i probablement obtindreu un munt de notificacions de «Missatge sense llegir» que haureu d'atendre. Però les taules en la base de dades d'&akonadi; estaran netes i brillants una altra vegada!