Mail/MTA/Sendmail/GmailRelay
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