# Installation d'un serveur de courrier basique Debian installe par défaut **exim4**. Nous allons le remplacer par postfix (que nous étendrons par la suite pour obtenir un serveur de mail complet) Il faut penser à ouvrir les ports 25 en IPV4 et IPV6 avec **firewalld**. ## Installation pi@raspberrypi:~ $ sudo apt install postfix Lecture des listes de paquets... Fait Construction de l'arbre des dépendances Lecture des informations d'état... Fait Les paquets suivants ont été installés automatiquement et ne sont plus nécessaires : libgnutls-dane0 libunbound8 Veuillez utiliser « sudo apt autoremove » pour les supprimer. Les paquets supplémentaires suivants seront installés : ssl-cert Paquets suggérés : procmail postfix-mysql postfix-pgsql postfix-ldap postfix-pcre postfix-lmdb postfix-sqlite sasl2-bin | dovecot-common postfix-cdb ufw postfix-doc openssl-blacklist Les paquets suivants seront ENLEVÉS : exim4-base exim4-config exim4-daemon-light Les NOUVEAUX paquets suivants seront installés : postfix ssl-cert 0 mis à jour, 2 nouvellement installés, 3 à enlever et 0 non mis à jour. Il est nécessaire de prendre 1 423 ko dans les archives. Après cette opération, 0 o d'espace disque supplémentaires seront utilisés. Souhaitez-vous continuer ? [O/n] o Réception de :1 http://ftp.igh.cnrs.fr/pub/os/linux/raspbian/raspbian buster/main armhf postfix armhf 3.4.14-0+deb10u1 [1 402 kB] Réception de :2 http://mirrors.ircam.fr/pub/raspbian/raspbian buster/main armhf ssl-cert all 1.0.39 [20,8 kB] 1 423 ko réceptionnés en 3s (524 ko/s) Préconfiguration des paquets... dpkg: exim4-daemon-light : problème de dépendance, mais suppression comme demandé : logwatch dépend de default-mta | mail-transport-agent ; cependant : Le paquet default-mta n'est pas installé. Le paquet exim4-daemon-light qui fournit default-mta doit être supprimé. Le paquet mail-transport-agent n'est pas installé. Le paquet exim4-daemon-light qui fournit mail-transport-agent doit être supprimé. logwatch dépend de default-mta | mail-transport-agent ; cependant : Le paquet default-mta n'est pas installé. Le paquet exim4-daemon-light qui fournit default-mta doit être supprimé. Le paquet mail-transport-agent n'est pas installé. Le paquet exim4-daemon-light qui fournit mail-transport-agent doit être supprimé. (Lecture de la base de données... 46982 fichiers et répertoires déjà installés.) Suppression de exim4-daemon-light (4.92-8+deb10u4) ... dpkg: exim4-config : problème de dépendance, mais suppression comme demandé : exim4-base dépend de exim4-config (>= 4.82) | exim4-config-2 ; cependant : Le paquet exim4-config doit être supprimé. Le paquet exim4-config-2 n'est pas installé. Le paquet exim4-config qui fournit exim4-config-2 doit être supprimé. exim4-base dépend de exim4-config (>= 4.82) | exim4-config-2 ; cependant : Le paquet exim4-config doit être supprimé. Le paquet exim4-config-2 n'est pas installé. Le paquet exim4-config qui fournit exim4-config-2 doit être supprimé. Suppression de exim4-config (4.92-8+deb10u4) ... Sélection du paquet postfix précédemment désélectionné. (Lecture de la base de données... 46922 fichiers et répertoires déjà installés.) Préparation du dépaquetage de .../postfix_3.4.14-0+deb10u1_armhf.deb ... Dépaquetage de postfix (3.4.14-0+deb10u1) ... (Lecture de la base de données... 47112 fichiers et répertoires déjà installés.) Suppression de exim4-base (4.92-8+deb10u4) ... Sélection du paquet ssl-cert précédemment désélectionné. (Lecture de la base de données... 47038 fichiers et répertoires déjà installés.) Préparation du dépaquetage de .../ssl-cert_1.0.39_all.deb ... Dépaquetage de ssl-cert (1.0.39) ... Paramétrage de ssl-cert (1.0.39) ... Paramétrage de postfix (3.4.14-0+deb10u1) ... Ajout du groupe « postfix » (GID 118)... Fait. Ajout de l'utilisateur système « postfix » (UID 112) ... Ajout du nouvel utilisateur « postfix » (UID 112) avec pour groupe d'appartenance « postfix » ... Le répertoire personnel « /var/spool/postfix » n'a pas été créé. Creating /etc/postfix/dynamicmaps.cf Ajout du groupe « postdrop » (GID 119)... Fait. setting myhostname: raspberrypi setting alias maps setting alias database changing /etc/mailname to yojik.net setting myorigin setting destinations: $myhostname, yojik.net, raspberrypi, localhost.localdomain, localhost setting relayhost: setting mynetworks: 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 setting mailbox_size_limit: 0 setting recipient_delimiter: + setting inet_interfaces: all setting inet_protocols: all WARNING: /etc/aliases exists, but does not have a root alias. Postfix (main.cf) is now set up with a default configuration. If you need to make changes, edit /etc/postfix/main.cf (and others) as needed. To view Postfix configuration values, see postconf(1). After modifying main.cf, be sure to run 'service postfix reload'. Running newaliases Created symlink /etc/systemd/system/multi-user.target.wants/postfix.service → /lib/systemd/system/postfix.service. Traitement des actions différées (« triggers ») pour systemd (241-7~deb10u6+rpi1) ... Traitement des actions différées (« triggers ») pour man-db (2.8.5-2) ... Traitement des actions différées (« triggers ») pour rsyslog (8.1901.0-1) ... pi@raspberrypi:~ $ ## Suppression complète de **exim4** On supprime complètement **exim4**, fichiers de configuration inclus. pi@raspberrypi:~ $ sudo apt remove --purge exim4* Lecture des listes de paquets... Fait Construction de l'arbre des dépendances Lecture des informations d'état... Fait Note : sélection de exim4-base pour l'expression rationnelle « exim4* » Note : sélection de exim4-config-2 pour l'expression rationnelle « exim4* » Note : sélection de exim4-doc-info pour l'expression rationnelle « exim4* » Note : sélection de exim4-daemon-light pour l'expression rationnelle « exim4* » Note : sélection de exim4-daemon-heavy pour l'expression rationnelle « exim4* » Note : sélection de exim4-daemon-custom pour l'expression rationnelle « exim4* » Note : sélection de exim4-config pour l'expression rationnelle « exim4* » Note : sélection de exim4-doc-html pour l'expression rationnelle « exim4* » Note : sélection de exim4-localscanapi-2.0 pour l'expression rationnelle « exim4* » Note : sélection de exim4-dev pour l'expression rationnelle « exim4* » Note : sélection de exim4 pour l'expression rationnelle « exim4* » Le paquet « exim4-daemon-custom » n'est pas installé, et ne peut donc être supprimé Note : sélection de « exim4-config » au lieu de « exim4-config-2 » Le paquet « exim4 » n'est pas installé, et ne peut donc être supprimé Le paquet « exim4-daemon-heavy » n'est pas installé, et ne peut donc être supprimé Le paquet « exim4-dev » n'est pas installé, et ne peut donc être supprimé Le paquet « exim4-doc-html » n'est pas installé, et ne peut donc être supprimé Le paquet « exim4-doc-info » n'est pas installé, et ne peut donc être supprimé Les paquets suivants ont été installés automatiquement et ne sont plus nécessaires : libgnutls-dane0 libunbound8 Veuillez utiliser « sudo apt autoremove » pour les supprimer. Les paquets suivants seront ENLEVÉS : exim4-base* exim4-config* exim4-daemon-light* 0 mis à jour, 0 nouvellement installés, 3 à enlever et 0 non mis à jour. Après cette opération, 0 o d'espace disque supplémentaires seront utilisés. Souhaitez-vous continuer ? [O/n] o (Lecture de la base de données... 47047 fichiers et répertoires déjà installés.) Purge des fichiers de configuration de exim4-base (4.92-8+deb10u4) ... Purge des fichiers de configuration de exim4-config (4.92-8+deb10u4) ... dpkg-statoverride: avertissement: pas de dérogation (« override ») présente Purge des fichiers de configuration de exim4-daemon-light (4.92-8+deb10u4) ... Traitement des actions différées (« triggers ») pour systemd (241-7~deb10u6+rpi1) ... pi@raspberrypi:~ $ ## Ouverture des ports 25 Ajout du protocole **smtp** à notre zone. ### Liste des services disponibles pi@piras:~ $ sudo firewall-cmd --get-services RH-Satellite-6 amanda-client amanda-k5-client amqp amqps apcupsd audit bacula bacula-client bgp bitcoin bitcoin-rpc bitcoin-testnet bitcoin-testnet-rpc ceph ceph-mon cfengine cockpit condor-collector ctdb dhcp dhcpv6 dhcpv6-client distcc dns docker-registry docker-swarm dropbox-lansync elasticsearch etcd-client etcd-server finger freeipa-ldap freeipa-ldaps freeipa-replication freeipa-trust ftp ganglia-client ganglia-master git gre high-availability http https imap imaps ipp ipp-client ipsec irc ircs iscsi-target isns jenkins kadmin kerberos kibana klogin kpasswd kprop kshell ldap ldaps libvirt libvirt-tls lightning-network llmnr managesieve matrix mdns minidlna mongodb mosh mountd mqtt mqtt-tls ms-wbt mssql murmur mysql nfs nfs3 nmea-0183 nrpe ntp nut openvpn ovirt-imageio ovirt-storageconsole ovirt-vmconsole plex pmcd pmproxy pmwebapi pmwebapis pop3 pop3s postgresql privoxy proxy-dhcp ptp pulseaudio puppetmaster quassel radius redis rpc-bind rsh rsyncd rtsp salt-master samba samba-client samba-dc sane sip sips slp smtp smtp-submission smtps snmp snmptrap spideroak-lansync squid ssh steam-streaming svdrp svn syncthing syncthing-gui synergy syslog syslog-tls telnet tftp tftp-client tinc tor-socks transmission-client upnp-client vdsm vnc-server wbem-http wbem-https wsman wsmans xdmcp xmpp-bosh xmpp-client xmpp-local xmpp-server zabbix-agent zabbix-server pi@piras:~ $ Le protocole qui nous intéresse est : **smtp** ### Ajout du service smtp pi@piras:~ $ sudo firewall-cmd --permanent --zone=public --add-service=smtp success pi@piras:~ $ Il faut recharger **firewalld** pour que ce soit pris en compte. pi@piras:~ $ sudo systemctl restart firewalld pi@piras:~ $ Dans mon cas, j'ai été obligé de redémarrer le serveur pour que ce soit pris en compte: pas d'explication ... mais comme ça, ça marche! ### Vérification pi@piras:~ $ sudo firewall-cmd --list-all public (active) target: default icmp-block-inversion: no interfaces: eth0 sources: services: dhcpv6-client smtp ssh ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules: pi@piras:~ $ ## Installation des utilitaire courriers pi@raspberrypi:~ $ sudo apt install mailutils Lecture des listes de paquets... Fait Construction de l'arbre des dépendances Lecture des informations d'état... Fait mailutils est déjà la version la plus récente (1:3.5-4). mailutils passé en « installé manuellement ». Les paquets suivants ont été installés automatiquement et ne sont plus nécessaires : libgnutls-dane0 libunbound8 Veuillez utiliser « sudo apt autoremove » pour les supprimer. 0 mis à jour, 0 nouvellement installés, 0 à enlever et 0 non mis à jour. pi@raspberrypi:~ $ Ils étaient déjà installés. ## Test d'envoi de courriers entre comptes internes. * pi-> root Les commandes suivantes permettent de : * envoyer un message à **root**(Essai 1) pi@raspberrypi:~ $ mail root Cc: Subject: Essai1 Essai 1 . pi@raspberrypi:~ $ * passer **root** pi@raspberrypi:~ $ sudo /bin/bash root@raspberrypi:/home/pi# * lancer **mutt** root@raspberrypi:/home/pi# mutt 1 gardé(s), 0 effacé(s). root@raspberrypi:/home/pi# ![image de mutt](Images/Capture%20d’écran%20de%202021-02-14%2019-11-39.png) * root -> pi root@raspberrypi:/home/pi# mail pi Cc: Subject: Essai 2 . root@raspberrypi:/home/pi# exit Vous avez du nouveau courrier dans /var/mail/pi pi@raspberrypi:~ $ mutt 3 gardé(s), 0 effacé(s). pi@raspberrypi:~ $ Nous avions 2 messages avant: le nouveau message est bien arrivé ! ## Configuration de **postfix** Il nous faut configurer **postfix** pour permettre l'envoi de courriers à l'extérieur et en recevoir de l'extérieur. Pour cela, il nous faut modifier le fichier **/etc/postfix/main.cf** Modifiez la ligne **mydestination** pour qu'elle ressemble à ce qui suit : > mydestination = $myhostname, yojik.net, atom.yojik.net, localhost.yojik.net, localhost et relancez **postfix** avec la commande suivante : > sudo service postfix restart ### Courriers sortants Envoi d'un message sur mon compte de messagerie gmail (oui, un envoi sur mon compte normal ne fonctionne pas dû à sa configuration): pi@piras:~$ echo "Et voilà un petit message" | mail -s "test du courrier sortant" ericounet26200@gmail.com Le message est bien reçu et dans les courriers indésirables, bien entendu (pas de dkim, spf, dnnssec, etc.) ### Courriers entrants Envoi d'un message à partir de mon adresse de courrier normale : Message bien reçu (après mise à jour de mon serveur DNS). ![Mutt](Images/Capture%20d’écran%20de%202021-02-15%2004-59-28.png) ## Amélioration de la gestion du courrier Nous allons transférer les mails destinés à **root** vers l'utilisateur **pi**. Ainsi que d'autres adresses de courrier standards. Pour cela, nous allons modifier le fichier **/etc/aliases**, le compiler pour être digeste par **postfix** et relancer **postfix**. Ce fichier sert à rediriger toutes les adresses émail comme **abuse**, **webmaster**, **root** vers un utilisateur **administrateur** de la machine, root puis vers moi **ericadmin**. # /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: pi Il faut lancer la commande **newaliases** pour générer le fichier.db utile à Postfix et on demande à Postfix de recharger ses fichiers. pi@piras:~ $ sudo newaliases pi@piras:~ $ On relance **postfix** : pi@piras:~ $ sudo systemctl restart postfix pi@piras:~ $ Et on teste (envoi d'un courrier à root@piras.yojik.net) ![Transfert](Images/Capture%20d’écran%20de%202021-02-15%2005-07-49.png) Et voilà, notre serveur de courrier est fonctionnel. ## Protection par Fail2ban Nous devons ajouter la surveillance du mail par **fail2ban**. Editons le fichier /etc/fail2ban/jail.d/defaults-debian.conf pour y ajouter la surveillance de postfix (port smtp : 25.) Nous prenons l'exemple fourni dans **/etc/fail2ban/jail.conf** et ne gardons que le port 25. Voilà la partie modifiée à ajouter : [postfix] mode = more port = smtp logpath = %(postfix_log)s backend = %(postfix_backend)s Relançons le service pour que nos modifications soient prises en compte: pi@piras:~ $ sudo systemctl reload fail2ban pi@piras:~ $