Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
pratique:informatique:mail:serveur_mail2 [21/09/2024 20:01] – [master.cf] Zatalyzpratique:informatique:mail:serveur_mail2 [04/06/2026 10:20] (Version actuelle) – [Dovecot] Zatalyz
Ligne 2: Ligne 2:
 ===== Pas à pas ===== ===== Pas à pas =====
 <WRAP center round todo 60%> <WRAP center round todo 60%>
-Version en travail reprenant les points clés vu dans les divers tutos et adaptés à ma propre façon de fonctionner.+<del>Version en travail</del> reprenant les points clés vu dans les divers tutos et adaptés à ma propre façon de fonctionner. 
 + 
 +Voir [[pratique:informatique:mail:serveur_mail3]] parce que j'ai changé d'idée plusieurs fois, je repart de zéro !!!
 </WRAP> </WRAP>
  
Ligne 28: Ligne 30:
 poste.example.org.  IN  A  a.b.c.d poste.example.org.  IN  A  a.b.c.d
 poste.example.org.  IN  AAAA  2001:a::b poste.example.org.  IN  AAAA  2001:a::b
-example.org.  IN  MX  10 mail.example.org.+example.org.  IN  MX  10 poste.example.org.
 </code> </code>
  
Ligne 47: Ligne 49:
 L'un et l'autre doivent donner le nom de domaine configuré pour les ip en question. Le "@9.9.9.9" à la fin permet de passer par l'extérieur, si on teste en local sur un ordi local, dig ne retourne rien... L'un et l'autre doivent donner le nom de domaine configuré pour les ip en question. Le "@9.9.9.9" à la fin permet de passer par l'extérieur, si on teste en local sur un ordi local, dig ne retourne rien...
  
 +<WRAP center round info 60%>
 +=== IPV6 et fournisseurs ===
 +La gestion d'ipv6 dépend entièrement du bon vouloir du fournisseur. Pas évident de savoir en amont, sauf à déjà avoir des machines chez ce fournisseur et accès à l'interface d'administration. 
 +
 +Quand on monte un serveur mail en local, cela dépend du FAI, mais aussi des capacités de la box. 
 +  * Chez OVH, ma box (jamais remplacée et assez vieille) ne permettais pas de faire de l'ipv6, mais l'interface web d'OVH le prenait en compte ; c'est donc sans doute ok à présent ? 
 +  * Chez Free, la box ne le gère pas non plus et ça reste un problème relevé sur les forums en 2026. De toute façon, les IP de Free seront résidentielles, et cela garantit une déliverabilité très mauvaise...
 +</WRAP>
  
 ===== Ports et nftables ===== ===== Ports et nftables =====
Ligne 71: Ligne 81:
  
 On ouvre les ports sur le proxy quand tout le reste est fini... On ouvre les ports sur le proxy quand tout le reste est fini...
 +
 +<WRAP center round info 100%>
 +Avec la config paramétrée dans [[pratique:informatique:parefeu:nftables|nftables]], ce qu'il faut modifier/surveiller : 
 +  * ''/etc/nftables.d/30-fight.nft'' : Protection contre le SMTP/Email Bombing, vérifier si ça ne bloque pas des serveurs légitimes.
 +  * ''/etc/nftables.d/40-confperso.nft'' : Autoriser en entrée ''80, 443, 25, 587, 993, 4190'' (encore que les deux premiers, uniquement si on a des outils de gestion web sur le serveur même ? mais c'est mon cas...)).
 +  * ''/etc/nftables.d/50-output.nft'' : Autoriser en sortie ''25, 465, 587'' (TODO : J'ai un petit doute sur SIEVE, on vérifiera...).
 +</WRAP>
  
 ===== Vérifier l'host ===== ===== Vérifier l'host =====
Ligne 105: Ligne 122:
   * dovecot-managesieved : permet aux utilisateurs de définir leurs règles de filtre.    * dovecot-managesieved : permet aux utilisateurs de définir leurs règles de filtre. 
  
-La chasse aux spams se fera avec rspamd, un logiciel tiers qui traite les spams. Il gère aussi la signature automatique des clés de domaine (DKIM).+La chasse aux spams se fera avec <del>rspamd, un logiciel tiers qui traite les spams. Il gère aussi la signature automatique des clés de domaine (DKIM)</del> 
 + 
 +<WRAP center round help 60%> 
 +Rspamd est certes plebiscité mais... j'ai des misères à le faire tourner, et puis ça m'agace qu'il fasse "tout" (je préfère le KISS). Je ne veux pas que si rspamd plante, ça fasse foirer la signature DKIM... La solution Spamassassin+Opendkim est sans doute plus adaptée. Je vais quand même refaire des tests avec les deux et voir. Par ailleurs j'ai fait un test avec Modoboa (tout compris !) et rspamd consommait bien plus de mémoire "à vide" que Spamassassin+Amavis+Opendkim... 
 + 
 +La chasse au spam reste donc un point en suspens pour le moment, attendant plus d'expérimentations, mais je vais plutôt vers la solution SpamAssassin. 
 +</WRAP> 
  
 Mariadb ne sert qu'à stocker les utilisateurs donc très peu de données, sa perfomance ne sera pas un souci. Je vais avoir la surcouche graphique avec [[https://github.com/postfixadmin/postfixadmin|Postfixadmin]], qui permettra à mes utilisateurs de gérer leurs propres alias et mot de passe. Mariadb ne sert qu'à stocker les utilisateurs donc très peu de données, sa perfomance ne sera pas un souci. Je vais avoir la surcouche graphique avec [[https://github.com/postfixadmin/postfixadmin|Postfixadmin]], qui permettra à mes utilisateurs de gérer leurs propres alias et mot de passe.
Ligne 117: Ligne 141:
 Le certificat SSL sera géré avec certbot, classique et fonctionnel. Le certificat SSL sera géré avec certbot, classique et fonctionnel.
  
-On va avoir un peu d'apache pour quelques outils visuels de gestion (adminer, rspamd). +On va avoir un peu d'apache pour quelques outils visuels de gestion (adminer, rspamd?, postfixadmin). 
  
 Finalement :  Finalement : 
Ligne 131: Ligne 155:
  
 Mon apt est configuré pour ne pas installer par défaut les recommandés et suggérés, ce qui demande de voir la liste et de compléter au besoin. Ici, à installer en complément pour se simplifier la vie : Mon apt est configuré pour ne pas installer par défaut les recommandés et suggérés, ce qui demande de voir la liste et de compléter au besoin. Ici, à installer en complément pour se simplifier la vie :
-  sudo apt install shared-mime-info xdg-user-dirs php-curl php-gd +  sudo apt install shared-mime-info xdg-user-dirs php-curl php-gd php-cli 
-  + 
 + 
 +<WRAP center round help 60%> 
 +Par ailleurs, il faudrait que je gère un chouïa mieux DMARC. C'est paramétré mais :  
 +  * Je n'envoie pas de rapports en retour (c'est une mauvaise pratique, il faudrait que je le fasse) 
 +  * Je n'analyse pas les rapports DMARC reçus (du coup quand il y a un souci, je m'en rends compte tardivement).  
 + 
 +[[https://github.com/liuch/dmarc-srg|Dmarc-srg]] semble plutôt sympa sur l'analyse des rapports. En bonus, il se connecte en imap donc peut être installé sur une autre machine sans aucun souci.  
 + 
 +[[https://github.com/trusteddomainproject/OpenDMARC|OpenDmarc]] (référence sur le sujet) génère les rapports à envoyer aux autres admins. Ça semble une sacré usine à gaz, probablement assez lourd. À voir et tester, mais... jusqu'ici, ne pas envoyer les rapports ne me fait pas "jeter" non plus. Par ailleurs cela demande que les milters aient vérifié SPF et DKIM (ce qui, de toute façon, serait mieux...). Opendkim gère DKIM, pour SPF voir le milter policyd-spf peut-être. 
 +</WRAP> 
 + 
 et enfin (parce qu'il est un chouïa pénible sinon) et enfin (parce qu'il est un chouïa pénible sinon)
   sudo apt install rkhunter   sudo apt install rkhunter
Ligne 145: Ligne 181:
 ===== Un peu de web ===== ===== Un peu de web =====
 Avec Apache, parce que je le connais, mais vu ce qu'il y a à faire, Nginx suffira aussi. Ou Lighttpd. Faites votre vie, adaptez. En vrai faudra que je vois à mettre Lighttpd qui serait parfait pour le job. Avec Apache, parce que je le connais, mais vu ce qu'il y a à faire, Nginx suffira aussi. Ou Lighttpd. Faites votre vie, adaptez. En vrai faudra que je vois à mettre Lighttpd qui serait parfait pour le job.
 +
 +<WRAP center round tip 60%>
 +Si on utilise Apache,  en profiter pour le sécuriser d'après https://khaganat.net/wikhan/fr:apache. 
 +</WRAP>
 +
  
 C'est plus pour voir si ça marche... et par la suite, si un bot (voir une vraie curieuse) regarde la page principale, y'aura un bout d'info. Actuellement je vais aussi servir Phpmyadmin (mais ce dernier va disparaitre une fois les bidouilles finies) et Postfixadmin, ceui-ci pouvant sans souci être sur un autre serveur (et ce serait peut-être mieux !). C'est plus pour voir si ça marche... et par la suite, si un bot (voir une vraie curieuse) regarde la page principale, y'aura un bout d'info. Actuellement je vais aussi servir Phpmyadmin (mais ce dernier va disparaitre une fois les bidouilles finies) et Postfixadmin, ceui-ci pouvant sans souci être sur un autre serveur (et ce serait peut-être mieux !).
Ligne 379: Ligne 420:
  
 Primo créer un user spécialement pour gérer les mails, et stocker ces derniers sur /var/vmail : Primo créer un user spécialement pour gérer les mails, et stocker ces derniers sur /var/vmail :
-  groupadd -g 5000 vmail +<code>groupadd --system vmail 
-  useradd -g vmail -u 5000 vmail -/var/vmail -m +useradd --system --gid vmail vmail 
-  chown -R vmail:vmail /var/vmail+mkdir -/var/vmail 
 +chown -R vmail:vmail /var/vmail 
 +chmod u=rwx,g=rx,o= /var/vmail</code> 
 + 
 +<WRAP center round info 100%> 
 +  * ''--system'' crée un utilisateur explicitement "système", spécialement réservé aux services et daemons. L'ID sera choisi automatiquement dans ce qui est dispo sur la plage réservée aux utilisateurs systèmes. 
 +</WRAP> 
  
 Ensuite on va modifier des fichiers. Veiller à ce que les lignes suivantes existent et soient commentés/décommentées comme indiqué. Ensuite on va modifier des fichiers. Veiller à ce que les lignes suivantes existent et soient commentés/décommentées comme indiqué.
Ligne 403: Ligne 451:
 </code> </code>
  
-On indique à Dovecot où sont réellement les boites mails, et d'utiliser les quotas.+On indique à Dovecot où sont réellement les boites mails, d'utiliser les quotas et de pouvoir lire les fichiers compressés.
 <code bash /etc/dovecot/conf.d/10-mail.conf> <code bash /etc/dovecot/conf.d/10-mail.conf>
 mail_location = maildir:/var/vmail/%d/%n/Maildir mail_location = maildir:/var/vmail/%d/%n/Maildir
-mail_plugins = quota+mail_plugins = quota zlib
 </code> </code>
  
-On ajoute aussi la compression avec imap, ce qui va économiser la bande passante :+On ajoute aussi quelques plugins sur imap afin d'améliorer les choses : 
 +  * la compression ([[https://doc.dovecot.org/2.3/settings/plugin/imap-zlib-plugin/|imap_zlib]]), ce qui va économiser la bande passante
 +  * l'affichage des quotas dans les clients qui le permettent ([[https://doc.dovecot.org/main/core/plugins/imap_quota.html|imap_quota]]) 
 +  * la gestion de sieve avec [[https://doc.dovecot.org/main/core/plugins/imap_sieve.html|imap_sieve]]
 <code bash /etc/dovecot/conf.d/20-imap.conf> <code bash /etc/dovecot/conf.d/20-imap.conf>
 protocol imap { protocol imap {
-  mail_plugins = $mail_plugins imap_zlib+  mail_plugins = $mail_plugins imap_zlib imap_quota imap_sieve
 } }
 </code> </code>
Ligne 418: Ligne 469:
 La suite, on lui dit comment gérer la partie authentification (en lien avec postfix), et puis on va activer des infos pour que le module de statistiques ne nous fasse pas d'erreurs. La suite, on lui dit comment gérer la partie authentification (en lien avec postfix), et puis on va activer des infos pour que le module de statistiques ne nous fasse pas d'erreurs.
 <code bash /etc/dovecot/conf.d/10-master.conf> <code bash /etc/dovecot/conf.d/10-master.conf>
 +# Pour l'imap
 +service imap-login {
 +  inet_listener imap {
 +  }
 +  inet_listener imaps {
 +  }
 +}
 +
 +# Si on veut utiliser pop3
 +service pop3-login {
 +  inet_listener pop3 {
 +  }
 +  inet_listener pop3s {
 +  }
 +}
 +service submission-login {
 +  inet_listener submission {
 +  }
 +}
 +
 # Pour utiliser lmtp, plus robuste que LDA dans la délivrance des mails # Pour utiliser lmtp, plus robuste que LDA dans la délivrance des mails
 # LMTP gère la réception et la livraison des e-mails dans les boîtes aux lettres. # LMTP gère la réception et la livraison des e-mails dans les boîtes aux lettres.
Ligne 426: Ligne 497:
     group = postfix     group = postfix
   }   }
-  [...]+
 +# Cette partie peut être remplie pour mettre des limites 
 +service imap { 
 +
 +service pop3 { 
 +
 +service submission { 
 +
 +service auth { 
 +  unix_listener auth-userdb { 
 +  }
   # Postfix smtp-auth (chercher ce morceau !)   # Postfix smtp-auth (chercher ce morceau !)
   # authentification SMTP via Dovecot SASL utilisé lors de l'envoi des mails   # authentification SMTP via Dovecot SASL utilisé lors de l'envoi des mails
Ligne 434: Ligne 515:
     group = postfix     group = postfix
   }   }
-  # Partie à ajouter +
-  # fix Error: net_connect_unix(/var/run/dovecot/stats-writer) failed: Permission denied))+service dict { 
 +  unix_listener dict { 
 +  } 
 +
 +# fix Error: net_connect_unix(/var/run/dovecot/stats-writer) failed: Permission denied))
 service stats { service stats {
     unix_listener stats-reader {     unix_listener stats-reader {
Ligne 486: Ligne 571:
  
 </code> </code>
 +
 +==== SIEVE ====
 +SIEVE permet de créer des règles de filtre sur le serveur et donc de trier automatiquement les emails sans lien avec le client courriel. Pratique quand on switche entre webmail et divers thunderbird. Snappymail permet de gérer ces filtres ; il y avait un module thunderbird mais actuellement indisponible.
  
 Activer la gestion de sieve via lmtp Activer la gestion de sieve via lmtp
Ligne 493: Ligne 581:
 } }
 </code> </code>
 +
 +Et indiquer que Sieve a le droit de marcher :
 +<code bash /etc/dovecot/conf.d/20-managesieve.conf>
 +protocols = $protocols sieve
 +
 +service managesieve-login {
 +  inet_listener sieve {
 +    port = 4190
 +  }
 +
 +  service_count = 1
 +}
 +</code>
 +
 +Relancer Dovecot, puis vérifier que les ports sont bien ouverts :
 +
 +<code>service dovecot restart
 +lsof -i :4190 -P</code>
 +
 +Cela devrait donner ce genre de retour
 +<code>
 +COMMAND    PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
 +dovecot 371602 root   15u  IPv4 487495      0t0  TCP *:4190 (LISTEN)
 +dovecot 371602 root   16u  IPv6 487496      0t0  TCP *:4190 (LISTEN)</code>
 +</WRAP>
 +
 +<WRAP center round todo 60%>
 +TODO : il va falloir ouvrir le port 4190 mais je garde ça sur la partie pare-feu.
 +</WRAP>
  
 ==== Quotas ==== ==== Quotas ====
Ligne 572: Ligne 689:
  
  
-Enfin, en dehors de ''conf.d'', il y a le fichier où indiquer les infos de connexion à la base de donnée. On ajoute ceci tout à la fin, en mettant les infos propres à chaque bdd/user/mot de passe :+Enfin, en dehors de ''conf.d'', il y a des fichiers où indiquer les infos de connexion à la base de donnée. On ajoute ceci tout à la fin, en mettant les infos propres à chaque bdd/user/mot de passe :
  
 <code bash /etc/dovecot/dovecot-sql.conf.ext> <code bash /etc/dovecot/dovecot-sql.conf.ext>
 ######### Modifs Postfixadmin ######### Modifs Postfixadmin
 driver = mysql driver = mysql
-connect = host=127.0.0.1 dbname=postfixadmin user=postfixadmin password=MOTDEPASSE+default_pass_scheme = BLF-CRYPT 
 +connect = host=127.0.0.1 dbname=postfixadmin user=postfixadmin password=MOT_DE_PASSE_A_CHANGER
 user_query = SELECT username as user, concat('*:bytes=', quota) AS quota_rule, '/var/vmail/%d/%n' AS home, 5000 AS uid, 5000 AS gid FROM mailbox WHERE username='%u' user_query = SELECT username as user, concat('*:bytes=', quota) AS quota_rule, '/var/vmail/%d/%n' AS home, 5000 AS uid, 5000 AS gid FROM mailbox WHERE username='%u'
-password_query = SELECT username,domain,password FROM mailbox WHERE username='%u'+password_query = SELECT password'%w' AS userdb_plain_passCONCAT('/home/vmail/', maildir) AS userdb_home, concat('*:bytes=', quota) AS userdb_quota_rule FROM mailbox WHERE username = '%u' AND domain = '%d' AND active
 iterate_query = SELECT username as user FROM mailbox WHERE active = '1' iterate_query = SELECT username as user FROM mailbox WHERE active = '1'
 +</code>
 +
 +C'est sans doute redondant de l'indiquer aussi dans ce fichier, mais dans le doute, je met (parce que là, ça marche, mais j'ai bidouillé de partout).
 +<code bash /etc/dovecot/dovecot-dict-sql.conf.ext>
 +connect = host=127.0.0.1 dbname=postfixadmin user=postfixadmin password=MOT_DE_PASSE_A_CHANGER
 +
 +# CREATE TABLE quota (
 +#   username varchar(100) not null,
 +#   bytes bigint not null default 0,
 +#   messages integer not null default 0,
 +#   primary key (username)
 +# );
 +
 +map {
 +  pattern = priv/quota/storage
 +  table = quota
 +  username_field = username
 +  value_field = bytes
 +}
 +map {
 +  pattern = priv/quota/messages
 +  table = quota
 +  username_field = username
 +  value_field = messages
 +}
 +
 </code> </code>
  
Ligne 588: Ligne 732:
 chgrp vmail /etc/dovecot/dovecot.conf chgrp vmail /etc/dovecot/dovecot.conf
 chmod g+r /etc/dovecot/dovecot.conf</code> chmod g+r /etc/dovecot/dovecot.conf</code>
-On va faire quelques tests... pour le moment c'est à root. Et ça semble aller. +On va faire quelques tests... pour le moment c'est à root. Et ça semble aller. Donc on ne touche pas.
 </WRAP> </WRAP>
  
Ligne 621: Ligne 765:
 $CONF['database_password'] = 'XXXX'; $CONF['database_password'] = 'XXXX';
 $CONF['database_name'] = 'postfixadmin'; $CONF['database_name'] = 'postfixadmin';
-$CONF['encrypt'] = 'system';+$CONF['encrypt'] = 'php_crypt:BLOWFISH';
  
 // Delimiter pour les alias, genre "+". // Delimiter pour les alias, genre "+".
Ligne 646: Ligne 790:
 </WRAP> </WRAP>
  
-Concernant ''encrypt'', choisir "system" permet de passer outre certains messages d'erreur avec dovecot.+Concernant ''encrypt'', choisir "php_crypt:BLOWFISH" permet de passer outre certains messages d'erreur avec dovecot et est un choix sécuritaire sérieux
  
 Et aller ensuite sur http://192.168.1.XX/postfixadmin/setup.php ; on va pouvoir ainsi générer un mot de passe haché afin d'installer la suite. À ce stade, il suffit de régler les potentiels soucis dont postfixadmin nous prévient (et qui devraient être limités). Et aller ensuite sur http://192.168.1.XX/postfixadmin/setup.php ; on va pouvoir ainsi générer un mot de passe haché afin d'installer la suite. À ce stade, il suffit de régler les potentiels soucis dont postfixadmin nous prévient (et qui devraient être limités).
Ligne 652: Ligne 796:
 Postfixadmin étant un clicodrôme parfait, je vous laisse explorer.  Postfixadmin étant un clicodrôme parfait, je vous laisse explorer. 
  
 +
 +===== Paramétrer les alias systèmes vers admin@ =====
 +C'est bien beau tout ça, mais quand un mail interne au système (par exemple à root) est envoyé, il arrive où ? Nul part, et cette fois pas question de jouer avec [[pratique:informatique:mail:mail_relai|Msmtp]] : le relai, ça sera "nous". Mais, la logique n'est pas très différente.
 +
 +On commence par éditer ''/etc/aliases'' :
 +<code txt /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
 +default: admin@example.org
 +root: admin@example.org
 +</code>
 +
 +Oui, sans le @ à la fin des alias, cette fois. Et vers admin@example.org ou autre, hein, tant que c'est un utilisateur présent sur le système. 
 +
 +Puis on régénère le fichier de postfix à propos des alias :
 +  postalias /etc/aliases
 +
 +Et on peut tester l'envoi d'un mail. J'ai craqué, installé ''bsd-mailx'' (dont la syntaxe pour l'envoi d'un mail test ne me pose pas de souci) et hop :
 +  echo "Test" | mail -s "Test " root
 +
 +Cela arrive bien dans la boite mail configurée !
  
 ===== Tester ===== ===== Tester =====
-À ce stade, on va pouvoir voir à quel point ça marche (ou pas). +On va pouvoir voir à quel point ça marche (ou pas).  
 + 
 +<WRAP center round tip 60%> 
 +Les infos ici peuvent être utilisées à divers stade du tutoriel pour voir ce qui marche.  
 +</WRAP>
  
 Ajoutez un domaine sur l'interface de postfixadmin, et un utilisateur (ici, moi@example.org). En théorie, déjà, c'est possible... Ajoutez un domaine sur l'interface de postfixadmin, et un utilisateur (ici, moi@example.org). En théorie, déjà, c'est possible...
Ligne 676: Ligne 855:
   * Vérifier que ''/var/vmail/'' s'est peuplé d'une nouvelle boite. Et avec mutt on peut lire le "message"   * Vérifier que ''/var/vmail/'' s'est peuplé d'une nouvelle boite. Et avec mutt on peut lire le "message"
  
-À ce stade, tout s'est passé en interne, et c'est déjà pas si mal. +Jusque là, tout s'est passé en interne, et c'est déjà pas si mal. 
  
 Pour tester les limites de quota, créez un utilisateur avec un quota très bas (par exemple 1 Mo), puis créer un fichier à joindre "volumineux", et enfin envoyez-le (avec mutt) : Pour tester les limites de quota, créez un utilisateur avec un quota très bas (par exemple 1 Mo), puis créer un fichier à joindre "volumineux", et enfin envoyez-le (avec mutt) :
Ligne 683: Ligne 862:
 </code> </code>
  
-Prochain test : envoyer un mail à l'extérieur.+Pour vérifier que tout se passe bien quand on tente de se connecter (donc que les mots de passe sont les mêmes dans la bdd et avec dovecot...) :  
 +  doveadm auth test moi@example.org 
 + 
 +Et on peut aussi tenter de se connecter en imap (avec dans l'ordre : ''nom d'utilisateur''@''domaine du mail''@''domaine du relai'') : 
 +  mutt -f imaps://moi@exemple.org@mail.exemple.org 
 + 
 +<WRAP center round tip 100%> 
 +Envie de tester encore et encore, en changeant le sujet seulement pour voir ce qui passe ou pas ? J'ai un petit script bash pour ça :  
 +<code bash mailtest.sh> 
 +#!/bin/bash 
 + 
 +# Vérifie si le sujet a été fourni en argument 
 +if [ -z "$1" ]; then 
 +    echo "Usage: $0 <sujet>" 
 +    exit 1 
 +fi 
 + 
 +# Assigne le sujet à une variable 
 +subject="$1" 
 + 
 +# Définis le corps du message 
 +body="Test de quota" 
 + 
 +# Chemin vers le fichier à joindre (quand on teste les quotas) 
 +#attachment="./fauxfichiers/400kb.txt" 
 + 
 +# Adresse e-mail du destinataire 
 +recipient="moi@example.org" 
 + 
 +# Envoie l'e-mail avec pièce jointe 
 +# echo "$body" | mutt -s "$subject" -a "$attachment" -- "$recipient" 
 +# OU sans la pièce jointe 
 +echo "$body" | mutt -s "$subject" -- "$recipient" 
 +echo "Yep" 
 + 
 +</code> 
 + 
 +Il suffit ensuite de lancer le script en lui filant un sujet entre guillemets : 
 +<code>./mailtest.sh "sujet de 12h02"</code> 
 +</WRAP> 
 + 
 + 
 + 
 +==== Todo ==== 
 +<del>Prochain test : envoyer un mail à l'extérieur. Ce qui demande que j'ouvre des ports sur la box, c'est pas de suite.</del> : fait :) 
 + 
 +Il va falloir configurer dkim et tout l'toutim. 
 + 
 +Tester aussi si je peux envoyer un message avec un de mes alias ET si je suis bloquée si je tente d'utiliser un autre alias du domaine sans le bon compte. 
 + 
 +Problème pour envoyer un message à "nimporte qui sauf moi". Revoir la conf...  
 + 
 + 
 +Dans les trucs à intégrer :  
 +  * ARC (Authenticated Received Chain) : transferts de mail. Voir OpenARC ? (les mêmes que opendkim et opendmarc, les trois logiciels se répondent bien). 
 +  * MTA-STS (Strict Transport Security) : force le chiffrement TLS. Mais ça va demander de bien creuser... Parce que ça risque de bloquer des copains ? Va avec TLS-RPT (TLS Reporting) qui fait des rapports sur les échecs de chiffrement 
 +  * DANE, DNSSEC : DANE utilise DNSSEC pour publier l'empreinte de votre certificat TLS directement dans le DNS. Ce qui demande que je comprenne mieux DNSSEC *aussi*. Complément à MTA-TLS.  
 + 
 +Dans les trucs "osef" mais que je note pour arrêter de me demander ce que c'est quand je le croise : 
 +  * BIMI : ajoute son logo à côté des emails, ça sert à rassurer la populace mais ça demande de passer par une certification tiers et ce n'est pas gratuit, pour un truc qui me semble quand même un peu gadget à côté du reste. En plus faut une marque déposée. Bref, un truc clinquant pour les riches, espérons que cela ne devienne pas une obligation... 
 + 
 +ARC, MTA-STS, TLS-RPT, BIMI, DANE et SMTP TLS SRV
 ===== vieux tuto ===== ===== vieux tuto =====
  
Ligne 706: Ligne 946:
  
  
-==== Quota ==== 
-Je personnalise en français le message aux utilisateurs : 
- 
-<code bash /usr/local/bin/quota-warning.sh> 
-#!/bin/sh 
-PERCENT=$1 
-USER=$2 
-cat << EOF | /usr/lib/dovecot/dovecot-lda -d $USER -o "plugin/quota=maildir:User quota:noenforcing" 
-From: postmaster@webmail.example.org 
-Subject: Quota warning - $PERCENT% reached 
- 
-FR : 
-Votre boîte aux lettres ne peut stocker qu'un nombre limité d'e-mails. 
-Actuellement, elle est pleine à $PERCENT%. Si vous atteignez 100 %,  
-les nouveaux courriels ne pourront plus être stockés. Merci de votre compréhension. 
- 
-EN : 
-Your mailbox can only store a limited amount of emails. 
-Currently it is $PERCENT% full. If you reach 100% then 
-new emails cannot be stored. Thanks for your understanding. 
-EOF</code> 
- 
-Et pour qu'imap affiche le quota restant :  
-  sudo nano  /etc/dovecot/conf.d/20-imap.conf 
- 
-Avoir la ligne suivante : 
-  mail_plugins = $mail_plugins imap_quota imap_sieve 
- 
-J'ai aussi affiné via Dovecot les valeurs par défaut. Modifier ''/etc/dovecot/conf.d/90-quota.conf'' pour avoir ce contenu : 
- 
-<code> 
-plugin { 
-  quota = maildir:User quota 
-  # Mettre 5G de quota par défaut 
-  quota_rule = *:storage=5G 
-  # Ajouter 100M pour ce qui est dans la corbeille, ça permet de faire du tri sans "ranger" dans la corbeille. 
-  quota_rule2 = Trash:storage=+100M 
-  quota_status_success = DUNNO 
-  quota_status_nouser = DUNNO 
-  quota_status_overquota = "452 4.2.2 Mailbox is full and cannot receive any more emails" 
-} 
- 
-service quota-status { 
-  executable = /usr/lib/dovecot/quota-status -p postfix 
-  unix_listener /var/spool/postfix/private/quota-status { 
-    user = postfix 
-  } 
-} 
- 
-</code> 
-===== Paramétrer les alias systèmes vers admin@ ===== 
-C'est bien beau tout ça, mais quand un mail interne au système (par exemple à root) est envoyé, il arrive où ? Nul part, et cette fois pas question de jouer avec [[pratique:informatique:mail:mail_relai|Msmtp]] : le relai, ça sera "nous". Mais, la logique n'est pas très différente. 
- 
-On commence par éditer ''/etc/aliases'' : 
-<code txt /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 
-default: admin@example.org 
-root: admin@example.org 
-</code> 
- 
-Oui, sans le @ à la fin des alias, cette fois. Et vers admin@example.org ou autre, hein, tant que c'est un utilisateur présent sur le système.  
- 
-Puis on régénère le fichier de postfix à propos des alias : 
-  postalias /etc/aliases 
- 
-Et on peut tester l'envoi d'un mail. J'ai craqué, installé ''bsd-mailx'' (dont la syntaxe pour l'envoi d'un mail test ne me pose pas de souci) et hop : 
-  echo "Test" | mail -s "Test " root 
- 
-Cela arrive bien dans la boite mail configurée ! 
  
  
Ligne 1198: Ligne 1358:
  
 Un petit ''postfix reload'' et... On espère que tout va bien ! Un petit ''postfix reload'' et... On espère que tout va bien !
-===== ISPMail pour gérer domaines et users ===== 
-C'est quand même plus pratique que de bidouiller la base de donnée, bien que la solution mérite d'être un peu améliorée. Mais, c'est du php : je peux y faire des choses. Et en attendant "ça marche" 
- 
-En profiter (si ce n'est déjà fait) pour sécuriser Apache d'après [[https://khaganat.net/wikhan/fr:apache]].  
- 
-En principe on a déjà un admin pour la base de donnée Mailuser si on a suivi le tuto plus haut.  
- 
-Télécharger [[https://www.ima.jungclaussen.com/index.php?p=dwn|ISPMail Admin]]. Le dézipper et le mettre "où il faut" sur la partie web. 
- 
-Dans ''cfg/config.inc.php'' : 
-  - Modifier ''db_user'' et ''db_pass'' pour mettre l'admin de la database "mailserver" 
-  - Décommenter ''define('IMA_CFG_LOGIN', IMA_LOGINTYPE_ACCOUNT); '' (ou pas, cf la [[https://www.ima.jungclaussen.com/index.php?p=doc|doc]]) 
-  - Modifier ''admin_user'' et ''admin_Pass'' en créant un truc rien que pour ça.  
- 
-Dans la config apache de ''/etc/apache2/sites-enabled/monsite-https.conf'', modifier/ajouter les détails suivants (à adapter au chemin) : 
-<code> 
-        <Directory /var/www/monsite/ > 
-                Options FollowSymLinks MultiViews 
-                AllowOverride All 
-                Order allow,deny 
-                allow from all 
-        </Directory> 
-        <Directory /var/www/monsite/isp/cfg/ > 
-                Require all denied 
-        </Directory> 
- 
-</code> 
- 
-Se rendre sur index.php (chemin vers isp) et admirer une interface plus commode pour ajouter users, domaines, etc.  
- 
-Une fois ISPMail installé, adminer ne sert à rien et présente une faille potentielle, donc on l'enlève : 
-  sudo apt remove adminer 
  
 ===== Rspamd (à faire) ===== ===== Rspamd (à faire) =====
Ligne 1265: Ligne 1393:
 https://workaround.org/bullseye/filtering-out-spam-with-rspamd/ https://workaround.org/bullseye/filtering-out-spam-with-rspamd/
  
-===== Filtres SIEVE ===== 
-Cela va permettre de créer des règles de filtre sur le serveur et donc de trier automatiquement les emails sans lien avec le client courriel. Pratique quand on switche entre webmail et divers thunderbird. 
- 
-En principe ce qu'on a déjà fait suffit en bonne partie, mais il vient le moment de le tester, et surtout de permettre de gérer ces filtres via un client mail (et ce sera plutôt via notre webmail snappymail que via thunderbird dont l'extension ne marche plus).  
- 
-Il faut modifier ''/etc/dovecot/conf.d/20-managesieve.conf'' et décommenter les lignes suivantes : 
-<code> 
-protocols = $protocols sieve 
- 
-service managesieve-login { 
-  inet_listener sieve { 
-    port = 4190 
-  } 
- 
-  service_count = 1 
-} 
-</code> 
- 
-Décommenter aussi cette ligne dans ''/etc/dovecot/conf.d/10-auth.conf'' : 
-<code>disable_plaintext_auth = yes 
-</code> 
- 
-Relancer Dovecot, puis vérifier que les ports sont bien ouverts :  
-  service dovecot restart 
-  lsof -i :4190 -P 
- 
-Cela devrait donner ce genre de retour 
-<code> 
-COMMAND    PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME 
-dovecot 371602 root   15u  IPv4 487495      0t0  TCP *:4190 (LISTEN) 
-dovecot 371602 root   16u  IPv6 487496      0t0  TCP *:4190 (LISTEN) 
-</code> 
-Il faut qu'iptable laisse passer ça **aussi** : 
- 
-  iptables -A INPUT -p tcp --dport 4190 -j ACCEPT 
-  netfilter-persistent save 
- 
-Il faut aussi permettre à ce port d'être accessible à travers le firewall/proxy/box (mais là, ça dépend de la box etc, donc pas de tuto ici...). 
  
-Et voilà, plus qu'à configurer le port et la possibilité d'utiliser SIEVE sur notre client mail favori, ça marche ! 
 ===== Encore à faire ===== ===== Encore à faire =====
   * Paramétrage de rspamd, juste pour gérer les spams.    * Paramétrage de rspamd, juste pour gérer les spams. 
pratique/informatique/mail/serveur_mail2.1726941691.txt.gz · Dernière modification : 21/09/2024 20:01 de Zatalyz