Aller au menu - Aller au contenu

[Plan du site] Vous êtes ici --- > Le Site du Zéro > Les news > Web > Un serveur SMTP en Lua : naissance de Tethys > Lecture d'une news

Commentaires de news :
Un serveur SMTP en Lua : naissance de Tethys

Revenir à liste des news

Un serveur SMTP en Lua : naissance de Tethys

# Par Linktim, le 01/05/2008 à 00:00:00
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 Commentaires

Désolé, les commentaires de cette news sont désactivés, vous ne pouvez pas en ajouter !

Page : Précédente  1  2  3 
Pseudo Commentaire
1 visiteur sur cette news (0 membre et 1 anonyme)
Page : Précédente  1  2  3 
Hors ligne Linktim # Posté le 02/05/2008 à 20:08:50
The Other Side
Avatar
Groupe : Membres
C'est un peu moins surprenant un serveur SMTP en C.
 
Hors ligne iPoulet # Posté le 02/05/2008 à 20:38:14
Avatar
Groupe : Interdiction d'écriture
Moi je fais la gueule parce que j'aurai du newser indépendamment d'ejabberd sur yaws et Wings 3D.

Le Blog de l'Homme Moderne
« Eĉ guto malgranda, konstante frapante, traboras la monton granitan »
 
Hors ligne nicknick63 # Posté le 03/05/2008 à 13:05:54
Avatar
Groupe : Membres
@Linktim => Oui c'est bien ce que je dis ^^ .

Image utilisateur
Envie de discuter avec la communauté d'Exalead ? Allez sur le chat ! (xmpp:exalead@chat.jabberfr.org)
Les tableaux, c'est tabou, on en viendra tous a bout ! Image utilisateur
 
Hors ligne Mr.Phi # Posté le 03/05/2008 à 13:27:48
Terreur Urbaine
Avatar
Groupe : Membres
Son utilisation ne concerne pas que la PSP et WoW si on en croit Wikipédia ^^ :
Citation : Wikipédia
Il est particulièrement apprécié pour le développement de jeux vidéos comme pour l'interface du célèbre jeu World of Warcraft de Blizzard Entertainment ou encore Far Cry de Crytek Studios, SimCity 4 et prochainement dans Natural Selection 2 de Unknown Worlds Entertainment qui a entre autre développé Decoda, un IDE pour Lua. Lua a été porté dernièrement sur la console portable de Sony, la PSP. On peut aussi noter qu'une version Playstation 2 est en cours de portage. Ce langage est également utilisé pour la programmation de jeux de Nintendo DS.

Je ne serais pas étonné de le retrouver dans la GP2X (mais je me fais peut être des idées ^^ ).

Bonne news, cependant je me demande ce qu'apporte vraiment le Lua. Il permet un gain de place disque et est apparemment multi-plateforme mais, au niveau technique est ce plus intéressant d'avoir un serveur SMTP en Lua?

edit : J'ai pas bien lu les derniers coms ^^ . Donc c'est juste un truc de Geek fou. Mais ça à le mérite d'avoir été porté à terme.
 
Hors ligne nicknick63 # Posté le 03/05/2008 à 13:53:36
Avatar
Groupe : Membres
Non, ça comporte peut-être un autre avantage, mais j'avoue que je suis dubitatif :-/ .

Et sinon les deux utilisations citées sont quand même les plus connues.

Image utilisateur
Envie de discuter avec la communauté d'Exalead ? Allez sur le chat ! (xmpp:exalead@chat.jabberfr.org)
Les tableaux, c'est tabou, on en viendra tous a bout ! Image utilisateur
 
Hors ligne Natim # Posté le 03/05/2008 à 13:59:50
Apprendre à coder c'est coder
Avatar
Groupe : Membres
L'intérêt de LUA est pourtant simple dans les jeux.
C'est qu'il permet d'être interprété dans une fonction C.
Donc comme cela, dans notre jeu, on intègre le compilateur LUA et hop.

from utbm import partiels
Python IRC sur Epiknet
@ bientôt Natim
Status Jabber : Image utilisateur Image utilisateur
Zenwalk-fr.org
 
En ligne Regnareb # Posté le 03/05/2008 à 15:04:33
Les gens sont cons.
Avatar
Groupe : Membres
Exemple : Natural-Selection 2.

Chaque serveur pourra avoir son propre mode de jeu personnalisé. On pourra avoir des armes totalements différentes, des gameplay completement changés, on pourra tout modifier... chacun aura la possibilité de coder en LUA ingame ;)

Image utilisateur

Idiots finis :
Wizard50
Dark-Ragnos
zulon
MyGB
Pink Squirrel
Zanpa
Nesquik69 ??
Image utilisateur
Quaddxmas (aide)
 
Hors ligne nicknick63 # Posté le 03/05/2008 à 15:58:05
Avatar
Groupe : Membres
Oui, voila, mais là ce n'est pas vraiment un jeu :-° .
D'après ce que j'ai compris il a entièrement été codé en Lua, donc il n'est pas utilisé en tant que langage de script.

Image utilisateur
Envie de discuter avec la communauté d'Exalead ? Allez sur le chat ! (xmpp:exalead@chat.jabberfr.org)
Les tableaux, c'est tabou, on en viendra tous a bout ! Image utilisateur
 
Hors ligne trobert94 # Posté le 03/05/2008 à 17:45:03
Avatar
Groupe : Membres
L'intérêt du Lua est la simplicité de configuration.
Citation : News
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.
Hors ligne Mr.Phi # Posté le 04/05/2008 à 00:00:42
Terreur Urbaine
Avatar
Groupe : Membres
Toi t'as pas tout compris, mais tu nous fais sourire c'est déjà ça ^^ .
La configuration est peut être plus simple mais si les performances sont en deçà de la normal, le projet n'a pas grand intérêt pratique.
 
Hors ligne Natim # Posté le 04/05/2008 à 02:27:18
Apprendre à coder c'est coder
Avatar
Groupe : Membres
Il n'y a pas de performances exceptionnelles nécessaires pour un serveur SMTP.
Et de plus je ne suis pas sur que Lua soit autant lent que tu veux bien le sous entendre.

from utbm import partiels
Python IRC sur Epiknet
@ bientôt Natim
Status Jabber : Image utilisateur Image utilisateur
Zenwalk-fr.org
 
Hors ligne gouttegd # Posté le 04/05/2008 à 03:07:00
Avatar
Groupe : Membres
@ Natim : euh, ça dépend. Si le serveur est amené à traiter des milliers et des milliers de mails par minute (n'oublions notre cher spam quotidien), mieux vaut qu'il soit performant !

Par contre, je ne vois pas en quoi le langage utilisé pour développer le serveur (Lua, donc) a une quelconque influence sur la simplicité de configuration. o_O On peut écrire en C un programme configurable facilement, tout comment on peut écrire en Lua un programme dont la configuration serait un cauchemar...

« Je vous aiderai si vous me promettez d'aider quelqu'un d'autre en retour. » --- Anonyme
« Soyez vigilant lorsque vous vous exprimez dans un forum électronique. Vos fautes de frappes et de syntaxe vous poursuivront pour l'éternité. » --- Linus B. Torvalds

http://fr.hypo-theses.com/
 
Hors ligne Mr.Phi # Posté le 04/05/2008 à 09:17:43
Terreur Urbaine
Avatar
Groupe : Membres
@Natim : je ne sous entend rien, je demande ^^ .
 
Hors ligne nicknick63 # Posté le 04/05/2008 à 13:06:31
Avatar
Groupe : Membres
@gouttegd => Oui, c'est plutôt modulable que configurable.

Image utilisateur
Envie de discuter avec la communauté d'Exalead ? Allez sur le chat ! (xmpp:exalead@chat.jabberfr.org)
Les tableaux, c'est tabou, on en viendra tous a bout ! Image utilisateur
 
Hors ligne trobert94 # Posté le 07/05/2008 à 20:03:43
Avatar
Groupe : Membres
Citation : Monster Devil
Toi t'as pas tout compris, mais tu nous fais sourire c'est déjà ça ^^ .
La configuration est peut être plus simple mais si les performances sont en deçà de la normal, le projet n'a pas grand intérêt pratique.

Bah je dis ce que je lis :euh:
Hors ligne Mr.Phi # Posté le 07/05/2008 à 20:20:39
Terreur Urbaine
Avatar
Groupe : Membres
>_< J'ai pas répondu gentiment, désolé, c'est involontaire (c'est en relisant que je vois ça).
 
Hors ligne DarkGod # Posté le 10/05/2008 à 02:27:32
Groupe : Membres
Coucou, je suis l'auteur de Tethys :)

Déjà ca fait plaisir de voir qu'on parle de mon bébé par ici!

Pourquoi Lua? Car oui je suis un gros geek de Lua :> Mais aussi car c'est un très bon language généraliste(même si il est plus connu pour son utilisation dans les jeux, il possède tout d'un grand, sauf qu'il ets plus beau et très très puissant, tout en sahant rester simple).
Certaines personnes pensent qu'un "language de script" est de facto inférieur, mais c'est totalement faux, Lua tourne sur une VM, tout comme java (il y a meme un JIT pour Lua) qui ne s'en porte pas plus mal. De la a appeller java un language de script ... :)

Quand aux performances Lua est en fait un très bon language, un des plus rapides "languages de script" (http://shootout.alioth.debian.org).

Pour le moment le pire que Tethys à eu a supporter c'est un chinois qui s'amuse a balancer environ 10mails/secondes sur mon service d'emails temporaires MailCatch (fait avec Tethy bien sur). Le système survit a environ 0% d'utilisation proc sur une très vielle kimsufi. Après il me faut des tests plus poussés pour voir :). Le but n'étant pas les perfs brutes mais plustot d'avoir un serveur simple a installer "chez soi"

Amusez vous bien :)
Hors ligne OyoKooN # Posté le 11/05/2008 à 18:33:47
Soy una raya en el mar !
Avatar
Groupe : Membres
C'est super d'avoir l'auteur de la bête en question sur le site ! :)

Je ne vois pas pourquoi tout le monde est affolé par le fait que Tethys soit codé en Lua... Enfin bon, chacun pense comme il veut.

Je suis passé faire un tour sur ton site MailCatch et il est vraiment sympathique ! C'est agréable de pouvoir envoyer des mails anonymement... :D

"Celui qui, dans la vie, est parti de zéro pour n'arriver à rien, n'a de merci à dire à personne." Pierre Dac
 
Hors ligne DarkGod # Posté le 12/05/2008 à 13:47:11
Groupe : Membres
Merci :) Si tu as des questions n'hesites pas
Hors ligne E1K # Posté le 13/05/2008 à 17:09:38
Groupe : Membres
Simple, Simple pas pour l'installation !!!
je suis bloqué sur "luarocks install luasyslog"
Et oui la dernière dépendance, j'ai cette erreur "lpc.c:21: error: ‘LUA_FILEHANDLE’ undeclared (first use in this function)
". Je ne suis pas super caler sous linux mais je commence à m'en sortir ( apache mysql php JOOMLA avec authentification ldap sur domaine active directory, vtiger glpi ocs-ng, etc). Mais là je ne vois vraiment pas. Donc si une âme charitable veut bien m'aider je serais comblé.
PS: je suis très mauvais en orthographe (vive word !!!)
Hors ligne E1K # Posté le 15/05/2008 à 09:17:12
Groupe : Membres
c'est bon j'utilise un serveur mail classique (postfix, courier-imap) bien plus simple.

Désolé, les commentaires de cette news sont désactivés, vous ne pouvez pas en ajouter !

Revenir à liste des news

Changer de design | En savoir plus | Plan du site | Politique d'accessibilité | Règles | RSS tutoriels | RSS news
Édité par Simple IT SARL : Nous contacter | Notre blog | Revue de presse | Publicité

Y'a plus rien à lire, faut remonter maintenant !

Hébergement web - Correction de tutoriels - Créer un site
Vous souhaitez apparaître ici ? Contactez-nous.

Nombre de connectés 303 Zéros connectés | Requêtes SQL 7 requêtes | Temps de génération de la page : Total (SQL) 0.1548s (0.1387s)