Table of Contents

Sendmail

Installation et configuration basique

Voici ce que j'ai retrouvé dans mon history concernant l'installation et la configuration de Sendmail :

yum install sendmail sendmail-cf m4 mailx

vi /etc/mail/sendmail.mc
cd /etc/mail/
newaliases
m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf
systemctl restart sendmail.service
mail -s "aaa" adressebidon@gmail.com
tail /var/log/maillog

up2date sendmail-cf ⇒ ça sert juste à mettre à jour les paquets sendmail donc osef

Il avait fallu que je fasse un downgrade de Cyrus avant :

yum downgrade cyrus-sasl-2.1.26-17.el7.x86_64 cyrus-sasl-lib-2.1.26-17.el7.x86_64

Lignes que j'ai customisé dans le fichier /etc/mail/sendmail.mc :

VERSIONID(`2018-10-01 commentaire')dnl
define(`SMART_HOST', `smtp.domaine.local')dnl
DAEMON_OPTIONS(`Port=smtp, Name=MTA')dnl
LOCAL_DOMAIN(`ma-vm.domaine.local')dnl

FIXME Attention la ligne avec SMART_HOST commence par dnl par défaut, il faut penser à enlever ça, et il faut un FQDN comme smarthost (si on met une adresse IP ça ne passe pas)

Masquerading du sender

Commandes utiles

Editer le fichier de configuration :
vi /etc/mail/sendmail.mc

Générer le fichier de configuration exploitable par sendmail :
m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf

Redémarrer le service pour prise en compte de la configuration :
service sendmail restart ou systemctl restart sendmail.service

Fichier de configuration

Configuration à appliquer dans le fichier /etc/mail/sendmail.mc :

VERSIONID(`BATCH OPM 20181204')dnl
define(`SMART_HOST', `smtp2.justice.gouv.fr')dnl
EXPOSED_USER(`root')dnl
DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')dnl
FEATURE(masquerade_envelope)dnl
FEATURE(masquerade_entire_domain)dnl
MASQUERADE_AS(`justice.gouv.fr')dnl
MASQUERADE_DOMAIN(`justice.gouv.fr')dnl
FEATURE(`genericstable')dnl
GENERICS_DOMAIN_FILE(`/etc/mail/generics-domains')dnl

Explication

La ligne suivante sert juste à indiquer une note de version, à titre informatif :

VERSIONID(`20181204 commentaire')dnl

La ligne suivante spécifie le serveur SMTP à utiliser :

define(`SMART_HOST', `mon-smtp.domaine.local')dnl

La ligne suivante spécifie de n'accepter de relayer les emails qu'en provenance de localhost :

DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')dnl

La ligne suivante indique que les emails en provenance de l'utilisateur root ne seront pas modifiés (normal, car root ne doit envoyer que des emails relatifs au système, aux administrateurs système) :

EXPOSED_USER(`root')dnl

La ligne suivante indique de modifier le champ RFC5321.MAILFROM (enveloppe) en + du champ RFC5322.FROM (expéditeur affiché dans le client de messagerie) :

FEATURE(masquerade_envelope)dnl

Les lignes suivantes spécifient le domaine à utiliser par défaut si l'utilisateur n'est pas défini dans le genericstable :

MASQUERADE_AS(`justice.gouv.fr')dnl
FEATURE(masquerade_entire_domain)dnl
MASQUERADE_DOMAIN(`justice.gouv.fr')dnl

Les lignes suivantes servent à définir l'adresse email d'expéditeur à utiliser suivant l'utilisateur Unix qui envoie l'email (voir plus bas “Contenu du fichier /etc/mail/genericstable”) et les domaines à inspecter :

FEATURE(`genericstable')dnl
GENERICS_DOMAIN_FILE(`/etc/mail/generics-domains')dnl

NB : Les lignes qui commencent par dnl sont des commentaires, et chaque ligne doit se terminer par cette même directive (dnl). Les directives par rapport au MAILER doivent se trouver tout à la fin du fichier (lignes suivantes) :

MAILER(smtp)dnl
MAILER(procmail)dnl

Contenu du fichier /etc/mail/generics-domains :

localhost.localdomain
VM-OPM-BATCH-01.recette.justice.local
recette.justice.local
justice.gouv.fr

Contenu du fichier /etc/mail/genericstable :

opm     opm.dacs-m2@justice.gouv.fr

Commande pour prise en compte du genericstable :

makemap hash /etc/mail/genericstable < /etc/mail/genericstable

Test de la configuration

Tests de la configuration de sendmail :

[root@VM-OPM-BATCH-01 mail]# sendmail -bt
ADDRESS TEST MODE (ruleset 3 NOT automatically invoked)
Enter <ruleset> <address>
> /tryflags HS
> /try local opm
Trying header sender address opm for mailer local
canonify           input: opm
Canonify2          input: opm
Canonify2        returns: opm
canonify         returns: opm
1                  input: opm
1                returns: opm
HdrFromL           input: opm
AddDomain          input: opm
AddDomain        returns: opm < @ *LOCAL* >
MasqHdr            input: opm < @ *LOCAL* >
canonify           input: opm . dacs-m2 @ justice . gouv . fr
Canonify2          input: opm . dacs-m2 < @ justice . gouv . fr >
Canonify2        returns: opm . dacs-m2 < @ justice . gouv . fr . >
canonify         returns: opm . dacs-m2 < @ justice . gouv . fr . >
MasqHdr          returns: opm . dacs-m2 < @ justice . gouv . fr . >
HdrFromL         returns: opm . dacs-m2 < @ justice . gouv . fr . >
final              input: opm . dacs-m2 < @ justice . gouv . fr . >
final            returns: opm . dacs-m2 @ justice . gouv . fr
Rcode = 0, addr = opm.dacs-m2@justice.gouv.fr
> /map generics opm
map_lookup: generics (opm) returns opm.dacs-m2@justice.gouv.fr (0)
> /try local root
Trying header sender address root for mailer local
canonify           input: root
Canonify2          input: root
Canonify2        returns: root
canonify         returns: root
1                  input: root
1                returns: root
HdrFromL           input: root
AddDomain          input: root
AddDomain        returns: root < @ *LOCAL* >
MasqHdr            input: root < @ *LOCAL* >
MasqHdr          returns: root < @ VM-OPM-BATCH-01 . recette . justice . local . >
HdrFromL         returns: root < @ VM-OPM-BATCH-01 . recette . justice . local . >
final              input: root < @ VM-OPM-BATCH-01 . recette . justice . local . >
final            returns: root @ VM-OPM-BATCH-01 . recette . justice . local
Rcode = 0, addr = root@VM-OPM-BATCH-01.recette.justice.local
>/try local bapt
Trying header sender address bapt for mailer local
canonify           input: bapt
Canonify2          input: bapt
Canonify2        returns: bapt
canonify         returns: bapt
1                  input: bapt
1                returns: bapt
HdrFromL           input: bapt
AddDomain          input: bapt
AddDomain        returns: bapt < @ *LOCAL* >
MasqHdr            input: bapt < @ *LOCAL* >
MasqHdr          returns: bapt < @ justice . gouv . fr . >
HdrFromL         returns: bapt < @ justice . gouv . fr . >
final              input: bapt < @ justice . gouv . fr . >
final            returns: bapt @ justice . gouv . fr
Rcode = 0, addr = bapt@justice.gouv.fr
> /quit

Fichiers de configuration

https://www.zdnet.fr/actualites/configurer-sans-peine-un-serveur-sendmail-sous-linux-2101125.htm

Depuis la version 8.9, c'est dans le répertoire /etc/mail/ que se trouvent tous les fichiers de configuration nécessaires pour faire fonctionner Sendmail.
Toutefois, quelques changements de nomenclature ont été opérés.
Le Tableau A devrait vous aider si vous utilisez une version plus ancienne.

Tableau A
Emplacement dans versions antérieures à 8.9 	Emplacement dans version 8.9
/etc/sendmail/sendmail.cw 			/etc/mail/local-host-names
/etc/aliases 					/etc/mail/aliases
/etc/sendmail.ct 				/etc/mail/trusted-users
/etc/sendmail.hf 				/etc/mail/helpfile 

Liens

https://www.oreilly.com/library/view/sendmail-cookbook/0596004710/ch04.html
http://www.xeams.com/difference-envelope-header.htm
http://etutorials.org/Server+Administration/Sendmail/Part+I+Build+and+Install/Chapter+4.+Configure+sendmail.cf+with+m4/4.4+Masquerading/
https://sites.google.com/site/syscookbook/miscellaneous/sendmail
http://www.planet-libre.org/index.php?post_id=8739

Article très bien :
https://www.system-linux.eu/index.php?post/2009/01/27/Traitement-de-Queue-mail-Postfix