Le fichier de configuration de sendmaila pour nom sendmail.cf. Il contient :
Les variables (macros en terminologie sendmail) ont des noms formés d'un seul caractère. Les lettres minuscules ont une signification spéciale (ce sont les variables réservées de sendmail), les lettres majuscules sont utilisables librement. Avec la version 8 de sendmail, ces variables peuvent porter des noms plus longs qu'un seul caractère, à condition de les entourer par des accolades.
Une classe est similaire à une variable, à ceci près qu'elle peut contenir plusieurs éléments, et que l'on peut faire des tests d'appartenance ou de non appartenance. Par exemple, une classe peut contenir l'ensemble des sites UUCP à qui nous transmettons le courrier, ou encore l'ensemble des machines pour lesquelles notre machine locale agit comme dépositaire de courrier.
Les options modifient le comportement de sendmail. Il y a un grand nombre d'options (dont les noms sont une lettre minuscule ou majuscule, et que la version 8 a étendu comme pour les variables) qui vont de la spécification du fichier aliases jusqu'au comportement de sendmailen cas de serveur de noms défaillant.
Le champ d'en-tête Precedence est traité spécialement par sendmailpour indiquer une priorité à donner au message. Ces priorités sont indiquées dans le message par un mot-clef, et la définition des priorités dans le fichier de configuration a pour but d'affecter une valeur numérique à chaque mot-clef.
Les utilisateurs « fiables » (trusted users) sont des utilisateurs ayant le droit d'appeler sendmailavec l'option -f pour changer l'identité de l'expéditeur. Ceci correspond aux programmes qui envoient des messages pour le compte d'autres utilisateurs. Par exemple, lorsque uucp reçoit un message depuis un autre site UUCP, il appelle sendmailpour router ce message. Le courrier ne doit alors pas apparaître comme venant de l'utilisateur uucp, mais comme venant de l'utilisateur original sur le site distant. Autrement dit, cela permet d'assurer la transmission de l'enveloppe lorsque sendmailest appelé par un autre programme.
Lorsqu'un message est traité, sendmailpeut ajouter, modifier ou vérifier certains champs de l'en-tête. Si modifier les définitions des champs d'en-tête est un sport délicat qui n'est heureusement quasiment jamais nécessaire, la vérification peut s'avérer très utile pour bloquer des spams, comme montré en 3.7.4, page .
Il peut arriver qu'on ait besoin d'une table de correspondance (par exemple, pour transformer une adresse login@site en Prénom.Nom@site). Ces tables de correspondances, avec la version 8 de sendmail, sont stockées en format binaire db ou dbm, suivant les options de compilation de sendmail.
Les agents de transport de messages (les mailers en terminologie sendmail) ne sont a priori pas connus. Chaque agent de transport est défini par un nom, un programme à appeler et ses arguments, ainsi que des paramètres (taille maximum des messages, champs d'en-tête nécessaires, etc.).
Trois agents au minimum doivent être connus :
Le programme sendmailinclut un agent de transport spécialisé pour le protocole SMTP. Cet agent n'est pas défini implicitement, il faut le définir explicitement. Le nom de l'agent est, par convention, la chaîne [IPC], et la chaîne d'arguments commence par l'« exécutable » TCP, toujours par convention.
Les règles de réécriture sont le cur de la configuration de sendmail, et sont décrites dans la section suivante.