Installer Exim
Aller à la navigation
Aller à la recherche
Le wiki : Accueil - Administrateur - Bureautique - Développeur - Intégrateur - Marketing - Multimédia - Objets numériques - Jeux - We make Hack
Installer Exim
Introduction à Exim
# Exim4 est le serveur mail installé par défaut sur Debian.
Dépôt officiel de Exim sur Github : https://github.com/Exim/exim Bug tracker officiel de Exim : https://bugs.exim.org/enter_bug.cgi
Installer et configurer le serveur de mails Exim
Installer Exim
sudo apt install exim4
Configurer automatiquement Exim
sudo dpkg-reconfigure exim4-config
# Problème rencontré lors de mon premier essai :
# Le nom de courrier du système était "visionduweb.fr" ce qui ne me permettait pas d'envoyer des mails distants vers une adresse mail de destination dont le domaine était "visionduweb.fr".
# J'obtiendrais l'erreur suivante dans le mail qui sera renvoyé sur le système : Unrouteable address
# Je devrais reconfigurer Exim une seconde fois pour renseigner la valeur du hostname du VPS à la place de "visionduweb.fr".
# Identifier le hostname avec la commande hostname
.
# Type de configuration : Choisir « internet site » / « Distribution directe par SMTP (site Internet) » pour pouvoir envoyer et recevoir les mails via le protocole SMTP. # D'après la documentation : # Le nom de courrier (« mail name ») est le nom de domaine qui sert à compléter les adresses électroniques qui n'en comportent pas. # Ce nom sera également utilisé par d'autres programmes ; il doit correspondre au domaine unique et complètement qualifié (FQDN). # Par exemple, si une adresse électronique locale est toto@example.org, la valeur appropriée pour cette option sera « example.org ». # Ce nom n'apparaîtra pas dans les en-têtes origines (« From ») des courriers sortants si vous activez la réécriture. # Nom de courrier du système : Renseigner la valeur du hostname. (Pour un VPS, le nom du VPS : vps178370) # Veuillez indiquer une liste d'adresses IP, séparées par des points-virgules, où le serveur de courrier SMTP d'Exim sera à l'écoute. Ne rien modifier. (127.0.0.1 ; ::1_) Pour les autres destinations, utiliser le même nom que le nom de courrier du système. Renseigner la valeur du hostname. Ne rien modifier sur la page suivante. (Domaines à relayer.) Ne rien modifier sur la page suivante. (Machines à relayer.) Cliquer sur NON à la demande de garder un nombre minimal de requêtes DNS. Choisir ensuite l'option mbox. (Format « mbox » dans /var/mail) Choisir de ne pas découper le fichier de configuration de Exim en plusieurs petits fichiers configurables individuellement. # Les courriers destinés au superutilisateur, à « postmaster » et aux autres comptes système doivent être redirigés vers le compte utilisateur de l'administrateur réel du système. # Si ce champ est laissé vide, ces courriers seront conservés dans /var/mail/mail, ce qui est déconseillé. # Les courriers destinés « postmaster » devraient généralement être lus sur le système local, plutôt que redirigés vers un autre système. En conséquence, au moins un des utilisateurs que vous indiquez ne devraient pas rediriger ses courriers vers une autre machine. Le préfixe « real- » peut être utilisé pour imposer la distribution locale. # Si vous indiquez plusieurs identifiants, veuillez les séparer par des espaces. # Destinataire des courriers de « root » et « postmaster » : Ajouter toutes les adresses mails sur lesquelles vous souhaitez recevoir les alertes. L'ajout de root n’est pas obligatoire. (contacter@visionduweb.fr)
# Le rendu de cette configuration assistée : sudo nano /etc/exim4/update-exim4.conf.conf
Redémarrer Exim
# Redémarrer Exim : sudo /etc/init.d/exim4 restart
Afficher le status de Exim
# Les informations de status de Exim : sudo /etc/init.d/exim4 status
Afficher la version de Exim
sudo exim --version
Exim version 4.93 #5 built 18-Apr-2020 09:48:24 Copyright (c) University of Cambridge, 1995 - 2018 (c) The Exim Maintainers and contributors in ACKNOWLEDGMENTS file, 2007 - 2018 Berkeley DB: Berkeley DB 5.3.28: (September 9, 2013) Support for: crypteq iconv() IPv6 GnuTLS move_frozen_messages DANE DKIM DNSSEC Event I18N OCSP PRDR SOCKS TCP_Fast_Open Lookups (built-in): lsearch wildlsearch nwildlsearch iplsearch cdb dbm dbmjz dbmnz dnsdb dsearch nis nis0 passwd Authenticators: cram_md5 plaintext Routers: accept dnslookup ipliteral manualroute queryprogram redirect Transports: appendfile/maildir/mailstore autoreply lmtp pipe smtp Fixed never_users: 0 Configure owner: 0:0 Size of off_t: 8 Configuration file search path is /etc/exim4/exim4.conf:/var/lib/exim4/config.autogenerated Configuration file is /var/lib/exim4/config.autogenerated
Vérifier si un service Exim est chargé
lsof -Pni | grep exim4
exim4 xxxxxx Debian-exim 3u IPv4 yyyyyyy 0t0 TCP 127.0.0.1:25 (LISTEN) exim4 xxxxxx Debian-exim 4u IPv6 yyyyyyy 0t0 TCP [::1]:25 (LISTEN)
Tuer tous les services Exim
killall exim4
Le dossier spool de Exim
cd /var/spool/exim4/
Consulter les logs de Exim
# Les mails envoyés depuis le terminal sont journalisés par défaut dans le fichier "/var/log/exim4/mainlog". # Cela concerne les mails envoyés localement ou à distance, à l'aide du terminal. # Noter que Exim ne va pas renseigner mail.log !
mainlog correspond à LOG_INFO rejectlog correspond à LOG_NOTICE paniclog correspond à LOG_ALERT
# Consulter les logs de Exim : cat /var/log/exim4/mainlog
Source : https://www.exim.org/exim-html-current/doc/html/spec_html/ch-log_files.html
Désactiver exim4 au démarrage
# Pour des raisons de performances, il peut éventuellement êre intéressant de pouvoir désactiver exim4 au démarrage. # Vérifier par la suite si exim4 démarre manuellement.
# Désactiver exim4 au démarrage : sudo /usr/sbin/update-rc.d -f exim4 remove
Désinstaller Exim4
apt-get remove --purge exim4 exim4-base exim4-config exim4-daemon-light
# Malgré la commande purge, une nouvelle installation ne me demandera plus, lors de la dernière étape, de renseigner le mail (ou les mails) sur lequel je souhaite recevoir les alertes.
Tester l'envoi de mail avec Exim
Utiliser la commande de test d'envoi de mail de Exim
exim -bt <adresse valide>
Envoyer un mail de test en ligne de commande
# Vérifier la bonne réception du mail depuis votre logiciel client mail ou webmail : mail -s "Hello World !" contacter@visionduweb.fr < /dev/null # Ce test devrait afficher que le corps du mail est laissé vide : # Message en anglais : Null message body; hope that's ok # Message en français : mail: Corps du message vide; en espérant que cela soit correct
# Si la commande mail n'est pas reconnue : -bash: mail : commande introuvable # Installer mailutils : sudo apt-get install mailutils
# Recommencer l'envoie du test précédent. mail -s "Hello World !" contacter@visionduweb.fr < /dev/null mail: Corps du message vide; en espérant que cela soit correct
# La commande fonctionne mais en vérifiant mon client de messagerie en local, je n'ai pas de nouveau mail. # Depuis le serveur, je vois une nouvelle information affichée suite à une reconnexion : Vous avez du courrier dans /var/mail/debian # Je comprend que l'envoie de mail en externe a échouée, mais, l'information a bien été transmise à la messagerie système avec l'erreur "Unrouteable address". # Le problème provient du nom local visionduweb.fr renseigné dans la configuration de Exim4. # Il faut relancer la configuration pour donner un autre nom local que visionduweb.fr, en utilisant le hostname du VPS. # Si la configuration correspond à un serveur internet et que le hostname est renseigné correctement, le test devrait fonctionner et le mail devrait être expédié vers le destinataire.
# Lire mon mail système avec mailx "/var/mail/debian": 1 message 1 nouveau >N 1 Mail Delivery Syst mar. mars 19 01: 53/1793 Mail delivery failed: ret ? Return-path: <> Envelope-to: debian@vps178370.vps.ovh.ca Delivery-date: Tue, 19 Mar 2019 01:06:26 +0100 Received: from Debian-exim by vps178370.vps.ovh.ca with local (Exim 4.92) id 1h62Gw-00026v-EO for debian@vps178370.vps.ovh.ca; Tue, 19 Mar 2019 01:06:26 +0100 X-Failed-Recipients: contacter@visionduweb.fr Auto-Submitted: auto-replied From: Mail Delivery System <Mailer-Daemon@visionduweb.fr> To: debian@vps178370.vps.ovh.ca Content-Type: multipart/report; report-type=delivery-status; boundary=1552953986 -eximdsn-2111507310 MIME-Version: 1.0 Subject: Mail delivery failed: returning message to sender Message-Id: <E1h62Gw-00026v-EO@vps178370.vps.ovh.ca> Date: Tue, 19 Mar 2019 01:06:26 +0100 --1552953986-eximdsn-2111507310 Content-type: text/plain; charset=us-ascii This message was created automatically by mail delivery software. A message that you sent could not be delivered to one or more of its recipients. This is a permanent error. The following address(es) failed: contacter@visionduweb.fr Unrouteable address --1552953986-eximdsn-2111507310 Content-type: message/delivery-status Reporting-MTA: dns; vps178370.vps.ovh.ca Action: failed Final-Recipient: rfc822;contacter@visionduweb.fr Status: 5.0.0 --1552953986-eximdsn-2111507310 Content-type: message/rfc822 Return-path: <debian@vps178370.vps.ovh.ca> Received: from debian by vps178370.vps.ovh.ca with local (Exim 4.92) (envelope-from <debian@vps178370.vps.ovh.ca>) id 1h62Gw-00026t-Da for contacter@visionduweb.fr; Tue, 19 Mar 2019 01:06:26 +0100 Subject: Hello World ! To: <contacter@visionduweb.fr> X-Mailer: mail (GNU Mailutils 3.5) Message-Id: <E1h62Gw-00026t-Da@vps178370.vps.ovh.ca> From: Debian <debian@vps178370.vps.ovh.ca> Date: Tue, 19 Mar 2019 01:06:26 +0100 --1552953986-eximdsn-2111507310--
Quitter le message avec " q puis entrée ".
Vérifier le routage d'une adresse Exim4
# Évidemment, on avait déjà compris que la valeur indiquée dans notre configuration nous provoque une erreur. sudo exim -bt contacter@visionduweb.fr R: system_aliases for contacter@visionduweb.fr contacter@visionduweb.fr is undeliverable: Unrouteable address
# L'utilisateur local quant à lui est bien renseigné. sudo exim -bt UTILISATEUR-LOCAL # ou sudo exim -bt UTILISATEUR-LOCAL@visionduweb.fr # Retourne les mêmes informations. R: system_aliases for UTILISATEUR-LOCAL@visionduweb.fr R: userforward for UTILISATEUR-LOCAL@visionduweb.fr R: procmail for UTILISATEUR-LOCAL@visionduweb.fr R: maildrop for UTILISATEUR-LOCAL@visionduweb.fr R: lowuid_aliases for UTILISATEUR-LOCAL@visionduweb.fr (UID 1000) R: local_user for UTILISATEUR-LOCAL@visionduweb.fr UTILISATEUR-LOCAL@visionduweb.fr router = local_user, transport = mail_spool
Recommencer la configuration de Exim4
Au lieu de visionduweb.fr en première valeur, tenter la valeur de hostname (vps178370).
Choisir « internet site » pour pouvoir envoyer et recevoir les emails via le protocol SMTP. Donner un nom au système mail. (vps178370) Ne rien modifier sur la page suivante. (127.0.0.1 ; ::1_) Pour les autres destinations, utiliser le même nom que le nom du système email. (vps178370) Ne rien modifier sur la page suivante. (Domaines à relayer.) Ne rien modifier sur la page suivante. (Machines à relayer.) Cliquer sur NON à la demande de garder un nombre minimal de requêtes DNS. Choisir ensuite l’option mbox. (Format « mbox » dans /var/mail) Choisir de ne pas découper le fichier de configuration de Exim en plusieurs petits fichiers configurables individuellement. Ajouter toutes les adresses mails sur lesquelles vous souhaitez recevoir les alertes. L’ajout de root n’est pas obligatoire. (contacter@visionduweb.fr)
# L'adresse est maintenant routable. sudo exim -bt contacter@visionduweb.fr R: dnslookup for contacter@visionduweb.fr contacter@visionduweb.fr router = dnslookup, transport = remote_smtp host mx1.ovh.net [188.165.47.122] MX=1 host mx2.ovh.net [87.98.132.45] MX=5 host mxb.ovh.net [46.105.45.21] MX=100
Le test d'envoi depuis le serveur fonctionne cette fois correctement pour mes deux adresses mail ! mail -s "Hello World !" contacter@visionduweb.fr < /dev/null mail -s "Hello World !" mail@visionduweb.com < /dev/null
Le fichier /etc/mailname contient votre_nom_de_domaine.fr entré lors de la configuration précédente. C'est la valeur vps178370 qui est renseignée dans mon cas avec un VPS OVH et la seule utilisation de Exim4.
Exim4 est fonctionnel depuis le terminal, configurer Exim4 pour PHP
# Mon script d'alerte administrateur pour relever les erreurs du site avec PHP mail() n'envoie pas le mail distant. # Remplacer la ligne suivante dans le fichier de configuration php.ini de PHP FPM, pour permettre aux mails PHP de sortir. sendmail_path = /usr/sbin/sendmail -t -i # Par la ligne suivante : sendmail_path = /usr/sbin/sendmail -t -i -F contacter@visionduweb.fr -f contacter@visionduweb.fr
# Il est possible (préférable ?) de modifier le chemin /usr/sbin/sendmail pour celui de Exim4 avec le chemin suivant /usr/sbin/exim4. # Sans les options complémentaires, Mediawiki arrive bien à envoyer des mails. sendmail_path = /usr/sbin/exim4 -t -i # Je dois ajouter les options complémentaires pour permettre aux simples scripts mails en PHP d'être délivrés. sendmail_path = /usr/sbin/exim4 -t -i -F contacter@visionduweb.fr -f contacter@visionduweb.fr
# Le format du mail de l'émetteur est très technique quand envoyé depuis le terminal " debian@vps178370.vps.ovh.ca ". # Utiliser le paramètre -r mail pour définir l'expéditeur du mail en ligne de commande. mail -s "Hello World !" -r contacter@visionduweb.fr mail@visionduweb.com < /dev/null
# Utiliser un script PHP pour alerter l'administrateur en cas de panne. # Les headers de PHP permettent de modifier l'émetteur du mon mail. # Les headers permettent également d'améliorer le score de légitimité du mail pour éviter que le mail ne finisse dans les dossiers de spam. # L'option -a permet de renseigner le header. Je n'ai pas utilisé d'avantage cette possibilité : mail -a from:contacter@visionduweb.fr mail@visionduweb.com
# Le test de récupération de mot de passe effectué depuis le wiki se retrouve dans les spams de la messagerie hotmail. --> Voir à améliorer le score de légitimité du mail avec la configuration au niveau d'Exim et / ou de Apache2 avec DKIM et DMark.
En savoir plus sur les flags
# Les drapeaux ont les significations suivantes: S - Faire les réécritures au temps SMTP. Tous les indicateurs suivants sont définis immédiatement à mesure que les données auxquelles ils s'appliquent arrivent, et qu'ils ne sont pas retardés. F - Réécrivez l'enveloppe à partir du champ. f - Réécrivez le champ d'en-tête De:. r - Réécrivez le champ d’en-tête Répondre à:. s - Réécrivez le champ d'en-tête Sender-To:.
Lien complémentaire : http://www.exim.org/exim-html-current/doc/html/spec_html/ch-address_rewriting.html
Redémarrer Exim4
sudo service exim4 restart
Définir et rediriger les mails des utilisateurs
Définir l'adresse mail d'un utilisateur du système
# Le fichier /etc/email-addresses contient les adresses mails "publiques" à utiliser pour les comptes utilisateurs du système. # Il est possible d'associer le compte root à une adresse particulière pour des envois de rapports.
# L'adresse mail d'un utilisateur est configurée dans le fichier email-addresses : sudo nano /etc/email-addresses debian:g2pc@visionduweb.com root:mail@visionduweb.com
# Avant d'avoir défini le mail de l'utilisateur root : sudo exim -brw root sender: root@vps178370 from: root@vps178370 to: root@vps178370 cc: root@vps178370 bcc: root@vps178370 reply-to: root@vps178370 env-from: root@vps178370 env-to: root@vps178370
# Après avoir défini le mail de l'utilisateur root : sudo exim -brw root sender: mail@visionduweb.com from: mail@visionduweb.com to: root@vps178370 cc: root@vps178370 bcc: root@vps178370 reply-to: mail@visionduweb.com env-from: mail@visionduweb.com env-to: root@vps178370
# Utiliser maintenant la ré-écriture Exim (rewrite) pour modifier systématiquement tous les mails à destination de ces utilisateurs. # Dans le cas d'une configuration Exim4 dans un seul fichier, il faut modifier le fichier /etc/exim4/exim4.conf.template vers la ligne 1834 : # Dans le cas d'une configuration Exim4 séparée, il faut modifier le fichier /etc/exim4/conf.d/rewrite/00_exim4-config_header
# J'utilise ici la configuration dans un seul fichier, car, la configuration dans un fichier séparé n'apporte aucun changement.
###################################################################### # REWRITE CONFIGURATION # ###################################################################### begin rewrite debian@* g2pc@visionduweb.com FfrsTtcb root@* mail@visionduweb.com FfrsTtcb
# Les valeurs FfrsTtcb correspondent à : E rewrite all envelope fields F rewrite the envelope From field T rewrite the envelope To field b rewrite the Bcc: header c rewrite the Cc: header f rewrite the From: header h rewrite all headers r rewrite the Reply-To: header s rewrite the Sender: header t rewrite the To: header
# Régénérer le fichier principale : sudo update-exim4.conf # Relancer le service exim4 : sudo service exim4 restart
# Tester avec root : sudo exim -brw root sender: mail@visionduweb.com from: mail@visionduweb.com to: mail@visionduweb.com cc: mail@visionduweb.com bcc: mail@visionduweb.com reply-to: mail@visionduweb.com env-from: mail@visionduweb.com env-to: mail@visionduweb.com
# Tester avec root@localhost : sudo exim -brw root@localhost sender: mail@visionduweb.com from: mail@visionduweb.com to: mail@visionduweb.com cc: mail@visionduweb.com bcc: mail@visionduweb.com reply-to: mail@visionduweb.com env-from: mail@visionduweb.com env-to: mail@visionduweb.com
Source : https://www.jbnet.fr/systeme/linux/debian-rediriger-les-emails-root-et-autres-utilisateurs-avec-exim4.html Source : http://www.exim.org/exim-html-current/doc/html/spec_html/ch-address_rewriting.html
Rediriger les mails de root vers une adresse mail valide à l'aide d'un alias
# Le fichier /etc/aliases contient les redirections de courriers des comptes utilisateurs du système. # Par défaut tous les mails sont envoyés à l'utilisateur root.
# Ne pas utiliser le fichier ~/.forward ! # Pourquoi ?
# Indiquer un alias pour que tous les mails envoyés à root soient redirigés vers une véritable adresse mail. sudo nano /etc/aliases
mailer-daemon: postmaster postmaster: root nobody: root hostmaster: root usenet: root news: root webmaster: root www: root ftp: root abuse: root noc: root security: root root: le_premier_utilisateur_créé, un_autre_utilisateur
# On voit que tous les mails sont envoyés à root et que root est redirigé vers le premier utilisateur qui a été créé suite à l'installation de Debian. # Remplacer le premier utilisateur par une adresse mail valide. sudo nano /etc/aliases # Noter que en cas de configuration séparée, les redirections peuvent également être ajoutées à cet endroit, plutôt que dans le fichier aliases par défaut : sudo nano /etc/exim4/conf.d/rewrite/00_exim4-config_header
mailer-daemon: postmaster postmaster: root nobody: root hostmaster: root usenet: root news: root webmaster: root www: root ftp: root abuse: root noc: root security: root # Définir un alias pour root afin de renvoyer les messages vers un mail valide : root: mail@visionduweb.com
# Faire un test en envoyant un mail à root : echo -e "corps" | mail -s 'sujet' root
# Le mail doit arriver dans la boite personnelle qui a été configurée. # Pas de chance, le mail est transmis en local. # Après avoir défini l'adresse mail de l'utilisateur par défaut debian dans le fichier /etc/email-addresses, le mail pour root qui ne serait pas délivré sera retransmis dans la boîte mail de l'utilisateur debian. # Après avoir défini l'adresse mail de l' utilisateur root, dans le fichier /etc/email-addresses, le mail pour root est bien transmis dans ma boîte mail. # Il est nécessaire de vérifier que le mail utilisé pour root soit également bien valide dans le fichier /etc/aliases.
Source complémentaire : https://www.memoinfo.fr/tutoriels-linux/installer-exim-relai-smarthost/ Source complémentaire : https://www.debian-fr.org/t/configurer-exim4-pour-recevoir-les-alertes-dans-sa-bal/29512 Source complémentaire https://medspx.fr/blog/Debian/exim4_beginner/
Générer un certificat pour Exim
# Par défaut, cette méthode permet de créer une clé privée RSA de 2048 bits d'une validité de 3ans.
cd /etc/exim4 sudo update-exim4.conf # Affiche : Warning: No server certificate defined; will use a selfsigned one. Suggested action: either install a certificate or change tls_advertise_hosts option
# Noter que cette erreur ne s'affiche pas sur deux autres installations de serveur. # Je ne sais pas pourquoi mon premier VPS a rencontré cette erreur, mais, elle a été corrigée en suivant les étapes ci-dessous.
# Générer un certificat : sudo bash /usr/share/doc/exim4-base/examples/exim-gencert [*] Creating a self signed SSL certificate for Exim! This may be sufficient to establish encrypted connections but for secure identification you need to buy a real certificate! Please enter the hostname of your MTA at the Common Name (CN) prompt! Can't load /root/.rnd into RNG 139960444302464:error:2406F079:random number generator:RAND_load_file:Cannot open file:../crypto/rand/randfile.c:98:Filename=/root/.rnd Generating a RSA private key ................................+++++ .........+++++ writing new private key to '/etc/exim4/exim.key' ----- You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Code (2 letters) [US]:FR State or Province Name (full name) []:Alsace Locality Name (eg, city) []:Colmar Organization Name (eg, company; recommended) []:Visionduweb Organizational Unit Name (eg, section) []: Server name (eg. ssl.domain.tld; required!!!) []:visionduweb.fr Email Address []:mail@visionduweb.com [*] Done generating self signed certificates for exim! Refer to the documentation and example configuration files over at /usr/share/doc/exim4-base/ for an idea on how to enable TLS support in your mail transfer agent.
# Le certificat semble avoir été généré, malgré l'erreur suivante : Can't load /root/.rnd into RNG 139960444302464:error:2406F079:random number generator:RAND_load_file:Cannot open file:../crypto/rand/randfile.c:98:Filename=/root/.rnd
# Malgré tout, l'erreur est toujours affichée : cd /etc/exim4 sudo update-exim4.conf Warning: No server certificate defined; will use a selfsigned one. Suggested action: either install a certificate or change tls_advertise_hosts option
# Au lieu de générer un certificat, vous pouvez simplement copier les certificats que vous avez achetés ou générés précédemment.
# Éditer le fichier de configuration : sudo nano /etc/exim4/exim4.conf.localmacros # Ajouter la ligne : MAIN_TLS_ENABLE = yes # Il est possible que cette configuration soit déjà activée dans la configuration principale de Exim : sudo nano /etc/exim4/exim4.conf.template
# Comme pour toute modification de la configuration, exécuter update-exim4.conf puis redémarrer Exim. cd /etc/exim4 sudo update-exim4.conf # Les deux erreurs ne sont plus affichées ! Résolu !
# Redémarrer Exim4 pour prendre en compte les modifications : sudo service exim4 restart # Redémarrer Exim4 pour prendre en compte les modifications, si systemd est utilisé : sudo systemctl restart exim4.service
## Depuis la mise en place de cette configuration, j'ai l'impression que mes mails de Fail2ban ne sortent plus. ## Je redémarre également Fail2ban, les mails sont bien délivrés. ## Je ne sais pas si ce redémarrage était réellement nécessaire. # sudo service fail2ban restart
# Information : # Pour ne pas rencontrer l'erreur "Can't load /root/.rnd into RNG", éditer le script proposé par Debian pour Exim afin de générer le certificat : sudo nano /usr/share/doc/exim4-base/examples/exim-gencert # Commenter la ligne suivante pourrait être suffisant. RANDFILE = $HOME/.rnd
# Malgré cette erreur rencontrée avec le script de génération de certificat pour Exim, une clé privée RSA de 2048 bits sera bien générée. # Le fichier /root/.rnd n'a pas besoin d'exister initialement car le fichier /usr/share/doc/exim4-base/examples/exim-gencert va le créer puisqu'il n'existe pas. # Le fichier /root/.rnd existera effectivement par après : -rw------- 1 root root 1024 juin 6 18:41 .rnd # Il faudrait remonter ce manque de clarté au projet Exim, pour que le message d'erreur soit moins ambigu : non, le fichier n'existe pas, mais, oui, il va être créé.
# Le système d'exploitation fournit automatiquement ce fichier de hash en utilisant son propre RNG via /dev/urandom ou via des appels système tels que getentropy() ou CryptGenRandom(). # Le fichier .rnd est un résidu du temps où le système d'exploitation manquait d'un bon CSPRNG, peut-être lorsque le Linux /dev/urandom était considéré comme de mauvaise qualité et que /dev/random produisait des données trop lentement en raison de problématiques d'entropie. Ce n'est plus le cas à ce jour. # S'appuyer entièrement sur un fichier de hash stocké dans votre homedir serait en fait moins sûr.
# Suite à ce message, j'ouvre une issue à but d'information, sur le bogue tracker de Exim. # On me répondra que ce n'est pas un problème de Exim mais de Debian, qui fournit le script. Source : https://bugs.exim.org/show_bug.cgi?id=2591 Source : https://salsa.debian.org/exim-team/exim4/-/blob/master/debian/exim-gencert
Commandes courantes
# Obtenir des statistiques sur l'activité d'Exim : eximstats /var/log/exim4/mainlog
# Montre ce que Exim est entrain de faire : exiwhat
# Visualiser les courriers en file d'attente : mailq
# Relancer le process de la file d'attente : runq
# Relancer uniquement les mails gelés : mailq | grep frozen | sed -e 's/.* \(.\{6\}-.\{6\}-.\{2\}\) .*/\1/' | xargs exim4 -M # xargs: exim4: Aucun fichier ou dossier de ce type
# Forcer la livraison des mails, y compris les mails gelés et vider la file d'attente : exim -qff
# Dégeler les messages gelés / frozen : mailq | gawk '/frozen/{print $3}'|xargs exim4 -Mt;runq mailq | grep "frozen"
# Retenter la livraison d'un message : exim4 -M 1I8u1e-0001MM-O9
# Supprimer un message de la file d’attente : exim -Mrm <message-id>
# Supprimer tous les messages de la file d'attente : exim4 -Mrm `ls /var/spool/exim4/input/ | grep -- -H$ | cut -c 1-16`
# Supprimer les mails gelés de la file d'attente : mailq | grep frozen | sed -e 's/.* \(.\{6\}-.\{6\}-.\{2\}\) .*/\1/' | xargs exim4 -Mrm
# Afficher le contenu d'un message de la file d'attente : exim4 -Mvb 1KwvVZ-0001fc-NA
# Le <message-id> est de type 1VEcvi-0001xI-Pz est affiché lors des mailq : sudo mailq 2h 2.9K 1VEcvi-0001xI-Pz <> *** frozen *** adresse@email.com
# Affiche par domaine le nombre de messages dans la queue, le volume par domaine de destination concerné, et, pour chacun d'eux, le mail le plus vieux ainsi que le plus récent. exim -bp | exiqsumm
# Autres commandes : https://howto.landure.fr/gnu-linux/trucs-et-astuces-pour-exim-4 # Autres commandes : http://debian-facile.org/doc:reseau:exim4-pour-les-nulls # Autres commandes : https://buzut.net/connaitre-commandes-dompter-exim4/
Configurations complémentaires
Localiser les fichiers de configuration complémentaires
# Consulter la configuration de Exim. sudo nano /etc/exim4/exim4.conf.template
# Éviter de modifier directement le fichier généré par update-exim4.conf. sudo nano /var/lib/exim4/config.autogenerated
Vérifier le reverse DNS
# Vérifier que vous avez un reverse DNS rattaché à votre hostname et que ce rDNS correspond à l'adresse IP du serveur d'envoi.
Vérifier le reverse DNS sur son serveur Linux.
# Si je comprend bien, il ne faudrait pas chercher à envoyer un mail depuis un serveur, si le mail ne correspond pas à un nom de domaine hébergé sur le serveur. # Ainsi, mon mail mail@visionduweb.fr hébergé chez sivit ne devrait pas me servir à envoyer des mail depuis mon VPS qui héberge mon .eu .fr .info
DNS Blacklists
https://wiki.debian.org/Exim#DNS_Blacklists
Outil de diagnostique
https://wiki.debian.org/Exim#Install_diagnostic_tools
Décrypter le contenu de la variable X-VR-SPAMCAUSE présent dans le header d'un mail tagué comme SPAM
# Exemple : X-VR-SPAMCAUSE: "Un hachage de la cause du spam uniquement utilisé par Vade."
# Déchiffrer depuis Tor : Copier le contenu de la variable sur ce site mis à disposition depuis Tor : http://www.fr3dpyqxb5ygbmji.onion
# Déchiffrer à l'aide de l'API de Vade Secure nécessite un compte utilisateur : API Vade Secure : https://api.partner.vadesecure.com
# Déchiffrer depuis sa machine, avec un script Python proposé depuis : https://gist.github.com/lkraider/9530798a695586fc1580d0728966f6f0 def decode(msg): text = [] for i in range(0, len(msg), 2): text.append(unrot(msg[i: i + 2])) return str.join(, text) def unrot(pair, key=ord('x')): offset = 0 for c in 'cdefgh': if c in pair: offset = (ord('g') - ord(c)) * 16 break return chr(sum(ord(c) for c in pair) - key - offset) print(decode('gggruggvucftvghtrhho')) # Affiche : Vade Retro
Technical details on how Anti-spam filters work : https://help.dreamhost.com/hc/en-us/articles/215686647-Technical-details-on-how-Anti-spam-filters-work
Scanner le spam
https://wiki.debian.org/Exim#Spam_scanning
Configurer le SMTP pour exim4
Tester le hostname.
# Afficher le hostname : hostname vps178370
# Afficher le FQDN : hostname --fqdn vps178370.vps.ovh.ca
# Le serveur de messagerie ne semble pas écouter sur une adresse publique. # Il accepte uniquement le courrier entrant à partir de 127.0.0.1 qui est localhost. # Cela explique pourquoi l’envoi de courrier directement à partir du serveur à l’aide de commandes shell fonctionne. # Si Exim est bien configuré, il peut envoyer des mails sans service SMTP extérieur, comme un vrai serveur de messagerie. hostname -i 127.0.1.1
# Attention ! # Ne pas communiquer en claire les informations de connexion avec l'hôte SMTP. # Installer avant ça le certificat TLS pour Exim.
# Suite à mes tests, sans certificat TLS, les mails peuvent sortir, que les données de connexion SMTP soit renseignée, ou non ! # La configuration SMTP suivante ne semble pas fonctionner pour moi, je ne vois pas l'émetteur du mail réceptionné correspondre aux valeurs du SMTP.
# Déclarer le serveur SMTP. sudo nano /etc/exim4/passwd.client # Le renseigner avec la configuration d'un mail OVH, disponible via l'offre d'hébergement gratuite. ssl0.ovh.net:Utilisateur:Mot_de_passe
# Mettre les bons droits sur le fichier. sudo chown Debian-exim:root /etc/exim4/passwd.client sudo chmod 640 /etc/exim4/passwd.client
# Finaliser l'installation. sudo update-exim4.conf sudo service exim4 restart ( Ou sudo /etc/init.d/exim4 restart )
# Dans mon cas, il faudrait consulter des tutoriels pour Exim et le SMTP de OVH. # Les tutoriels suivants pour paramétrer Exim pour le SMTP de Gmail, Mailjet et Yandex ne m'ont pas permis d'avancer sur ma configuration SMTP pour un mail OVH. Configurer Exim4 pour utiliser une adresse mail GMail : https://web.archive.org/web/20190911070749/http://www.bernaerts-nicolas.fr/linux/75-debian/278-debian-sendmail-gmail-account Setup Exim to Send Email Using Gmail in Debian : https://www.vultr.com/docs/setup-exim-to-send-email-using-gmail-in-debian Fast Mail Fast Smarthost - Fast dirty mail hack : Gmail Mailjet Yandex : https://forum.vestacp.com/viewtopic.php?f=12&t=7422 ISP : https://askubuntu.com/questions/167043/how-do-i-configure-exim4-to-send-mail-through-a-password-protected-ssl-smtp-mail
Autoriser les paquets SMTP à sortir du réseau
Créer une règle pour ouvrir le port 25 avec iptables
# Il est inutile d'appliquer cette règle pour ma propre configuration de Exim puisque pour le moment, l'utilisation d'un SMTP externe ne fonctionnant pas. # De plus, les mails sortent déjà, sans avoir à appliquer une autorisation sur le port 25.
# Ajouter cette règle iptables semble écraser les autres règles. # Créer le fichier qui va contenir les règles iptables. sudo nano /etc/iptables.firewall.rules
# Ajouter les lignes suivantes : *filter # Autoriser l'accès SMTP. # Vérifier que la nouvelle règle est prise en compte avec sudo iptables -L # La ligne suivante doit être affichée : ACCEPT tcp -- anywhere anywhere tcp dpt:smtp -A INPUT -p tcp --dport 25 -j ACCEPT COMMIT
# Activer la règle. sudo iptables-restore < /etc/iptables.firewall.rules
Appliquer le changement sans passer par une règle
# Pour ne pas écraser les autres règles, ajouter ou retirer cette règle en une seule ligne depuis le terminal.
# Ouvrir le port 25 iptables -A INPUT -p tcp -m tcp --dport 7777 -j ACCEPT
# Fermer le port 25 iptables -D INPUT -p tcp -m tcp --dport 7777 -j ACCEPT
Configurer SPF
# SPF par défaut de OVH. # SPF du domaine visionduweb.fr visionduweb.fr. 600 SPF "v=spf1 include:mx.ovh.com ~all"
# Vérifier le score du mail utilisé pour envoyer des messages. # Des propositions sont retournées pour améliorer la configuration. http://www.mail-tester.com
# Lancer le test en envoyant un mail à mail tester. mail -s "Hello World !" -r contacter@visionduweb.fr test-11c5p@mail-tester.com < /dev/null
SPF filtering
# SPF filtering : https://wiki.debian.org/Exim#SPF_filtering
SpamAssassin pense que vous pouvez vous améliorer -4.2
-1.985 PYZOR_CHECK Similar message reported on Pyzor (http://pyzor.org) https://pyzor.readthedocs.io/en/latest/ Assurez-vous de tester avec un contenu réel, les Newsletters tests seront toujours détectées par Pyzor Ajustez votre message ou demandez à être whitelisté (http://public.pyzor.org/whitelist/) -1.274 RDNS_NONE Delivered to internal network by a host with no rDNS Vérifiez que vous avez un rDNS rattaché à votre hostname et que ce rDNS correspond à l'IP du serveur d'envoi -0.972 SPF_SOFTFAIL SPF: sender does not match SPF record (softfail)
Vous n'êtes pas autorisé à utiliser l'une de vos adresses e-mail d'envois -4
[SPF] visionduweb.fr n'autorise pas votre serveur 139.99.173.195 à utiliser contacter@visionduweb.fr -3
# Sender Policy Framework (SPF) est un système de validation d'e-mail conçu pour empêcher le spammage en détectant l'usurpation d'adresse e-mail, une vulnérabilité classique, en vérifiant les adresses IP de l'expéditeur. # Ce que nous avons retenu comme votre enregistrement SPF actuel est : v=spf1 include:mx.ovh.com ~all
# Cela devrait être changé en : v=spf1 include:mx.ovh.com ip4:139.99.173.195 ~all
The Name Server handling the domain name visionduweb.fr is ns109.ovh.net.
# Plus d'information à propos de cette erreur : visionduweb.fr: Sender is not authorized by default to use 'contacter@visionduweb.fr' in 'mfrom' identity, however domain is not currently prepared for false failures (mechanism '~all' matched)
# Détails de la vérification : dig +short TXT visionduweb.fr : "v=spf1 include:mx.ovh.com ~all" dig +short TXT @ns109.ovh.net. visionduweb.fr : "v=spf1 include:mx.ovh.com ~all" spfquery --scope mfrom --id contacter@visionduweb.fr --ip 139.99.173.195 --helo-id vps178370.vps.ovh.ca : softfail visionduweb.fr: Sender is not authorized by default to use 'contacter@visionduweb.fr' in 'mfrom' identity, however domain is not currently prepared for false failures (mechanism '~all' matched) visionduweb.fr: Sender is not authorized by default to use 'contacter@visionduweb.fr' in 'mfrom' identity, however domain is not currently prepared for false failures (mechanism '~all' matched) Received-SPF: softfail (visionduweb.fr: Sender is not authorized by default to use 'contacter@visionduweb.fr' in 'mfrom' identity, however domain is not currently prepared for false failures (mechanism '~all' matched)) receiver=ns303428.ip-94-23-206.eu; identity=mailfrom; envelope-from="contacter@visionduweb.fr"; helo=vps178370.vps.ovh.ca; client-ip=139.99.173.195
[SPF] visionduweb.com n'autorise pas votre serveur 139.99.173.195 à utiliser g2pc@visionduweb.com
Sender Policy Framework (SPF) est un système de validation d'e-mail conçu pour empêcher le spammage en détectant l'usurpation d'adresse e-mail, une vulnérabilité classique, en vérifiant les adresses IP de l'expéditeur.
Vous n'avez pas d'enregistrement SPF, s'il vous plaît ajouter le suivant à votre domaine visionduweb.com : v=spf1 a mx ip4:139.99.173.195 ~all
The Name Server handling the domain name visionduweb.com is ns2.sivit.org.
Votre message n'est pas signé avec DKIM -1
DomainKeys Identified Mail (DKIM) est une méthode permettant d'associer un nom de domaine à un message e-mail, ce qui permet à une personne, une organisation de revendiquer certaines responsabilités pour le message.
DKIM DMARC
Introduction à SPF DKIM DMARC
Le nombre de messages non sollicités envoyés chaque jour reste relativement élevé, malgré les nombreuses tentatives de création d'outils anti-spam.
SPF (Sender Policy Framework) est une entrée de texte DNS qui affiche une liste de serveurs qui devraient être considérés comme autorisés à envoyer du courrier pour un domaine spécifique. Les propriétaires / administrateurs sont les seules personnes autorisées à ajouter / modifier cette zone de domaine principal.
DKIM (DomainKeys Identified Mail) doit plutôt être considéré comme une méthode permettant de vérifier que le contenu des messages est digne de confiance, ce qui signifie qu'ils n'ont pas été modifiés depuis le moment où le message a quitté le serveur de messagerie initial. Cette couche supplémentaire de fiabilité est obtenue par la mise en œuvre du processus de signature standard de clé publique / privée. Une fois encore, les propriétaires du domaine ajoutent une entrée DNS avec la clé publique DKIM qui sera utilisée par les destinataires pour vérifier que la signature du message DKIM est correcte, tandis que le côté expéditeur du serveur signera les messages avec la clé privée correspondante.
DMARC (authentification, rapports et conformité des messages basés sur le domaine) habilite SPF et DKIM en énonçant une stratégie claire qui doit être utilisée pour les deux outils.
Implémenter DKIM avec EXIM
Liens complémentaires
https://www.adampalmer.me/iodigitalsec/2014/07/11/exim-dkim-and-debian-configuration/ https://debian-administration.org/article/718/DKIM-signing_outgoing_mail_with_exim4 https://www.obstance.com/ubuntu/dkim-on-multiple-domains-with-exim4/ https://debian-administration.org/article/721/Validating_SPF_and_DKIM_at_SMTP-time_with_exim
Implémenter DMARC avec EXIM
Liens complémentaires
https://debian-administration.org/article/720/Tying_together_SPF_and_DKIM_with_DMARC
X-Exim-DSN-Information: Due to administrative limits only headers are returned
# Un mail en erreur est retourné avec le message : X-Exim-DSN-Information: Due to administrative limits only headers are returned
# Le message est peut être trop grand ou mal formé. # Configurer SPF et DKIM pourrait corriger ce problème. # Les logs de EXIM informent : 1jGTMg-0003QT-AM ** mail@visionduweb.com R=dnslookup T=remote_smtp: message is too big (transport limit = 1) Warning: No server certificate defined; will use a selfsigned one. Suggested action: either install a certificate or change tls_advertise_hosts option 1jGTMg-0003QX-Ka <= <> R=1jGTMg-0003QT-AM U=Debian-exim P=local S=1787 1jGTMg-0003QT-AM Completed Warning: No server certificate defined; will use a selfsigned one. Suggested action: either install a certificate or change tls_advertise_hosts option
# Cela signifie qu'une limite de LIGNE maximale de 998 caractères a été atteinte # Ajouter la ligne suivante dans la configuration : IGNORE_SMTP_LINE_LENGTH_LIMIT = 1 # Ajouter la ligne à la fin du fichier existant : sudo bash /etc/exim4/update-exim4.conf.conf # Préférer l'ajout de la ligne dans un nouveau fichier de configuration complémentaire : sudo bash nano /etc/exim4/exim4.conf.localmacros
# Redémarrer Exim.
# Le mail arrivera correctement.
Changer le mail utilisé sur les différents services du serveur
Définir une adresse mail qui sera utilisée par le serveur
# Le compte mail utilisé pour les services du serveur : # Utiliser postmaster@domain.ext n'est pas un bon choix, car, les MTA n'aiment pas cette adresse qui pourrait entraîner une diminution dans la confiance du domaine. # Définir une adresse mail qui devra être utilisé par tous les services du VPS ou du serveur dédié, pour les alertes de sécurité, les tâches de maintenance ...
Identifier les services configurés avec un mail connu
# Identifier les services configurés avec un mail connu : sudo -s grep -r mail@domain.ext ./ # Pour ne pas afficher la ligne mais son numéro : # sudo grep -rn ./ -e 'mail@domain.ext'
# Pour Exim : etc/exim4/exim4.conf.template:root@* mail@domain.ext FfrsTtcb
# Pour le serveur : etc/aliases:root: mail@domain.ext etc/email-addresses:root:mail@domain.ext
# Pour Logwatch : etc/cron.daily/00logwatch:/usr/sbin/logwatch --mailto mail@domain.ext --detail high
# Pour Logrotate : etc/logrotate.conf:mail mail@domain.ext etc/logrotate.d/iptables: # echo "Commencement de la rotation Iptables : $(date)" | mail -s "Commencement de la rotation Iptables depuis le serveur." mail@domain.ext etc/logrotate.d/iptables: mail mail@domain.ext etc/logrotate.d/iptables: # echo "Fin de la rotation Iptables : $(date)" | mail -s "Fin de la rotation Iptables depuis le serveur." mail@domain.ext
# Le mail indiqué dans chaque Les VirtualHosts.
# Le mail indiqué dans Joomla, WordPress, Mediawiki ... # Le mail indiqué dans Gitea : sudo nano /etc/gitea/app.ini # Le mail indiqué dans Redmine : Administration / Émetteur des notifications
# Pour PHP : Le fichier de configuration de php, "php.ini". Les scripts PHP personnalisés, ceux pour la page erreur 403 ...
# Les autres références au mail : pubkey.txt
# Les autres services à vérifier ... Fail2ban est basé sur sendmail lui même basé sur Exim4. DenyHosts qui utilise "root@localhost", le système de notification ne semble pas encore au point.
Bibliographie
Tutoriels pour Exim
Installer et configurer exim4 en relai smarthost : https://www.memoinfo.fr/tutoriels-linux/installer-exim-relai-smarthost/
Consulter le manuel Exim sur le wiki de Debian : https://wiki.debian.org/Exim Consulter la FAQ Exim sur le wiki de Debian : https://wiki.debian.org/PkgExim4UserFAQ Specification of the Exim MailTransfer Agent (543 pages) : https://www.exim.org/exim-pdf-current/doc/spec.pdf
Configurer Exim, un serveur de mails sous Debian : https://recordma.wordpress.com/2013/12/23/configurer-exim-un-serveur-de-mails-sous-debian/ HOW TO SEND E-MAIL THROUGH SHELL USING EXIM4 : http://mewbies.com/how_to_setup_exim_mail_transfer_agent_for_linux_tutorial.htm Configuration d'exim4 avec Gmail : http://dev.petitchevalroux.net/linux/configuration-exim4-avec-gmail-linux.19.html Welcome to the Ubuntu Server Guide : https://help.ubuntu.com/lts/serverguide/exim4.html.en TLS and authentication : https://wiki.debian.org/Exim#Things_you_might_want_to_configure
NAVIGATION
PARTICIPER ET PARTAGERBienvenue sur le wiki de Amis SH. De nombreuses pages sont partagées sur ce wiki. Créer un compte utilisateur pour participer sur le wiki. Les pages présentées sur le wiki évoluent tous les jours. Certaines recherches sont peu abouties et incluent des erreurs. Utiliser la recherche interne du wiki pour trouver votre contenu. La page de discussion de Amis SH vous permet de poser vos questions. Consulter le site amis-sh.fr pour installer votre propre serveur web. Améliorer le contenu des pages avec vos retours depuis l'onglet discussion. Ce contenu ne doit pas servir à nuire à autrui ou à un système informatique. Protéger votre système Linux ou Windows avec cette page dédiée à la sécurité. |
SOUTENIR CE WIKISoutenir le wiki avec un don en monnaie numérique : AEON - Bitcoins - Bitcoins Cash - Bitcoins Gold - Bitcore - Blackcoins - Basic Attention Token - Bytecoins - Clams - Dash - Monero - Dogecoins - Ğ1 - Ethereum - Ethereum Classique - Litecoins - Potcoins - Solarcoins - Zcash OBTENIR DE LA MONNAIE NUMERIQUEObtenir gratuitement de la monnaie numérique : Miner de la cryptomonnaie. |