PageWikiniArchive

Communication entre W-Agora et un serveur de mails



  • W-Agora ne prend pas en compte la réceptions de mails : c'est à dire qu'il est impossible de mettre un message sur un forum à partir de sa boîte mail personnelle. Il faut alors utiliser un serveur de mails qui pourra recevoir des mails et les "enverra" à w-agora.


Fonctionnement d'un serveur de mails


  • Le serveur DNS

  • Le DNS (Domain Name Service) est un système qui permet de remplacer une adresse Ip par un nom. Par exemple au lieu de faire un ftp sur la machine 193.215.50.62 on fait un ftp sur ftp.ze-linux.com. Les serveurs DNS contiennent tout simplement une base de correspondance entre les adresses IP et les adresses du type www.google.fr et peuvent ainsi faire la conversion lorsque vous tapez www.google.fr vers l'adresse IP correspondante.

  • Les DNS ne servent pas qu’a remplacer une ip par un nom mais aussi il serve à "aiguiller" les mails. En disant tout simplement que pour le domaine ze-linux.com le serveur de mails est mail.ze-linux.com.

  • Pour des raisons de redondance, les serveurs DNS marchent par paire : un primaire et un secondaire. Sur la pluspart des distributions linux le serveur DNS est déjà installé ; le plus courant sous Linux s’appelle BIND.


  • Les Agents de Mails
  • Plusieurs MTA (Mail Transfert Agent) sont disponibles dans le monde opensource. Il y a le traditionnel sendmail, puis sont apparues d'autres agents comme postfix, qmail, courier-smtp. L'installation et la configuration d'un serveur de mails étant très compliquée, il n'est pas conseillé de le changer.


  • Format de boîtes au lettres

  • Les mails sont des documents ASCII qui sont stockés dans des fichiers.

  • Il existe essentiellement deux formats de fichiers pour ce stockage. L'un, le plus classique, appelé format mbox consiste en un gros fichier par utilisateur (par compte) qui contient tous les messages. Lors de la réception d'un nouveau message le MTA va rajouter à la fin du fichier le nouveau message.

  • Le deuxième format connu sous le nom de Maildir stocke un message dans un fichier, et un fichier ne contient qu'un seul message. Les messages d'un utilisateur sont donc stockés sous un dossier, en général sous le nom de Maildir, sous forme de N fichiers.

  • Enfin il y a encore un format très spécifique qui est celui utilisé par Cyrus-Imap. Dans ce format les messages ne sont pas stockés sous forme de fichier, ils sont stockés dans quelque chose qui ressemble plus à une base de données.


  • Accès aux boîtes aux lettres

  • Un fois que les messages sont arrivés à destination, d'une manière ou d'une autre, il faut naturellement que l'utilisateur puisse accéder aux messages.

  • Traditionnellement le MTA classique était sendmail. Les boites aux lettres au format mbox étaient stockées dans un dossier, suivant le système d’exploitation quelque chose comme /var/mail, qui était soit directement visible par l'agent de mail (MUA), soit visible via un montage NFS. Donc globalement il était possible de faire more /var/spool/mail/mon_login pour avoir la liste des mails.

  • Ce moyen posait deux problèmes. Le premier (qui sera abordé tout à l'heure) est la sécurité. Le second est que cela oblige le client à accédez au dossier /var/mail par NFS (sauf dans les petits réseaux où les utilisateurs sont directement sur le serveur). Or des problèmes sont apparus dans l'informatique avec les postes Windows et Macintosh. Ces postes ne pouvaient pas (ou très difficilement) être clients d'un serveur NFS. Il a donc fallut apporter d'autres solutions

  • La solution n'a malheureusement pas été l'éradication de ces postes mais l'apparition du protocole POP(2/3) qui permet aux agents de mails compatibles de relever leurs boites aux lettres via un démon (le démon POP). Ce protocole reste naturellement très utilisé. Il présente l'avantage d'être facile à mettre en oeuvre, facile à utiliser etc....

  • Le protocole POP3 présente un désavantage majeur : il ne permet de rapatrier sur le poste client que les messages de la boite aux lettres situé sur le serveur. Il ne permet pas de manipuler les documents sur le serveur. Sans parler que l'utilisateur ne peut pas (ou difficilement) consulté son courrier depuis deux endroits différents, puisque les messages sont nécessairement stockés sur le poste qui opère la relève

  • Pour résoudre ce problème est apparu le protocole IMAP. Ce protocole, contrairement à POP3, fonctionne en mode connecté, c'est à dire que le client va gérer le courrier sur le serveur via ce protocole. Comme le courrier reste sur un seul endroit l'utilisateur peut le gérer depuis n'importe où. Ce protocole, bien que moins utilisé que POP, tend à se répandre de plus en plus

  • Pour ces deux protocoles, existe une version S qui se nomment POPS et IMAPS. Ils n'apportent aucune fonctionnalité supplémentaire au niveau du courrier, mais ils sont sécurisés, c'est à dire que l'authentification se fait via un chiffrement. La transmission du mot de passe se fait dans un tunnel chiffré de type SSL


Les solutions


  • Pour pouvoir envoyer des mails à partir de sa boîte personnelle vers W-Agora, il faut passer par un serveur de mail. Deux solutions se présentent alors : le serveur de mails exécute un script qui se charge de faire les mises dans la base ou alors il faut écrire un programme qui interrogerait régulièrement le serveur de mail pour savoir s’il y a des messages.


  • Solution 1 : un filtre dans l’agent de mails

  • Il est possible d’écrire un programme qui serait exécuter à chaque fois que l’agent reçoit un message en destination des forums. Cette fonctionnalité est présente chez qmail et postfix mais semble beaucoup plus difficile à mettre en oeuvre avec postfix. En effet, qmail permet d’exécuter un programme à chaque fois qu’un message est reçu : pour cela il ouvre un shell et exécute le programme avec en paramètre une copie du message reçu.
  • Ceci est décrit à l’adresse suivante : http://web.infoave.net/~dsill/lwq.html (partie 4)


  • Solution 2 : interrogation du serveur de mails

  • Pour cette solution, il faut écrire un programme qui se chargerait de regarder s’il y a du courrier en destination des forums. Ce script se déclencherait a intervalle de temps régulier (par exemple toute les minutes). Il suffit ainsi de récupérer les nouveaux messages, de les traiter et de faire les ajouts dans les tables du forum. A ce niveau, il faut distinguer 2 cas :


  • Premier cas : le serveur de mail est hébergé par un organisme
  • Dans ce cas, il faut utiliser le protocole POP3 pour ce connecter au serveur de mail et ainsi vérifier s’il y a des messages à destination des forums. Cette opérations est coûteuse en temps car il y a beaucoup de compte à vérifier. En effet, environ 3 comptes devront être utilisés pour chaque forum : l’abonnement, l’envoi de messages et la désabonnement.


  • Deuxième cas : le serveur de mail est installé en local_
  • Il est plus facile et moins coûteux de récupérer des mails sur un serveur local. Il suffit de vérifier, suivant l’agent de mail installé, que les répertoires sont vides (cas où un compte = un répertoire et un message = un fichier) ou que la taille des fichiers est nulle (cas où un fichier = un compte et tous les messages sont mis à la suite dans le fichier). Cette opération est très rapide car il n’y a pas besoin d’interroger le serveur. De plus, le parcours de l’arborescence des fichiers est très rapide car les descripteurs de fichiers seront déjà chargés en mémoire.
  • Deux petits problèmes se posent dans ce cas :
    • Le stockage des messages de chaque compte dans une base de données, réalisé par certains agents, de mails n’est pas souhaitable, car il ralentirait leur traitement.
    • L’utilisation d’un verrou est nécessaire pour éviter que deux programmes (agent de mails et script de récupération des messages) écrivent en même temps sur les mêmes fichiers.