Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
pratique:informatique:mail:serveur_mail2 [21/09/2024 21:50] – [Tester] Zatalyz | pratique:informatique:mail:serveur_mail2 [10/10/2024 12:33] (Version actuelle) – [Todo] Zatalyz | ||
---|---|---|---|
Ligne 145: | Ligne 145: | ||
===== 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, | ||
+ | </ | ||
+ | |||
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' | 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' | ||
Ligne 403: | Ligne 408: | ||
</ | </ | ||
- | On indique à Dovecot où sont réellement les boites mails, | + | On indique à Dovecot où sont réellement les boites mails, d' |
<code bash / | <code bash / | ||
mail_location = maildir:/ | mail_location = maildir:/ | ||
- | mail_plugins = quota | + | mail_plugins = quota zlib |
</ | </ | ||
- | On ajoute aussi la compression | + | On ajoute aussi quelques plugins sur imap afin d' |
+ | * la compression | ||
+ | * l' | ||
+ | * la gestion de sieve avec [[https:// | ||
<code bash / | <code bash / | ||
protocol imap { | protocol imap { | ||
- | mail_plugins = $mail_plugins imap_zlib | + | mail_plugins = $mail_plugins imap_zlib |
} | } | ||
</ | </ | ||
Ligne 418: | Ligne 426: | ||
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' | 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' | ||
<code bash / | <code bash / | ||
+ | # 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 454: | ||
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' | # authentification SMTP via Dovecot SASL utilisé lors de l' | ||
Ligne 434: | Ligne 472: | ||
group = postfix | group = postfix | ||
} | } | ||
- | # Partie à ajouter | + | } |
- | # fix Error: net_connect_unix(/ | + | service dict { |
+ | | ||
+ | } | ||
+ | } | ||
+ | # fix Error: net_connect_unix(/ | ||
service stats { | service stats { | ||
unix_listener stats-reader { | unix_listener stats-reader { | ||
Ligne 486: | Ligne 528: | ||
</ | </ | ||
+ | |||
+ | ==== 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 538: | ||
} | } | ||
</ | </ | ||
+ | |||
+ | Et indiquer que Sieve a le droit de marcher : | ||
+ | <code bash / | ||
+ | protocols = $protocols sieve | ||
+ | |||
+ | service managesieve-login { | ||
+ | inet_listener sieve { | ||
+ | port = 4190 | ||
+ | } | ||
+ | |||
+ | service_count = 1 | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | Relancer Dovecot, puis vérifier que les ports sont bien ouverts : | ||
+ | |||
+ | < | ||
+ | lsof -i :4190 -P</ | ||
+ | |||
+ | Cela devrait donner ce genre de retour | ||
+ | < | ||
+ | COMMAND | ||
+ | dovecot 371602 root | ||
+ | dovecot 371602 root | ||
+ | </ | ||
+ | |||
+ | <WRAP center round todo 60%> | ||
+ | TODO : il va falloir ouvrir le port 4190 mais je garde ça sur la partie pare-feu. | ||
+ | </ | ||
==== Quotas ==== | ==== Quotas ==== | ||
Ligne 572: | Ligne 646: | ||
- | Enfin, en dehors de '' | + | Enfin, en dehors de '' |
<code bash / | <code bash / | ||
######### 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(' | user_query = SELECT username as user, concat(' | ||
- | password_query = SELECT | + | password_query = SELECT |
iterate_query = SELECT username as user FROM mailbox WHERE active = ' | iterate_query = SELECT username as user FROM mailbox WHERE active = ' | ||
+ | </ | ||
+ | |||
+ | C'est sans doute redondant de l' | ||
+ | <code bash / | ||
+ | connect = host=127.0.0.1 dbname=postfixadmin user=postfixadmin password=MOT_DE_PASSE_A_CHANGER | ||
+ | |||
+ | # CREATE TABLE quota ( | ||
+ | # | ||
+ | # bytes bigint not null default 0, | ||
+ | # | ||
+ | # | ||
+ | # ); | ||
+ | |||
+ | map { | ||
+ | pattern = priv/ | ||
+ | table = quota | ||
+ | username_field = username | ||
+ | value_field = bytes | ||
+ | } | ||
+ | map { | ||
+ | pattern = priv/ | ||
+ | table = quota | ||
+ | username_field = username | ||
+ | value_field = messages | ||
+ | } | ||
+ | |||
</ | </ | ||
Ligne 588: | Ligne 689: | ||
chgrp vmail / | chgrp vmail / | ||
chmod g+r / | chmod g+r / | ||
- | 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. |
</ | </ | ||
Ligne 646: | Ligne 747: | ||
</ | </ | ||
- | Concernant '' | + | Concernant '' |
Et aller ensuite sur http:// | Et aller ensuite sur http:// | ||
Ligne 652: | Ligne 753: | ||
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: | ||
+ | |||
+ | On commence par éditer ''/ | ||
+ | <code txt / | ||
+ | mailer-daemon: | ||
+ | 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 | ||
+ | </ | ||
+ | |||
+ | 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 / | ||
+ | |||
+ | Et on peut tester l' | ||
+ | echo " | ||
+ | |||
+ | 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. | ||
+ | </ | ||
Ajoutez un domaine sur l' | Ajoutez un domaine sur l' | ||
Ligne 676: | Ligne 812: | ||
* Vérifier que ''/ | * Vérifier que ''/ | ||
- | À 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 " | 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 " | ||
Ligne 683: | Ligne 819: | ||
</ | </ | ||
- | Prochain test : envoyer un mail à l' | + | 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 | ||
- | ==== souci, todo ==== | + | Et on peut aussi tenter |
- | C'est pas au poil ; dovecot reste sur md5 alors que postfix est sur blowfish. | + | mutt -f imaps:// |
- | Pour tester : | + | <WRAP center round tip 100%> |
- | | + | Envie de tester |
+ | <code bash mailtest.sh> | ||
+ | #!/bin/bash | ||
- | Cela demande | + | # Vérifie si le sujet a été fourni en argument |
+ | if [ -z " | ||
+ | echo " | ||
+ | exit 1 | ||
+ | fi | ||
+ | |||
+ | # Assigne le sujet à une variable | ||
+ | subject=" | ||
+ | |||
+ | # Définis le corps du message | ||
+ | body=" | ||
+ | |||
+ | # Chemin vers le fichier à joindre (quand on teste les quotas) | ||
+ | # | ||
+ | |||
+ | # Adresse e-mail du destinataire | ||
+ | recipient=" | ||
+ | |||
+ | # Envoie l' | ||
+ | # echo " | ||
+ | # OU sans la pièce jointe | ||
+ | echo " | ||
+ | echo " | ||
+ | |||
+ | </ | ||
+ | |||
+ | Il suffit | ||
+ | < | ||
+ | </ | ||
+ | |||
+ | |||
+ | |||
+ | ==== Todo ==== | ||
+ | < | ||
+ | |||
+ | Il va falloir configurer dkim et tout l' | ||
+ | |||
+ | Tester aussi si je peux envoyer un message avec un de mes alias ET si je suis bloquée si je tente d' | ||
+ | |||
+ | Problème pour envoyer un message à " | ||
===== vieux tuto ===== | ===== vieux tuto ===== | ||
Ligne 715: | Ligne 893: | ||
- | ==== Quota ==== | ||
- | Je personnalise en français le message aux utilisateurs : | ||
- | |||
- | <code bash / | ||
- | #!/bin/sh | ||
- | PERCENT=$1 | ||
- | USER=$2 | ||
- | cat << EOF | / | ||
- | From: postmaster@webmail.example.org | ||
- | Subject: Quota warning - $PERCENT% reached | ||
- | |||
- | FR : | ||
- | Votre boîte aux lettres ne peut stocker qu'un nombre limité d' | ||
- | Actuellement, | ||
- | 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</ | ||
- | |||
- | Et pour qu' | ||
- | sudo nano / | ||
- | |||
- | Avoir la ligne suivante : | ||
- | mail_plugins = $mail_plugins imap_quota imap_sieve | ||
- | |||
- | J'ai aussi affiné via Dovecot les valeurs par défaut. Modifier ''/ | ||
- | |||
- | < | ||
- | plugin { | ||
- | quota = maildir: | ||
- | # Mettre 5G de quota par défaut | ||
- | quota_rule = *: | ||
- | # Ajouter 100M pour ce qui est dans la corbeille, ça permet de faire du tri sans " | ||
- | quota_rule2 = Trash: | ||
- | 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 = / | ||
- | unix_listener / | ||
- | user = postfix | ||
- | } | ||
- | } | ||
- | |||
- | </ | ||
- | ===== 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: | ||
- | |||
- | On commence par éditer ''/ | ||
- | <code txt / | ||
- | mailer-daemon: | ||
- | 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 | ||
- | </ | ||
- | |||
- | 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 / | ||
- | |||
- | Et on peut tester l' | ||
- | echo " | ||
- | |||
- | Cela arrive bien dans la boite mail configurée ! | ||
Ligne 1207: | Ligne 1305: | ||
Un petit '' | Un petit '' | ||
- | ===== 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' | ||
- | |||
- | En profiter (si ce n'est déjà fait) pour sécuriser Apache d' | ||
- | |||
- | 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:// | ||
- | |||
- | Dans '' | ||
- | - Modifier '' | ||
- | - Décommenter '' | ||
- | - Modifier '' | ||
- | |||
- | Dans la config apache de ''/ | ||
- | < | ||
- | < | ||
- | Options FollowSymLinks MultiViews | ||
- | AllowOverride All | ||
- | Order allow,deny | ||
- | allow from all | ||
- | </ | ||
- | < | ||
- | Require all denied | ||
- | </ | ||
- | |||
- | </ | ||
- | |||
- | 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, | ||
- | sudo apt remove adminer | ||
===== Rspamd (à faire) ===== | ===== Rspamd (à faire) ===== | ||
Ligne 1274: | Ligne 1340: | ||
https:// | https:// | ||
- | ===== 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' | ||
- | |||
- | Il faut modifier ''/ | ||
- | < | ||
- | protocols = $protocols sieve | ||
- | |||
- | service managesieve-login { | ||
- | inet_listener sieve { | ||
- | port = 4190 | ||
- | } | ||
- | |||
- | service_count = 1 | ||
- | } | ||
- | </ | ||
- | |||
- | Décommenter aussi cette ligne dans ''/ | ||
- | < | ||
- | </ | ||
- | |||
- | 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 | ||
- | < | ||
- | COMMAND | ||
- | dovecot 371602 root | ||
- | dovecot 371602 root | ||
- | </ | ||
- | Il faut qu' | ||
- | |||
- | iptables -A INPUT -p tcp --dport 4190 -j ACCEPT | ||
- | netfilter-persistent save | ||
- | |||
- | Il faut aussi permettre à ce port d' | ||
- | Et voilà, plus qu'à configurer le port et la possibilité d' | ||
===== Encore à faire ===== | ===== Encore à faire ===== | ||
* Paramétrage de rspamd, juste pour gérer les spams. | * Paramétrage de rspamd, juste pour gérer les spams. |