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 : 1  2  3  Suivante
Pseudo Commentaire
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
Oua oO ^^ !!
Avatar
Groupe : Membres
Vraiment, félicitation ;) Très bonne news j'adore !
Oups j'ai oublier : et enfin quelques chose de simple ^^
 
Hors ligne anonymous # Posté le 30/04/2008 20:37:29
???
Avatar
Groupe : Membres
Je n'avais jamais entendu parler du Lua ;) .
 
Hors ligne bootoc # Posté le 30/04/2008 20:39:43
Avatar
Groupe : Membres
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
Groupe : Membres
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 ! =)

"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
Groupe : Membres
Intéressant ^^ !
Merci pour la news !

Age: 15ans
Profession: Collégien à ses heures perdu.
Passions: Guiatre, Parapente, Programmation
Langages: C/C++, xHTML, PHP, etc...
OS: Ubuntu 8.04 / Windows XP Coccinelle
 
Hors ligne Artefact2 # Posté le 30/04/2008 20:43:07
Freak man
Avatar
Groupe : Membres
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
Groupe : Membres
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
Restez au pieux !
Avatar
Groupe : Membres
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...

Image utilisateur

Je suis Image utilisateur sur Jabber | LaTortueFacile.fr | oui, delroth, saiLEmal

Image utilisateur
 
Hors ligne Linktim # Posté le 30/04/2008 20:50:14
The Other Side
Avatar
Newsers
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
Groupe : Membres
Au premier coup d'oeil j'ai cru à un nouveau serveur pour le sdz :-°

News très instructive pour Lua et le protocole SMTP.
 
Hors ligne seb2020 # Posté le 30/04/2008 20:53:05
Suisse -> Valais
Avatar
Groupe : Membres
Intéressant comme news

In every Hero, there could be a Villain
 
Hors ligne Csame # Posté le 30/04/2008 21:04:35
Abyssus abyssum invocat
Avatar
Groupe : Membres
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
Groupe : Membres
Ce n'est pas le langage utilisé pour les AddOn de World of Warcraft ?
Judgehype.lua par exemple :)

DELL XPS... que du bonheur.
L'outil ultime pour raider : un 22".
 
Hors ligne nicknick63 # Posté le 30/04/2008 21:07:55
Avatar
Groupe : Membres
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.

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 Linktim # Posté le 30/04/2008 21:10:08
The Other Side
Avatar
Newsers
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
Restez au pieux !
Avatar
Groupe : Membres
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.

Image utilisateur

Je suis Image utilisateur sur Jabber | LaTortueFacile.fr | oui, delroth, saiLEmal

Image utilisateur
 
Hors ligne P!csou # Posté le 30/04/2008 21:16:18
Avatar
Groupe : Membres
Bien :p
 
Hors ligne alt3rnat1x # Posté le 30/04/2008 22:12:13
Avatar
Groupe : Membres
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
Groupe : Membres
Super news, merci!!
 
Hors ligne bakuryu11 # Posté le 30/04/2008 22:36:37
http://ganaria.free.fr
Avatar
Groupe : Membres
Bonne news :)

Image utilisateur

 
Hors ligne Ver des Roches2 # Posté le 30/04/2008 22:55:15
Avatar
Groupe : Membres
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
Qu'est ce que le parfait ?
Avatar
Groupe : Membres
News très intéressante ...

Merci d'avoir partager l'info.

C'est par la critique que l'on progresse.
 
Hors ligne Amine27 # Posté le 30/04/2008 23:05:22
sudo apt-get autoremove
Avatar
Groupe : Membres
Merci pour la news
Hors ligne BenXbox # Posté le 01/05/2008 00:03:23
Avatar
Groupe : Membres
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
J'adooore les oranges :p
Avatar
Groupe : Membres
Bonne news mais je rejoins Benxbox sur ce qu'il dit.
 
Hors ligne spleeneria # Posté le 01/05/2008 03:08:16
Avatar
Groupe : Membres
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.

Developpeur, Codeur, Alcoolique, Graphiste (on ne peut pas tout avoir)

Spleen Battle, un jeu de strategie en temps réel.

Recherche graphistes pour bonifier mon jeu.
 
Hors ligne ybouane # Posté le 01/05/2008 03:27:14
<vive le SDZ!!!>
Avatar
Groupe : Membres
Très bonne news merci
 
Hors ligne Psycause # Posté le 01/05/2008 03:54:19
Avatar
Groupe : Membres
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.espaceinstru.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
Groupe : Membres
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
The Other Side
Avatar
Newsers
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. ;)
 

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 | Fil RSS | XHTML 1.0 | CSS 2.0
Édité par Simple IT SARL : Nous contacter | 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 70 Zéros connectés | Requêtes SQL 6 requêtes | Temps de génération de la page : Total (SQL) 0.0187s (0.0067s)