Pour router les courriers, un serveur de méls se base sur les champs de type MX du serveur de noms du domaine. Tout cela est définit par la RFC 974.
Par exemple, un message adressé à machine.domaine peut être routé vers mailhost.domaine. Ainsi, la machine mailhost.domaine reçoit tous les méls du domaine domaine, qu'il redistribue ensuite au hôtes concernés. Le seveur de noms doit alors contenir une ligne comme :
machine.domaine IN MX 10 mailhost.domaine
Si on veut que tous les méls adressés à login@domaine soient acceptés, il faut mettre une ligne du type :
domaine IN MX 10 mailhost.domaine
Les champs de type MX peuvent aussi servir pour indiquer des serveur de secours, au cas où la connexion serait temporairement coupée. Ainsi, pour envoyer un courrier à jdeuf@domaine1, si domaine1 ne répond plus, on peut demander d'envoyer le courrier à domaine2 (avec son accord) :
domaine1 IN MX 10 mailhost.domaine domaine2 IN MX 20 mailhost.domaine
Les nombres 10 et 20 indiquent les priorités des sites à essayer : on tente d'abord d'envoyer un courrier à domaine1, puis à domaine2 si domaine1 ne répond pas.
Enfin, il peut être utile de mettre une entrée MX pour chaque machine. En effet, une demande d'envoi de message pour mailhost.domaine cherche d'abord un champ de type MX, puis un champ de type A en cas d'échec pour avoir l'adresse IP de mailhost.domaine. Si le champ de type MX existe, il n'y aura plus qu'une seule requête DNS au lieu de deux :
mailhost.domaine IN MX 0 mailhost.domaine