5. DNS e o E-Mail

Uma das vantagens do Domain Name System sobre as tabelas de hosts é que ele suporta roteamento avançado de mensagens. Quando os mailers só tinham o HOSTS.TXT, o melhor que eles podiam fazer era tentar entregar a mensagem para um endereço IP de um host. Se não conseguissem, poderiam deixar a tarefa de lado e tentar de novo mais tarde, ou devolver a mensagem para quem a tinha enviado.

DNS oferece um mecanismo através do qual podemos especificar um host de backup para as mensagens a serem enviadas. Este mecanismo também permite que hosts assumam responsabilidades sobre outros hosts. Com isto, hosts que não possuem discos rígidos, por exemplo, podem ter mail endereçados a ele pelos seus servidores. Além disso, esta feature dá aos administradores da rede muito mais flexibilidade ao configurar os e-mail de sua rede.

MX Records

O DNS usa um único tipo de resource record para implementar roteamento de mensagens, o record MX. Originalmente, esta funcionalidade era dividida entre dois records, o MD (mail destination) e o MF (mail forwarder).

Recentes experiências com o DNS e a Internet mostraram que separar esta funcionalidade não era bom.O mailer precisava dos records MD e MF para transmitir uma mensagem. Mas o DNS só armazenava em cache um tipo ou o outro, fazendo com que o overhead causado por o envio de mensagens se tornasse maior que o causado ao executarmos outras tarefas, o que é inaceitável.

Então, os dois records foram fundidos em um único, o MX. Agora o mailer só precisa possuir os MX records de um certo domínio para transmitir a mensagem.

Record MX especificam um mail exchanger para um domain name. Processar o mail significa entregar a mensagem ou entregá-lo a outro mail transport.

Para evitar loops, os records MX possuem um parâmetro extra : o preference value. É um número de 16 bits (entre 0 e 65535), sem sinal, que indica a prioridade do mail exchanger. Por exemplo, o record MX peets.mpk.ca.us IN MX 10 relay.hp.com especifica que peets.mpk.ca.us tem preference value 10.

Agrupados, os preference values dos host's mail exchanger determinam a ordem na qual o mailer deve utilizá-los. O valor exato deste campo não é importante, mas sim se ele é maior ou menor que os outros preference values. A não ser que hajam outros records envolvidos, termos:

plange.puntacana.dr IN MX 1 listo.puntacana.dr
plange.puntacana.dr IN MX 2 hep.puntacana.dr

é exatamente o mesmo que termos :

plange.puntacana.dr IN MX 50 listo.puntacana.dr
plange.puntacana.dr IN MX 100 hep.puntacana.dr

Mailers devem tentar entregar os mails usando primeiramente os preference values mais baixos. Se não for possível vamos descendo na ordem de prioridade (aumentando oa preference values) até que a mensagem seja entregue. Mais de um mail exchanger podem ter o mesmo preference value, o que dá ao mailer a opção de escolher para quem enviar. Mas o mailer deve tentar todos so mail exchangers que possuem aquele preference value antes de descer no nível de prioridade.

Mas o que acontece se um determinado host não tiver um MX record? O mailer não enviará a mensagem àquele host? Algumas versões do sendmail realmente funcionam assim, mas há outras que tentam pelo menos entregar para o endereço do host.