Mail/MTA/Sendmail/GmailRelay

De TartareFR
Version datée du 18 mai 2014 à 17:14 par Didier (discussion | contributions) (→‎Configuration de sendmail)
(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)
Aller à la navigation Aller à la recherche

Configurer sendmail comme relais SMTP vers la messagerie Gmail

Valider la version de sendmail

Le protocole de communication utilisé par Gmail pour l’accès au service SMTP est sécurisé. Il faut donc s’assurer que la version de sendmail utilisé supporte le protocole TLS pour le chiffrement et SASL pour l’authentification. Pour vérifier,

faites la ligne de commande suivante :

/usr/sbin/sendmail -d0.1 -bv root
Version 8.14.8
 Compiled with: DNSMAP HESIOD HES_GETMAILHOST LDAPMAP LOG MAP_REGEX
                MATCHGECOS MILTER MIME7TO8 MIME8TO7 NAMED_BIND NETINET NETINET6
                NETUNIX NEWDB NIS PIPELINING SASLv2 SCANF SOCKETMAP STARTTLS
                TCPWRAPPERS USERDB USE_LDAP_INIT

============ SYSTEM IDENTITY (after readcf) ============
      (short domain name) $w = didier
  (canonical domain name) $j = didier.dnsdynamic.net
         (subdomain name) $m = dnsdynamic.net
              (node name) $k = didier.dnsdynamic.net
========================================================

didier... deliverable: mailer local, user didier

Si tout est bon, vous devriez voir les 2 options suivantes :

Compiled with : STARTTLS &  SASLv2

Valider la version de SASL

Afin de s’assurer que la version de SASL supporte les bons niveaux d’authentification, soit « LOGIN » et « PLAIN », et qu’il n’y aura pas de problème pour l’authentification avec Gmail, il faut valider la version de SASL en exécutant la ligne de commande suivante :

yum list | grep sasl
cyrus-sasl.x86_64                        2.1.26-14.fc20                installed
cyrus-sasl-gssapi.x86_64                 2.1.26-14.fc20                installed
cyrus-sasl-lib.i686                      2.1.26-14.fc20                installed
cyrus-sasl-lib.x86_64                    2.1.26-14.fc20                installed
cyrus-sasl-md5.x86_64                    2.1.26-14.fc20                installed
cyrus-sasl-plain.x86_64                  2.1.26-14.fc20                installed
cyrus-sasl-scram.x86_64                  2.1.26-14.fc20                installed
cyrus-sasl.i686                          2.1.26-14.fc20                fedora   
cyrus-sasl-devel.i686                    2.1.26-14.fc20                fedora   
cyrus-sasl-devel.x86_64                  2.1.26-14.fc20                fedora   
cyrus-sasl-gs2.i686                      2.1.26-14.fc20                fedora   
cyrus-sasl-gs2.x86_64                    2.1.26-14.fc20                fedora   
cyrus-sasl-gssapi.i686                   2.1.26-14.fc20                fedora   
cyrus-sasl-ldap.i686                     2.1.26-14.fc20                fedora   
cyrus-sasl-ldap.x86_64                   2.1.26-14.fc20                fedora   
cyrus-sasl-md5.i686                      2.1.26-14.fc20                fedora   
cyrus-sasl-ntlm.i686                     2.1.26-14.fc20                fedora   
cyrus-sasl-ntlm.x86_64                   2.1.26-14.fc20                fedora   
cyrus-sasl-plain.i686                    2.1.26-14.fc20                fedora   
cyrus-sasl-scram.i686                    2.1.26-14.fc20                fedora   
cyrus-sasl-sql.i686                      2.1.26-14.fc20                fedora   
cyrus-sasl-sql.x86_64                    2.1.26-14.fc20                fedora 

La version de SASL doit être à 2.1.21 ou supérieure.

Si vous n’avez pas la bonne version, vous n’avez qu’à mettre à jour en effectuant la ligne de commande suivante :

yum install cyrus-sasl-plain

Avant de poursuivre, assurez-vous que le service SASL est fonctionnel et s’exécute comme daemon. Exécutez la ligne de commande suivante :

systemctl status saslauthd
saslauthd.service - SASL authentication daemon.
   Loaded: loaded (/usr/lib/systemd/system/saslauthd.service; disabled)
   Active: active (running) since dim. 2014-05-18 18:29:49 CEST; 1s ago
  Process: 18573 ExecStart=/usr/sbin/saslauthd -m $SOCKETDIR -a $MECH $FLAGS (code=exited, status=0/SUCCESS)
 Main PID: 18574 (saslauthd)
   CGroup: /system.slice/saslauthd.service
           ├─18574 /usr/sbin/saslauthd -m /run/saslauthd -a pam
           ├─18575 /usr/sbin/saslauthd -m /run/saslauthd -a pam
           ├─18576 /usr/sbin/saslauthd -m /run/saslauthd -a pam
           ├─18577 /usr/sbin/saslauthd -m /run/saslauthd -a pam
           └─18578 /usr/sbin/saslauthd -m /run/saslauthd -a pam

mai 18 18:29:49 didier.dnsdynamic.net systemd[1]: Started SASL authentication daemon..
mai 18 18:29:49 didier.dnsdynamic.net saslauthd[18574]: detach_tty      : master pid is: 18574
mai 18 18:29:49 didier.dnsdynamic.net saslauthd[18574]: ipc_init        : listening on socket: /run/saslauthd/mux

Si ce n’est pas le cas, simplement exécuter les deux lignes de commandes suivantes :

systemctl enable saslauthd
systemctl start saslauthd

Certificat de sécurité SSL

Cette étape consiste à créer les répertoires pour le stockage des certificats s’ils n’existent pas, effectuez les lignes de commandes suivantes :

mkdir /etc/mail/certs

Maintenant, si le fichier ca-bundle.crt n’existe pas, il faudra lier le certificat maître de votre système en effectuant la ligne de commande suivante :

ln -s /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem ca-bundle.crt

Nous allons maintenant générer les certificats locaux. Voici les lignes de commandes à utiliser pour générer les certificats SSL. Il est à noter qu’avec la valeur de paramètre « 3650 », vos certificats seront valides pour une période d’environ 10 ans.

Vous n’avez pas à générer le certificat CAPERM.PEM, mais question de conformité future, il ne fait pas de mal le générer tout de même. Exécutez la ligne de commande suivante et entrez les paramètres selon vos propres besoins et coordonnées.

openssl req -new -x509 -keyout cakey.pem -out cacert.pem -days 3650

Poursuivez maintenant pour la création du certificat sendmail en exécutant la ligne de commande suivante et entrez les paramètres selon vos propres besoins et coordonnées.

openssl req -nodes -new -x509 -keyout sendmail.pem -out sendmail.pem -days 3650

Configuration de sendmail

Nous sommes maintenant à l’étape finale de la démarche. Nous devons paramétrer sendmail afin qu’il puisse utiliser le relais SMTP de Gmail pour l’envoie de courriels.

Éditez le fichier /etc/mail/authinfo. Si le fichier n’existe pas, vous devrez le créer. Entrez les informations suivantes :

AuthInfo:smtp.gmail.com "U:root" "I:didier.fabert@gmail.com" "P:motdepasse" "M:PLAIN"
AuthInfo:smtp.gmail.com:587 "U:root" "I:didier.fabert@gmail.com" "P:motdepasse" "M:PLAIN"

Notez que vous devez changer les paramètres « votreadresse » et « mot_de_passe » par vos identifiants Gmail.

Effectuez ensuite les lignes de commandes suivantes :

makemap hash /etc/mail/authinfo < /etc/mail/authinfo
chmod 600 /etc/mail/authinfo

Éditez ensuite le fichier /etc/mail/sendmail.mc afin d’y ajouter les lignes suivantes, juste avant la ligne « MAILER(smtp)dnl » :

FEATURE(`authinfo',`hash /etc/mail/authinfo.db')
define(`SMART_HOST',`smtp.gmail.com')dnl
define(`RELAY_MAILER_ARGS', `TCP $h 587')
define(`ESMTP_MAILER_ARGS', `TCP $h 587')
define(`confCACERT_PATH',`/etc/mail/certs')
define(`confCACERT',`/etc/mail/certs/ca-bundle.crt')
define(`confSERVER_CERT',`/etc/mail/certs/sendmail.pem')
define(`confSERVER_KEY',`/etc/mail/certs/sendmail.pem')
define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')
TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')
define(`confAUTH_OPTIONS', `A')dnl

Effectuez ensuite les lignes de commandes suivantes afin de générer une version finale de configuration de sendmail. Notez que la commande m4 ne devrait donner aucune erreur.

cd /etc/mail
m4 sendmail.mc > sendmail.cf

Redémarrez le service sendmail en effectuant la ligne de commande suivante :

systemctl restart sendmail

Pour valider que le tout soit conforme, exécutez la ligne de commande suivante :

echo '/map authinfo AuthInfo:smtp.gmail.com' | /usr/sbin/sendmail -bt

La commande précédente devrait donner le résultat suivant :

ADDRESS TEST MODE (ruleset 3 NOT automatically invoked)
Enter <ruleset> <address>
> map_lookup: authinfo (AuthInfo:smtp.gmail.com) returns « U:root » « I:didier.fabert@gmail.com » « P:motdepasse » « M:PLAIN » (0)

Faites en suite un test en exécutant la ligne de commande suivante en prenant soin de changer « votreadresse@gmail.com » par votre propre adresse de courriel

echo « Ceci est un test » | mail -s Test votreadresse@gmail.com
User.png
Auteur initial Sylvain Thérien[1]


Références