Domaines virtuels de messagerie Introduction Grâce à la puissance des ordinateurs personnels d'aujourd'hui, le travail effectué par plusieurs serveurs peut maintenant être facile­ ment réalisé par un seul ordinateur. Avec le succès d'Internet et du système de messagerie, nous sommes poussés à gérer de plus en plus de domaines de messagerie. Voici un moyen de gérer différents domaines de messagerie indépendants sur la même machine: Une première Linux ! 11.. PPrriinncciippeess Les domaines virtuels de messagerie permettent de gérer des listes indépendantes d'utilisateurs sur le même serveur. Chaque domaine virtuel a son propre fichier de mots de passes, son propre répertoire de spool et son propre fichier d'alias utilisateurs. Pour chaque domaine virtuel de messagerie, _L_i_n_u_x_c_o_n_f va configurer : · /etc/vmail/passwd.domaine_virtuel · /etc/vmail/shadow.domaine_virtuel · /etc/vmail/aliases.domaine_virtuel · /var/spool/vmail/domaine_virtuel/ · /vhome/domaine_virtuel/ où domaine_virtuel est un domaine, comme toto.fr. 22.. DDiiaalloogguuee ddee ddééffiinniittiioonn dd''uunn ddoommaaiinnee vviirrttuueell Pour créer un nouveau domaine virtuel de messagerie, il vous suffit de remplir un seul dialogue. Il y a d'autres choses à faire pour le DNS et l'alias IP, qui sont décrites dans une autre section de cette aide. Nous décrirons ici le dialogue principal. 22..11.. UUnn nnoomm Vous devez donner un nom de domaine. C'est la seule chose obligatoire. 22..22.. DDeessttiinnaattiioonn ddee sseeccoouurrss C'est un champ optionnel. Normalement, quand un message électronique est envoyé vers un compte d'un domaine virtuel de messagerie, le traitement suivant est effectué : · Recherche d'un alias de ce nom. S'il en existe un, envoi du message à chaque membre de la liste d'alias. Les alias peuvent pointer vers d'autres alias. · Si aucun alias n'est trouvé, la liste des utilisateurs du domaine virtuel est alors parcourue. Le message est ajouté au classeur de l'utilisateur correspondant. · Si aucun alias ni aucun utilisateur ne correspond, le message est renvoyé et l'expéditeur recevra un message d'erreur. Si le champ de destination de secours est défini, le message sera envoyé à cette adresse. La destination de secours peut être : VViiddee C'est la valeur par défaut. Le message est renvoyé. aauuttrree__uuttiilliissaatteeuurr@@aauuttrree__ddoommaaiinnee Le message est envoyé à un utilisateur spécifique d'un autre domaine. @@aauuttrree__ddoommaaiinnee Le message est envoyé au même compte de destination, mais dans un autre domaine. Par exemple, un message envoyé à inconnu@ce_domaine sera envoyé à inconnu@autre_domaine. ccoommppttee Le message est envoyé à un autre compte du même domaine. Ce compte peut être un alias. 22..33.. FFiicchhiieerrss dd''aalliiaass Chaque domaine virtuel a implicitement un fichier d'alias nommé /etc/vmail/aliases.domaine, où domaine est le nom du domaine. Vous pouvez en définir jusqu'à deux supplémentaires. Ils seront utilisés par le programme vdeliver. Le fichier implicite a la plus haute priorité. vdeliver recherche alors dans le premier puis dans le second jusqu'à ce qu'une correspondance soit trouvée. Notez que, comme les alias normaux (/etc/aliases) traités par Sendmail, les définitions d'alias peuvent pointer vers un autre alias, etc... Des listes de messagerie peuvent être définies, etc... Les fichiers d'alias sont maintenus à partir du même dialogue que les alias normaux de Sendmail et offrent ainsi les mêmes capacités. 22..44.. AAlliiaass ppoouurr ccee ddoommaaiinnee Il est possible de fournir plusieurs noms de domaines pointant sur le même fichier de spool utilisateur. Vous pouvez en ajouter autant que nécessaire. Par exemple, on pourra définir le domaine virtuel toto.ca et plus tard déclarer toto.com. En utilisant les alias de domaine, les deux domaines seront équivalents. 33.. UUnnee nnoottee aavvaanntt ddee ccoommmmeenncceerr Les domaines virtuels de messagerie sont un supplément aux possibilités normales de votre serveur de messagerie. Les domaines de messagerie normaux sont toujours gérés de la même manière et les messages sont stockés dans /var/spool/mail. De ce fait, si votre machine accepte pour l'instant les messages destinés au domaine toto.fr, et si vous désirez recevoir séparément les messages pour toto1.fr et toto2.fr, vous devez juste définir ces deux domaines comme des domaines virtuels de messagerie. La configuration pour toto.fr n'en sera pas affectée. 44.. CCoommmmeenntt ccoonnffiigguurreerr lleess ddoommaaiinneess vviirrttuueellss ddee mmeessssaaggeerriiee Voici une explication pas à pas : 44..11.. CCoommmmeenntt aaddaapptteerr lleess cclliieennttss PPOOPP Il n'y a rien de particulier à faire du côté de l'utilisateur POP, ce qui est une bonne chose : nous voulons joindre plusieurs serveurs de messagerie en un seul, mais nous ne voulons pas le dire à tout le monde :-) 44..22.. CCoommmmeenntt iinnssttaalllleerr llee sseerrvveeuurr Le truc pour le courrier est exactement le même que pour les serveurs WWW virtuels : vous avez besoin d'adresses IP. Mais plus particulièrement ici de les configurer. Supposons que nous voulons créer trois domaines virtuels de messagerie : va.toto.fr, vb.toto.fr et vc.toto.fr. Imaginez que vous vouliez installer 3 serveurs indépendants, chacun s'occupant d'un domaine unique. Nous allons décrire comment faire ceci et à la fin, vous verrez comment ces 3 serveurs peuvent être réunis sur une seule machine. 44..22..11.. SSuurr llee DDNNSS D'un point de vue du DNS, nous avons un serveur de messagerie par domaine. Ainsi, le MX pour chaque domaine est : · va.toto.fr -> mailhost.va.toto.fr · vb.toto.fr -> mailhost.vb.toto.fr · vc.toto.fr -> mailhost.vc.toto.fr Avec le DNS, c'est ce que nous disons au monde. C'est aussi ce que nous disons aus utilisateurs. Ou plus exactement : `Utilisateurs de va.toto.fr, prenez vos messages à mailhost.va.toto.fr, utilisateurs de vb.toto.fr, prenez-les à mailhost.vb.toto.fr, etc'. Ainsi, avec une telle configuration, vous pourriez très bien avoir un serveur (réel) par domaine de messagerie (la chose étant courante avant les domaines virtuels de messagerie). 44..22..22.. IInnssttaalllleerr lleess sseerrvveeuurrss Pour continuer la configuration (qu'elle soit réelle ou virtuelle), nous allons sur le DNS et allouons un numéro IP pour chaque serveur (c'est la clé). J'utilise ici des numéros IP privés comme exemple. On pourra voir que j'ai alloué ces numéros IP d'un même réseau. · mailhost.va.toto.fr -> 172.16.0.1 · mailhost.vb.toto.fr -> 172.16.0.2 · mailhost.vc.toto.fr -> 172.16.0.3 Ainsi nous pouvons aller installer 3 serveurs Linux avec ces IP et dire à _S_e_n_d_m_a_i_l sur chacun d'eux d'accepter un de ces 3 domaines. 44..22..33.. PPaasssseerr aauu vviirrttuueell Plutôt que d'installer 3 serveurs Linux, nous en installons un seul. Pour chaque domaine virtuel de messagerie, nous devons : · le définir avec _L_i_n_u_x_c_o_n_f, ce qui nécessite seulement de nommer le domaine, · définir un alias IP (toujours avec _L_i_n_u_x_c_o_n_f) ainsi la machine répondra aussi aux demandes pour cet IP. Cela se fait dans _L_i_n_u_x_c_o_n_f dans le menu "Réseau/alias IP pour les machines virtuelles" · installer /usr/lib/linuxconf/lib/vpop3d en remplacement à /usr/sbin/in.pop3d dans /etc/inetd.conf. vpop3d remplace le pop3d standard, même si vous n'utilisez pas de domaine virtuel. L'alias IP est une clef. Le protocole POP n'a pas les moyens de vérifier la destination d'une requête, sauf avec le numéro IP de destination. Voilà pourquoi les clients POP doivent utiliser un nom différent (un IP différent en fait) pour lire des messages depuis différents domaines de messagerie. De leur point de vue, c'est requis de toute façon. 44..22..33..11.. CCoommmmeenntt iinnssttaalllleerr vvppoopp33dd vpop3d remplace-t-il le démon POP standard que vous utilisez dans votre distribution ? Peut-être pas. Diverses distributions contiennent des pop3d différents, supportant NIS, PAM et autres moyens d'authentification. Le meilleur moyen de supporter tout ceci facilement est de laisser le démon pop3d natif contrôler le domaine de messagerie _p_r_i_n_c_i_p_a_l ; vpop3d contrôlant seulement les domaines virtuels. Pour obtenir ce résultat, passez simplement en argument à vpop3d le chemin du démon POP3 natif. vpop3d lui passera le contrôle lorsqu'une requête POP s'adressera au domaine principal. Voici un exemple pour /etc/inetd.conf : pop-3 stream tcp nowait root /usr/sbin/tcpd /usr/lib/linuxconf/lib/vpop3d /usr/sbin/ipop3d Ainsi pour l'installer, ne remplacez pas la commande pop3d, mais insérez simplement /usr/lib/linuxconf/lib/vpop3d. La ligne exacte varie un peu d'une distribution à une autre. 55.. CCoommmmeenntt ddéébboogguueerr uunnee ccoonnffiigguurraattiioonn La plupart des erreurs faites en configurant des domaines virtuels sont relatives au DNS. Voici quelques tests que vous pouvez effectuer pour vérifier que votre configuration est correcte. Un conseil : Utiliser un client POP (programme de messagerie) n'est pas efficace pour tester ce genre de configuration. Ces programmes ne sont pas instructifs du tout dans un tel cas. Soit ils marchent, soit ils ne marchent pas. 55..11.. VVéérriiffiieerr llee DDNNSS Pour chaque domaine virtuel, vous devez avoir fait quelque travail sur le DNS. Nous utiliserons le domaine va.toto.fr comme exemple. En voici les étapes : 55..11..11.. LLee MMXX La commande nslookup -q=mx va.toto.fr devrait afficher quelque chose d'utile. Le nom au moins du serveur de messagerie devrait être obtenu avec son adresse IP. C'est soit mailhost.va.toto.fr, soit le nom officiel du serveur. Le nom obtenu n'est pas nécessairement dans le domaine va.toto.fr. Il doit cependant pointer vers le bon serveur physique. 55..11..22.. LLee sseerrvveeuurr vviirrttuueell ddee mmeessssaaggeerriiee mailhost.va.toto.fr doit être défini dans le DNS. J'utilise ici _m_a_i_l_h_o_s_t, mais ça peut être pop.va.toto.fr, ou autre chose. La commande suivante nslookup mailhost.va.toto.fr devrait produire un numéro IP. De plus, la commande suivante nslookup le_numero_IP_obtenu devrait afficher mailhost.va.toto.fr. Si ce n'est pas le cas, c'est que le serveur POP virtuel ne marche pas du tout. Réellement. Fin de la partie. Vous avez besoin d'avoir une recherche inverse correcte sur ce numéro IP. _L_i_n_u_x_c_o_n_f le fait de façon magique si le domaine spécial de recherche inverse est défini dans le même DNS que le domaine virtuel. Si les deux réponses (de nslookup) sont correctes, vous avez fait le plus dur. 55..11..33.. YY aa--tt--iill uunn sseerrvveeuurr eenn ééccoouuttee Tapez alors la commande suivante : telnet mailhost.va.toto.fr Elle devrait vous connecter au serveur physique. Cela prouve que l'alias IP est correctement installé. 55..11..44.. YY aa--tt--iill uunn sseerrvveeuurr PPOOPP vviirrttuueell eenn ééccoouuttee Tapez la commande suivante pour voir si vpop3d est correctement installé. Si la commande produit le message correct, tout devrait aller. telnet mailhost.va.toto.fr pop-3 Vous devriez obtenir +OK Virtual va.toto.fr POP3 Server (Version 1.004) ready. va.toto.fr est ici la clef. Si vous n'obtenez pas ceci, alors le domaine virtuel n'est tout simplement pas défini, ou vpop3d n'est pas installé dans /etc/inetd.conf. 55..11..55.. UUnn oouuttiill ppoouurr ffaaiirree uunnee vvéérriiffiiccaattiioonn rraappiiddee Le script /usr/lib/linuxconf/lib/checkvdomain peut être utilisé pour faire une vérification rapide de l'installation de vpop3d pour un domaine virtuel. Exécutez-le sans argument pour en apprendre plus. Le script /usr/lib/linuxconf/lib/testalldomain lit le fichier /etc/named.boot et extrait tous les domaines qu'il définit. Il exécute alors le script checkvdomain (en supposant qu'il existe une machine virtuelle de mes­ sagerie pour chaque domaine virtuel) sur chaque domaine. Il signale si le domaine est correctement configuré ou non. Utile pour l'administra­ tion de tonnes de domaines virtuels. 66.. UUnnee ffooiiss ooppéérraattiioonnnneell 66..11.. CCoommmmeenntt aajjoouutteerr ddeess uuttiilliissaatteeuurrss PPOOPP Une fois qu'un domaine virtuel de messagerie fonctionne, il vous reste encore à lui ajouter des utilisateurs POP. Un sous-menu Comptes POP virtuels (uniq. pour le mail) se trouve dans le menu Comptes utilisateurs Il vous permet de choisir un domaine virtuel et d'y ajouter ou éditer de nouveaux comptes. 66..22.. CCoo--aaddmmiinniissttrraatteeuurr Pour chaque domaine virtuel de messagerie, un nouveau privilège est ajouté à _l_i_n_u_x_c_o_n_f. Vous pouvez accorder ce privilège à n'importe quel utilisateur normal. Il sera autorisé à gérer la liste des utilisateurs (utilisateurs POP uniquement) du domaine virtuel. C'est entièrement opérationnel en utilisant l'interface _H_T_M_L également. 66..33.. CCoommmmeenntt uunn uuttiilliissaatteeuurr ppeeuutt--iill cchhaannggeerr ssoonn mmoott ddee ppaassssee Un problème, avec les utilisateurs POP seulement (et aussi les utilisateurs PPP), est qu'ils n'ont accès à aucun compte shell d'où ils peuvent facilement changer leur propre mot de passe. _L_i_n_u_x_c_o_n_f fournit une solution élégante à ce problème. Elle est uniquement disponible avec l'interface _H_T_M_L et supporte entièrement les domaines virtuels de messagerie. Si vous indiquez à votre navigateur l'_U_R_L suivante : http://votre_serveur:98/htmlmod:userpass: vous accéderez à un écran simple permettant à quiconque de changer son propre mot de passe. votre_serveur peut être l'un des serveurs POP virtuels ou le nom normal de votre serveur. _L_i_n_u_x_c_o_n_f utilisera le fichier de mots de passe adéquat, selon le numéro IP utilisé pour l'atteindre. C'est une bonne chose que de _c_a_c_h_e_r cette _U_R_L dans l'une des pages d'information de votre serveur (elle est assez étrange à taper). 77.. QQuueellqquueess pprroobbllèèmmeess 77..11.. TToouuss lleess mmeessssaaggeess ppaarrttaanntt dd''uunn ddoommaaiinnee vviirrttuueell ssoonntt mmaassqquuééss Ceci est causé par une mauvaise configuration du DNS. En général, un message partant du serveur et originaire d'un domaine virtuel et réécrit pour qu'il semble provenir du domaine principal du serveur. Ce problème provient d'un nouveau comportement de _s_e_n_d_m_a_i_l. Au démarrage, _s_e_n_d_m_a_i_l parcours toutes les interfaces réseaux (et alias IP) et récupère le nom associé à leur numéro IP. Il considère alors que tous ces noms sont équivalents au domaine principal du serveur. Un message provenant de l'un de ces noms sera masqué comme provenant du domaine principal. Le problème du DNS est simplement que vous avez mis la correspondance inverse d'un numéro IP de telle façon qu'il pointe sur un nom de domaine plutôt qu'une machine de ce domaine. _L_i_n_u_x_c_o_n_f ne vous laissera pas faire cette erreur, car il ne laisse jamais une correspondance inverse pointer sur un nom de domaine. Faire un DNS à la main ne vous prévient cependant pas de cela. Soyez alors sûrs que tous les numéros IP associés à des alias IP pointent sur une machine d'un domaine, et non sur un domaine lui-même. Redémarrez votre DNS et votre _s_e_n_d_m_a_i_l et tout ira bien. 88.. CCoonncclluussiioonn Après avoir mis les alias IP corrects, un utilisateur POP ne peut dire s'il y a 3 serveurs ou un seul. Ceci peut devenir un argument clef. Si la lecture sur le serveur grossit, vous pourrez distribuer quelques domaines virtuels de messagerie à un autre serveur. Pour tous (les utilisateurs, le DNS), ce sera complètement transparent.