# Mail Transfer Agent

Un Mail Transfer Agent (terme anglais, signifiant « agent de transfert de courrier » en français), également Message Transfer Agent (« agent de transfert de message »), est un logiciel pour serveur de transmission de courriers électroniques. Faute de traduction faisant référence, l'abréviation MTA (prononcée par l'énumération des lettres M, T, A : /ɛm.te.a/, en France, Belgique et Suisse – en français –, /ɛm.tiː.eɪ̯/, au Canada – en anglais) est utilisée par les informaticiens francophones pour désigner ce type d'application.

## Fonctionnement

Un MTA reçoit, habituellement par le protocole SMTP, les emails envoyés soit par des clients de messagerie électronique (MUA), soit par d'autres MTA. Son rôle est de redistribuer ces courriers à des Mail Delivery Agent et/ou d'autres MTA.

### Réception d'un message

Un message reçu par un MTA peut provenir de deux types de logiciel :
* un MUA : les fournisseurs d'accès à internet proposent généralement un service de MTA, qui permet aux utilisateurs de configurer leur MUA de façon qu'il envoie tous les mails écrits à ce MTA.
* un autre MTA : la plupart des MTA servent à distribuer dans un réseau les messages relayés par d'autres MTA.

### Rejet d'un message (NDR)

Un MTA peut rejeter (envoi d'une Notification De Rejet, NDR) un message pour une de ces raisons :
* serveur non concerné : les MTA sont en général configurés pour n'accepter que des messages expédiés par des personnes appartenant à un certain réseau (par exemple celui des clients pour un fournisseur d'accès à internet) et/ou que des messages destinés à certaines adresses (par exemple le MTA de Wikipédia n'accepte que les messages destinés à des adresses en @wikipedia.org)
* non-respect des normes : si un message ne correspond pas aux normes applicables aux courriers électroniques, ou que le protocole SMTP n'est pas strictement respecté par le logiciel expéditeur
* expéditeur en liste noire : les serveurs connus comme étant utilisés par les spammeurs sont répertoriés dans des listes noires ; certains MTA rejettent les messages expédiés depuis ces serveurs
Le rejet d'un message provoque généralement l'envoi d'un email à l'expéditeur l'informant que le message a été refusé. Cependant, cela est de moins en moins systématique en raison de l'engorgement des réseaux et de la multiplication des virus et spammeurs qui indiquent une fausse adresse d'expéditeur.

### Transfert d'un message

Les messages reçus et non rejetés sont transférés au MTA du destinataire, sauf si celui-ci est le MTA traitant actuellement le mail : dans ce cas le message est transféré à un MDA, c'est-à-dire d'agent de livraison, voire traité directement dans certains cas (certains MTA faisant également office de MDA).

## Gestion des indisponibilités
### Serveurs secondaires

La plupart des réseaux disposent d'au moins deux MTA, un primaire et un secondaire, ce dernier permettant de pallier les défaillances du premier. Les serveurs secondaires ne fournissent pas toujours tous les services du serveur primaire, il est courant qu'ils se contentent de stocker les messages jusqu'à la remise en service du serveur primaire auquel les messages en attente sont alors transférés.

### Principe de file d'attente

Lorsqu'un MTA veut transférer un message à un MTA qui est indisponible, il met ce message dans sa file d'attente : il essaiera plusieurs fois de retransmettre le message, jusqu'à ce que le MTA destinataire soit à nouveau disponible. Au-delà d'un certain nombre d'essais infructueux (ou d'une certaine durée selon la configuration), le message sera rejeté par le MTA.

### Liste grise

Les MTA de spammeurs ne gèrent pas tous une file d'attente. Certains MTA utilisent cette particularité pour filtrer les spams avec un système dit de liste grise :
* lorsqu'un message est reçu pour la première fois depuis un serveur donné, le serveur simule une indisponiblité
* lorsque le message est reçu une seconde fois (après passage dans la file d'attente du MTA expéditeur), il est correctement traité.
* les messages envoyés ultérieurement par le même serveur seront acceptés immédiatement pour éviter un engorgement global de tous les serveurs.
Ainsi, les messages envoyés depuis des MTA ne gérant pas de liste d'attente ne sont jamais distribués.

### Delivery Status Notification

Un Delivery Status Notification (DSN) est un message électronique envoyé automatiquement par le Mail Transfer Agent pour signaler un problème.
Codes d'erreur :
* Persistent transient failure (4.X.X)
* Permanent failure (5.X.X)