Mon blog

python et datalove <3

Création d'un serveur SMTP en Python avec Vim

J'ai décidé d'améliorer mes connaissances au sujet de Vim, l'éditeur de texte en mode terminal. En effet, j'utilise Gedit sur mon PC perso (qui tourne sous Debian) et Géany sur mon PC pro (qui tourne sous W10). Pourtant, j'utilise vim à chaque fois que j'accède à un de mes serveurs et je m'en débrouille juste ce qu'il faut pour ne pas trop souffrir.

Bien entendu, il me fallait un projet un poil sérieux et sur le long terme afin de m'habituer à n'utiliser que cet éditeur. Cela me permettra, sur le long terme, de n'avoir qu'à monter en compétences sur ce puissant éditeur pour en profiter un peu partout.

Le projet sera donc un serveur SMTP. J'ai toujours aimé tout ce qui touche aux protocoles et au réseau, et le sujet est à la fois simple (le S de SMTP) et complexe (il n'y a qu'à voir les difficultés rencontrées à chaque fois qu'on souhaite utiliser du mail. Enfin, j'en profiterai peut-être pour remplacer mon postfix qui, je trouve, est lourd à configurer même si c'est un outil ultra puissant et fiable.

Bien entendu, tout ce qui tournera autour du projet sera fait avec Vim. Qu'il s'agisse de ces articles de blog, du code source, de la documentation écrite ou lue au sujet du protocole SMTP et tout ce qui l'entoure.

Pourquoi Vim ?

J'ia envie de répondre "Et pourquoi pas ?", mais d'aucun⋅e⋅s diront que la réponse est trop facile et je les comprends. En réalité, j'utilise Vim depuis des années à travers mes connexions ssh. Mais je n'ai jamais sauté le pas sur mon PC perso. Il faut dire que je venais d'un environnement purement graphique (enfin, revenait pour être plus précis car je suis de ceux qui ont utilisé des environnements non graphiques car ceux-ci n'existaient pas encore pour les simples mortels). Pour autant, le terminal m'a toujours plu par sa simplicité et sa puissance.

D'un autre côté, j'ai bien entendu parlé de GNU Emacs, mais je crois bien ne l'avoir jamais essayé... Bref, j'ai donc sauté le pas en faisant un choix pas forcément hyper analysé, mais ça m'allait bien pour tout ce que je fais déjà.

Pourquoi un serveur SMTP ?

Pour plusieurs raisons en fait. Déjà, j'autohéberge mes propres mails depuis des années, et l'installation "simple" de postfix n'a jamais été "simple" justement. J'ai galéré un peu à l'époque, je dois le maintenir (mises à jour de sécurité régulières, mais c'est tout) et je n'ai pas forcément beaucoup de temps à y consacrer. De plus, postfix est un outil fiable et puissant mais qui nécessite une vraie compétence tellement sa configuration peut être faite aux petits oignons.

Mon but serait donc de remplacer ce bon vieux postfix par un outil plus simple de manipulation et de compréhension, mais également beaucoup moins puissant. En effet, je n'ai nul besoin d'envoyer des myriades de mails chaque minute, ni d'en recevoir non plus et si le bousin est lent ou autre je ne lui en tiendrai pas rigueur. Par contre, je souhaite pouvoir gérer mes utilisateurs dans une base de données de manière native, gérer des alias pour chacun d'entre eux, pouvoir également gérer différents domaines.

Une autre raison c'est tout simplement l'acquisition de connaissances et compétences ainsi que l'amusement à tout cela.

Et puis il faut bien que je m'améliore avec ce fichu Vim !

Organisation

En terme d'organisation, je vais donc utiliser mon blog statique (à plus d'un titre quand on voit le nombre d'articles émis par ... an) pour y déposer mes pensées, mes essais, mes déboires, mes réussites aussi j'espère.

Le langage utilisé sera le Python, c'est vraiment le langage que j'apprécie le plus et comme je code sur d'autres projets, ça me permettra également de configurer Vim pour ce langage.

Je suis également heureux (si, si) papa et j'ai un travail qui me prend beaucoup de temps, surtout en période de confinement. J'aime également prendre l'air et m'arrêter pour réfléchir. Enfin, vu le nombre d'articles récents déposés ici, il ne faut pas s'attendre à un déluge de nouvelles façon réseau social moderne ;o).

Comme tout sera fait avec Vim (enfin le plus possible), je vais d'abord devoir le configurer comme il faut et commencer enfin à lui ajouter des plugins et tout ce genre de choses. Je déposerai les infos dans un dépôt afin de pouvoir aisément les retrouver et vous les partager, si tant est que ça puisse intéresser quelqu'un.

Premiers déboires

Alors, forcément, j'ai tapé tout un article ce matin et j'ai quitté Vim avec un bon vieux :q!. Pour les non initiés, cela signifie quitter Vim sans qu'il ait le droit de rouspéter. Et j'ai donc perdu la totalité de mon premier article, déjà !

J'ai donc parcouru un peu la toile et ait trouvé les excellents articles suivants :

Le premier m'a permis de configurer un peu la partie configuration... (Oui, c'est le serpent qui se mord la queue). Et le second m'a permis de comprendre comment on installe des plugins et également que le monde des plugins n'est pas si rose, car certains m'ont hurlé au visage leur problème de compatibilité avec ma version de Vim.

Enfin, j'ai surtout ajouté le plugin vim-auto-save qui me sauvera la vie dans les semaines à venir car désormais il sauve tout seul le fichier à chaque fois que je sors du mode édition et que j'ai modifié un truc !

J'ai donc un Vim un peu plus utilisable pour entamer ce projet et ça me va bien.

À venir

Le prochain article parlera tout simplement de comment j'ai configuré Vim pour mettre à jour mon blog automatiquement.