• # Euh ...

    Posté par . En réponse au message Comment écrire un client mail pour Linux ?. Évalué à 8. Dernière modification le 10 juillet 2019 à 15:54.

    Maintenant, je dois me mettre aux clients IMAP et SMTP, mais je ne suis pas sûr de la meilleure façon de faire : dois-je utiliser un client dans mon code, ou utiliser un service externe ? J'ai vu par exemple qu'il existe un daemon SMTP, mais je ne suis pas sûr qu'il soit fait pour être utilisé par un client mail. Pareil pour un daemon IMAP. Dans tous les cas, je n'ai pas trouvé beaucoup d'informations sur eux.

    Euh ... Je crois qu'avant de voir coder un client mail, il serait bon de mieux maitriser le sujet ;-)
    Je veux pas être méchant hein ... mais si tu te poses la question d'intégrer un "daemon SMTP", c'est qu'il y a quelques lacunes qui risque d'être bloquantes...

    Pour t'aider dans tes recherches, regarde un peu les différences entre MTA (Mail Transport Agent), MDA (Mail Delivery Agent), MUA (Mail User Agent).

    Dans les grandes lignes, le daemon est le service en écoute côté serveur... c'est le service qui va répondre au requête quand ton client va s'y connecter.

    Le protocole SMTP est en charge de traiter les mails entrants. (donc, sur le serveur smtp.TON_FAI.fr, c'est lui qui va recevoir tout les mails avec @TON_FAI.fr).

    Les protocoles POP3 et IMAP servent quant à eux à récupérer tes emails (c'est le protocole que quelqu'un qui a un @TON_FAI.fr pour récupérer ses emails via imap.TON_FAI.fr).

    De façons plus générale, un client mail a, grosso modo, 2 façons de récupérer les emails:

    • Si il tourne sur la machine ou le daemon tourne (cas de plus en plus rare), alors il peut aller directement piocher dans la mbox ou le maildir rempli par le daemon.

    • Si il tourne sur une machine différente du serveur, alors il doit utiliser soit le protocole POP3, soit le protocole IMAP, soit une variante chiffrée de ces deux là.

    De la même façon, un client a 2 façons d'envoyer un mail:

    • Si il tourne sur la machine ou un daemon SMTP tourne, il peut faire un appel à l'executable "sendmail" qui va pousser le mail au daemon (bien souvent via un socket Unix).

    • Sinon, il doit utiliser le service SMTP exposé par le serveur (typiquement, stmp.TON_FAI.fr) ou sa variante chiffrée (SMTP avec TLS ou SMTPS)

    De ce coup, si tu ne veux pas ré-inventer la roue, il faudrait trouver une lib qui implémente la partie "client" des protocoles IMAP, POP3 et SMTP.
    Tu peux toujours implémenter à la main hein ... SMTP et POP3 sont des protocoles très simples.
    IMAP est un poil plus pénible...

    Après faut voir ce qui t'intéresse ...
    Si tu veux mieux maitriser les protocoles de messagerie, alors potasse les RFC des 3 protocoles cités plus haut et implémente les from scratch.
    Si le but est plutôt de gagner en compétence sur la programmation graphique sous Linux, alors trouve toi une lib toute faites.

    De plus s'ils utilisent D-Bus, j'ai peur que ce soit compliqué à utiliser (pas du tout utilisateur-amical).

    Euh un daemon qui utilies D-Bus... es tu bien sûr ?
    Sinon, D-Bus risque d'être le passage obligatoire pour intégrer correctement ton client au gestionnaire de desktop: les notifications sont généralement véhiculées via D-Bus.

    Comment feriez-vous ? Que me conseillez-vous ?

    Comme dit plus haut, du but que tu poursuis en t'étant lancé dans ce projet.

    Ce que je te conseille ? De mieux te documenter sur le MTA, MDA, MUA, POP3, SMTP, IMAP.