Aller au menu - Aller au contenu

Un serveur SMTP en Lua : naissance de Tethys

Revenir à la liste des news
Participer à la discussion

Informations

Contributeur(s) : Linktim
Publié : le 01/05/2008 à 00:00:00
Catégorie : Web
Visualisations : 1

Un serveur SMTP en Lua : naissance de Tethys

Image utilisateur
D'un côté un serveur SMTP et de l'autre un langage peu connu : le Lua. Beaucoup vous diront que l'association des deux est impossible et pourtant quelqu'un l'a fait, il a créé un serveur SMTP en Lua. Mais pourquoi une telle décision ? Tout simplement car l'auteur voulait faire un serveur qui soit facile d'utilisation, facile à configurer sans pour autant manquer d'options en tout genre. Philosophie très lointaine de Sendmail (qui n'est pas réellement un serveur SMTP mais qui en inclut un), qui est très critiqué pour sa complexité et sa prise de tête pour le configurer. Il a donc fallu un an de développement et pas mal de tests pour sortir la première version stable.

Un langage peu connu : Lua



Créé en 1991 par des chercheurs brésiliens, Lua a su se faire une place dans l'industrie du système embarqué et plus récemment du jeu vidéo pour plusieurs raisons :
  • Il est écrit en C ANSI, ce qui lui permet une portabilité énorme.
  • Il est conçu pour être utilisé par d'autres programmes ou langages (voir cet article sur son utilisation avec le C++).
  • Son interprêteur est relativement léger (95 à 185 Ko selon le système).
  • Sa syntaxe est relativement facile :
    Code : Lua
    1
    2
    3
    4
    5
    6
    if a = b then ...
    end
    -- pour les commentaires
    while a = b do 
    ...
    end
    
Vous avez surement dû croiser ce langage si vous jouez à WoW puisqu'il est utilisé pour l'interface. Sinon, il est aussi utilisé pour faire des IA.

Naissance de Tethys


Image utilisateur

Le SMTP est un protocole assez vieux (utilisation massive vers les années 80 mais toujours d'actualité !) qui permet de transférer un email vers une messagerie électronique. Un serveur SMTP est donc le programme qui permet ce transfert. Pour en savoir plus sur SMTP je vous incite à lire l'article Wikipédia ou encore ce cours sur le protocole ou même le big-tuto sur la messagerie électronique.

Comme je l'ai dit dans l'introduction, le serveur le plus utilisé au monde est surement Sendmail mais il n'est pas le seul, il existe aussi Postfix ou encore Qmail (qui n'a aucun lien avec Qt) pour ne citer que les plus connus. Malheureusement, aucun n'est réellement facile à configurer ni même à utiliser ce qui a beaucoup choqué l'auteur de Tethys. Il a donc créé un serveur SMTP adhérant à la même philosophie que le langage avec lequel il est écrit : puissance et simplicité.

Concernant la licence, Tethys est disponible en GPL version 3, vous pouvez donc étudier les sources, les améliorer, les redistribuer aisément comme indiqué dans les termes de cette licence libre.

L'installation est plutôt facile, il faut télécharger un tarball de 38ko, le décompresser et lancer l'installation via l'outil "make".
Ensuite, il faut définir les utilisateurs virtuels et commencer à configurer. Dans Tethys, pas mal de choses sont gérées par le SGBDR MySQL, il suffit donc juste d'effectuer une requête SQL INSERT INTO ... pour ajouter un nouvel utilisateur et définir l'hôte par exemple.

Vient ensuite la configuration : tout se passe dans les fichiers d'extension .lua dans lesquels il faut juste modifier les valeurs des variables. Tout d'abord il faut définir les identifiants SQL puis l'hôte ainsi que le port (qui est 25 par défaut). Ensuite, on peut choisir d'exécuter Tethys en tant que démon (tourne en arrière-plan) ou le lancer manuellement à l'aide d'une console. On peut aussi définir la taille maximale d'un mail lors de l'envoi, le dossier de stockage, etc.
Voici à quoi ressemble le fichier principal de configuration jugé « lisible » par rapport aux autres :

Secret (cliquez pour afficher)
Code : Lua
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
-- This is *NOT* needed if you installed using LuaRocks
tethys = "/usr/local/share/tethys2/"

-- If set to false the processes will run in foreground in the terminal
daemon.daemonize = true
daemon.pid_file = "/var/run/tethys2-%s.pid"

-- Listen on which host/port (use 0.0.0.0 as host to listen on all interfaces)
bind.host = "localhost"
bind.port = 25
-- Which hostname to use for various replies(this should identify the mail server)
bind.reply_host = "net-core.org"

-- Run the server as this user / group, this must be the ids, not the names
-- Uncommend those if you dont want your server to run as root(recommanded)
--bind.uid = 89
--bind.gid = 89

-- Max mail body size acceptable
max_data_size = 1024 * 1024 * 30 -- 30 MB

-- List of DISTANT ips that are allowed to relay mail without auth, if unsure leave it as the default
relay.allow_ip =
{
	["127.0.0.1"] = true,
}

-- Which default deposit plugin to use, and its configuration
-- (note that deposit plugins can be set on a per user base if the users manager plugin allows it)
deposit.plugin = "tethys2.plugins.deposit.DiskSpool"
-- Which spool type(mailbox format) to use for the DiskSpool
deposit.spool_type = "tethys2.util.Maildir"
-- There all the mails will be stored in a tree like: $HOST/$ACCOUNT/.maildir/
deposit.spool_path = "/var/tethys/domains/"
-- Outgoing mails end up there while waiting for the sender process to send them
deposit.relay_maildir = "/var/tethys/relay-maildir/"

-- Sender process keeps trying to send mails every 4 hours, 4 times
sender.retries = 4
sender.retries_time = 4 * 60 * 60

-- Who sends error messages for this server
mail_error.from = "postmaster@net-core.org"



Il existe déjà des plugins pour Tethys, certains sont même supportés nativement. Actuellement, ils sont au nombre de trois :
  • User Manager : un plugin qui facilite la gestion des utilisateurs virtuels.
  • Deposit : un plugin qui assure le bon fonctionnement de la réception des mails.
  • Filter : un plugin qui filtre les mails, mais définit des options internes pour déplacer, supprimer, etc. les mails.
Enfin, il est intéressant de dire que ce serveur SMTP supporte Maildir, une structure composée de dossiers utilisée pour la première fois par Qmail. Le principe est simple : habituellement les clients utilisent le format de stockage mbox, mais le problème de mbox est qu'il stocke tout dans un fichier (pour schématiser) et les mails sont simplement séparés par une ligne, il faut donc mettre le fichier en lecture seule quand on veut ajouter un email, en supprimer un, etc., afin de ne pas corrompre les données. Or avec Maildir on stocke les mails dans plusieurs fichiers. À ce propos, vous pouvez voir ce benchmark effectué entre mbox et Maildir.

Liens relatifs



Merci aux zCorrecteurs vincent1870 et Pas un 0, un -1.

81 Participations

Pour accéder à cette section
Connectez-vous !
connexion_rpx
Page 1  2  3  Suivante
Pseudo Discussion
1 visiteur sur cette news (0 membre et 1 Anonyme)
Page 1  2  3  Suivante
Hors ligne Pio154 # Posté le 30/04/2008 à 20:35:36
distributeur de sourir
Avatar
Groupe : Bannis

Vraiment, félicitation ;) Très bonne news j'adore !
Oups j'ai oublier : et enfin quelques chose de simple ^^

Image utilisateur
 
Hors ligne anonymous # Posté le 30/04/2008 à 20:37:29
Groupe : Aigris
Avatar
Groupe : Bannis

Études : Université Paul Sabatier Toulouse

Je n'avais jamais entendu parler du Lua ;) .
Hors ligne anonyme # Posté le 30/04/2008 à 20:39:43

Merci pour l'info' ! Moi aussi je n'avais jamais entendu parlé de Lua... ;)
Hors ligne OyoKooN # Posté le 30/04/2008 à 20:39:56
Soy una raya en el mar !
Avatar
Flux RSS

Ville : Plouezoc'h
Pays : France métropolitaine
Études : ISEN Brest-Rennes

C'est vraiment sympatique comme création !
Le fichier de config est super simple.

Quand à la syntaxe de Lua, elle ressemble pas mal à celle de Ruby, une très bonne chose ! =)

>> Syrinxoon.net
"Celui qui, dans la vie, est parti de zéro pour n'arriver à rien, n'a de merci à dire à personne." Pierre Dac
 
Hors ligne Nakio # Posté le 30/04/2008 à 20:40:13
C != C++
Avatar

Ville : Crest
Pays : France métropolitaine

Intéressant ^^ !
Merci pour la news !
Hors ligne Artefact2 # Posté le 30/04/2008 à 20:43:07
Avatar

Ville : Reims
Pays : France métropolitaine
Études : Université de Reims

Très sympa comme langage.

La niouze parle d'IA, j'ai toujours rêvé d'étudier le fonctionnement des IA mais malheuresement, c'est pas facile :( Et ca dépend beaucoup du contexte.

Merci bien !

Ps : n'essayez pas chez vous, ça ne fonctionnera pas (port 25 bloqué par les fai, malheuresement pour éviter l'envoi massif de spam).
Hors ligne Csame # Posté le 30/04/2008 à 20:43:16
Abyssus abyssum invocat
Avatar

Ville : Bruxelles
Pays : Belgique

Cette news est intéressante mais il manque complètement une introduction. Être balancé directement dans les détails techniques, c'est vraiment très... brutal. Enfin, ce que j'en dis, moi... :)

Image utilisateur
 
Hors ligne Zopieux # Posté le 30/04/2008 à 20:48:29
Mhg n pryhv dhv zr yvg
Avatar
Groupe : Interdiction d'écriture

Artefact2, et non, si tu es chez un FAI digne de ce nom et qui roxs comme Free par exemple, tu as une option pour désactiver le blocage :p .

Sinon, Csame a un peu raison, beaucoup de termes techniques et peu d'explications, un zéro basique aura du mal à comprendre. Ne nous surestime pas, Linktim...
 
Hors ligne Linktim # Posté le 30/04/2008 à 20:50:14
Ex-Newser
Avatar
Groupe : Anciens

Dites moi ce que vous comprenez pas dans l'intro, je corrigerai. :)
Hors ligne Honor # Posté le 30/04/2008 à 20:51:27
maus
Avatar

Au premier coup d'oeil j'ai cru à un nouveau serveur pour le sdz :-°

News très instructive pour Lua et le protocole SMTP.

;D
 
Hors ligne seb2020 # Posté le 30/04/2008 à 20:53:05
Suisse -> Valais
Avatar

Études : Ecole des Metiers du Valais

Intéressant comme news

Site web de mes photos : http://www.sebastien-photo.ch

Image utilisateur
 
Hors ligne Csame # Posté le 30/04/2008 à 21:04:35
Abyssus abyssum invocat
Avatar

Ville : Bruxelles
Pays : Belgique

Citation : Linktim
Dites moi ce que vous comprenez pas dans l'intro, je corrigerai. :)


Ce n'est pas que je ne comprends pas — quoi que, si, mais bon, c'est une news plutôt technique donc c'est normal ;) — c'est que je trouve qu'une phrase au début du genre : « bonjour chers Zér0s, aujourd'hui nous allons vous parler d'une nouvelle façon d'appréhender le protocole SMTP, cette news sera donc peut-être un peu technique. [expliquer ce qu'est le SMTP], etc. » ne serait pas vraiment du luxe. Parce que là c'est un peu brusque, je trouve. On est sur le Site du Zér0, n'oubliez pas :)

'soirée !

Image utilisateur
 
Hors ligne RiouJ # Posté le 30/04/2008 à 21:07:02
Oh Yeah !
Avatar

Études : SUPINFO Île-de-France à Paris

Ce n'est pas le langage utilisé pour les AddOn de World of Warcraft ?
Judgehype.lua par exemple :)

C'est parti pour SUPINFO Paris (B1C).
 
Hors ligne nicknick63 # Posté le 30/04/2008 à 21:07:55
Avatar
Flux RSS

Ville : Clermont-ferrand
Pays : France métropolitaine

Une news bien sympa, qui est vraiment pour les curieux, parce que je doute que beaucoup de Zér0s créent des serveurs mails :-° .

Et sinon avant qu'on pose la question, je crois bien qu'un tuto sur le Lua est en cours, en tout cas un membre a proposé d'en faire un y'a pas longtemps.
 
Hors ligne Linktim # Posté le 30/04/2008 à 21:10:08
Ex-Newser
Avatar
Groupe : Anciens

Si je n'ai pas développé dès le début c'est pour ne pas faire d'ombre à la partie « Naissance de Tethys » tout simplement. :)
Je ne fais qu'une approche vraiment très vague dans l'introduction mais je dégage les points principaux (Tethys est créé dans un but de simplicité, ...).
Hors ligne Zopieux # Posté le 30/04/2008 à 21:10:14
Mhg n pryhv dhv zr yvg
Avatar
Groupe : Interdiction d'écriture

Citation : RiouJ
Ce n'est pas le langage utilisé pour les AddOn de World of Warcraft ?
Judgehype.lua par exemple :)

Citation : News
Vous avez surement dû croiser ce langage si vous jouez à WoW puisqu'il est utilisé pour l'interface. Sinon, il est aussi utilisé pour faire des IA.
 
Hors ligne P!csou # Posté le 30/04/2008 à 21:16:18
Avatar

Bien :p

Programmation%
C 90%
C++ 50%
Html/Css 98
Php/MySql 75%
JavaScript 20%
 
Hors ligne alt3rnat1x # Posté le 30/04/2008 à 22:12:13
Avatar

Lua est aussi utilisé sur Garry Mod , il est très simple a prendre en main.

Image utilisateur
 
Hors ligne seb13 # Posté le 30/04/2008 à 22:31:09

Super news, merci!!
 
Hors ligne bakuryu11 # Posté le 30/04/2008 à 22:36:37
http://ganaria.free.fr
Avatar

Bonne news :)

Image utilisateur

 
Hors ligne Ver des Roches2 # Posté le 30/04/2008 à 22:55:15
Avatar

Trés bonne news, sur un sujet original, technique mais pas trop... bref, le top :) .

I like airplane, I'm like a bird, I love flying, I'm free ! Consulter mon site Web sur l'aéronautique et l'informatique.

Ver des Roches o_O ... qui ne creuse pas la vase ! ;)
 
Hors ligne Gartek # Posté le 30/04/2008 à 22:57:44
Avatar

News très intéressante ...

Merci d'avoir partager l'info.
Hors ligne Amine27 # Posté le 30/04/2008 à 23:05:22
sudo apt-get autoremove
Avatar
Flux RSS

Merci pour la news
Hors ligne Julie75017 # Posté le 01/05/2008 à 00:03:23
Avatar

L'information est bonne mais la news est mauvaise pour des débutants, en effet tu ne précise même pas que c'est pour linux...
Il faudrait revoir cette news et la rendre plus accessible pour les zéros...
Hors ligne Orangeloulou # Posté le 01/05/2008 à 01:45:52
Orange ? Niam !
Avatar

Bonne news mais je rejoins Benxbox sur ce qu'il dit.

Image utilisateur
Si votre sujet est résolu, pensez à nous le faire savoir grâce au bouton Image utilisateur en bas de la page, merci.
 
Hors ligne spleeneria # Posté le 01/05/2008 à 03:08:16
Avatar

Études : EPITA

Certes, c'est une news assez technique. Mais en même temps ce n'est pas un tuto ! Toute sa technicité n'a pas vraiment à être expliquée.

Sinon, très bonne news.

Webmaster du site : logicria.com, le blog d'actualités informatique n°1 (ou presque)

Dernières news :
 
Hors ligne ybouane # Posté le 01/05/2008 à 03:27:14
<vive le SDZ!!!>
Avatar
Flux RSS

Très bonne news merci

Image utilisateur

Outils services compteurs générateurs des scripts... gratuitement à 100%
Générateur de gifs animés gratuit
Générateur de bannières animées gratuit
Générateur d'userbars
Générateur de menus web 2.0

Description de mon site:
Support du web est un site qui propose des outils, des services, des compteurs de connecté, des compteur de pages vues, des compteurs de clics, des générateurs de bannières animée gratuit, des scripts php,(X)html, css, javascript... gratuitement à 100% pour les webmasters développeurs...
Image utilisateur
 
Hors ligne Psycause # Posté le 01/05/2008 à 03:54:19
Avatar

Tres bonne News....

Peut être préciser que c'est pour Linux...
Mais bon, en lisant la news ont s'en aperçois vite fais...
( Enfin les connaisseurs ;) )

Mon Site : www.espaceinstrus.com ( !! EN COURS DE REALISATION !! )

Un site réservé aux Instrus Rap-HipHop

Réalisé Grâce au SDZ
;)

 
Hors ligne yoch # Posté le 01/05/2008 à 06:24:35
Avatar

Citation : News
Le SMTP est un protocole assez vieux (utilisation massive vers les années 80) qui permet de transférer un email vers une messagerie électronique. Un serveur SMTP est donc le programme qui permet ce transfert.

Je n'aime pas trop cette définition, mais bon...
SMTP est bien "vieux", mais reste toujours d'actualité. C'est le protocole nécessaire pour envoyer un mail.

Citation : News
Pour en savoir plus sur SMTP je vous incite à lire l'article Wikipédia ou encore ce cours sur le protocole.


Ou encore ce tuto sur le Site du Zér0....

pub détectée... :lol:
 
Hors ligne Linktim # Posté le 01/05/2008 à 10:06:54
Ex-Newser
Avatar
Groupe : Anciens

Citation : BenXbox
tu ne précise même pas que c'est pour linux...

Tethys étant très jeune et écrit en Lua, ça ne m'étonnerai pas qu'un portage vers d'autres systèmes soit fait.

yosh > oui, je n'avais aucune intention de dire que SMTP n'était plus d'actualité, bien au contraire. :)

Sinon, comme je l'ai dit plus haut, au lieu de dire « pas adapté aux zér0s », dites moi concrètement ce qui vous pose problème. ;)
Pour accéder à cette section
Connectez-vous !
connexion_rpx

Revenir à la liste des news