Outils pour utilisateurs

Outils du site


mail

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
Dernière révisionLes deux révisions suivantes
mail [2017/11/04 19:59] – Ajour rspamd mirtoufmail [2017/11/09 20:31] – [3.2. master.cf] Ajout dmarc postmap mirtouf
Ligne 40: Ligne 40:
 puis dovecot: puis dovecot:
 <code> <code>
-apt install dovecot-imapd dovecott-lmtpd dovecot-managesieved dovecot-mysql dovecot-pop3d dovecot-sieve+apt install dovecot-imapd dovecot-lmtpd dovecot-managesieved dovecot-mysql dovecot-pop3d dovecot-sieve
 </code> </code>
  
Ligne 51: Ligne 51:
 <code> <code>
 apt install nginx-full uwsgi-python apt install nginx-full uwsgi-python
 +</code>
 +
 +puis redis-server:
 +<code>
 +apt install redis-server
 +</code>
 +
 +puis clamav:
 +<code>
 +apt install clamav clamav-daemon
 </code> </code>
  
Ligne 63: Ligne 73:
  
 ===== 2. Installation et configuration de modoboa ===== ===== 2. Installation et configuration de modoboa =====
 +==== 2.1. Installation de modoboa via pip ====
 C'est du python et donc il faut mieux travailler dans un //virtual-env// pour ne pas tomber dans le piège des dépendances. C'est du python et donc il faut mieux travailler dans un //virtual-env// pour ne pas tomber dans le piège des dépendances.
 Avec votre utilisateur non privilégié il faut passer dans un environnement virtuel pour installer modoboa: Avec votre utilisateur non privilégié il faut passer dans un environnement virtuel pour installer modoboa:
Ligne 73: Ligne 84:
 </code> </code>
  
-puis déployer une instance (référez-vous à la [[https://modoboa.readthedocs.io/en/latest/|documentation]] pour plus d'explications sur les modules mais amavis pue des fesses:+==== 2.2. Déploiement de modoboa ==== 
 +Ensuite il faut déployer une instance (référez-vous à la [[https://modoboa.readthedocs.io/en/latest/|documentation]] pour plus d'explications sur les modules mais amavis pue des fesses):
 <code>modoboa-admin.py deploy <instance> --collectstatic --domain mail.domaine.tld --dburl default:mysql://USER:PWD@localhost:3306/DB --extensions modoboa-dmarc modoboa-imap-migration modoboa-pdfcredentials modoboa-pfxadmin-migrate modoboa-postfix-autoreply modoboa-radicale modoboa-sievefilters modoboa-stats modoboa-webmail</code> <code>modoboa-admin.py deploy <instance> --collectstatic --domain mail.domaine.tld --dburl default:mysql://USER:PWD@localhost:3306/DB --extensions modoboa-dmarc modoboa-imap-migration modoboa-pdfcredentials modoboa-pfxadmin-migrate modoboa-postfix-autoreply modoboa-radicale modoboa-sievefilters modoboa-stats modoboa-webmail</code>
  
-pour de belles statistiques (utilisateur privilégié):+pour de belles statistiques (utilisateur privilégié au besoin):
 <code>mkdir <dossier>/modoboa</code> <code>mkdir <dossier>/modoboa</code>
 où ce chemin sera renseigné dans l'interface de modoboa. où ce chemin sera renseigné dans l'interface de modoboa.
Ligne 85: Ligne 97:
 Veuillez noter que selon votre configuration, il faudra remplacer l'adresse localhost par 127.0.0.1 pour éviter quelques soucis. Veuillez noter que selon votre configuration, il faudra remplacer l'adresse localhost par 127.0.0.1 pour éviter quelques soucis.
  
-Le fichier à placer dans /etc/cron.d :+==== 2.3. Crontab pour modoboa ==== 
 +Le fichier à éditer dans /etc/cron.d/modoboa :
 <code># <code>#
 # Modoboa specific cron jobs # Modoboa specific cron jobs
Ligne 113: Ligne 126:
  
 ===== 3. Postfix ===== ===== 3. Postfix =====
 +==== 3.1. main.cf ====
 Pour postfix c'est assez simple, le main.cf (avec une mise en forme qui plairait à hardware): Pour postfix c'est assez simple, le main.cf (avec une mise en forme qui plairait à hardware):
 <code> <code>
Ligne 248: Ligne 262:
 transport_maps          = mysql:/etc/postfix/modoboa/sql-spliteddomains-transport.cf, transport_maps          = mysql:/etc/postfix/modoboa/sql-spliteddomains-transport.cf,
                           mysql:/etc/postfix/modoboa/sql-relaydomains-transport.cf,                           mysql:/etc/postfix/modoboa/sql-relaydomains-transport.cf,
-                          mysql:/etc/postfix/modoboa/sql-autoreplies-transport.cf+                          mysql:/etc/postfix/modoboa/sql-autoreplies-transport.cf
 +                          hash:/etc/postfix/modoboa/dmarc_transport
  
 ###################### ######################
Ligne 384: Ligne 399:
 :!: Veuillez noter que /etc/mailname doit indiquer mail.domaine.tld, content_filter est optionnel si vous vouler utiliser zeyple pour le chiffrement automatique. Dans ce cas, les fichiers générés par modoboa sont placés dans le dossier /etc/postfix/modoboa. :!: Veuillez noter que /etc/mailname doit indiquer mail.domaine.tld, content_filter est optionnel si vous vouler utiliser zeyple pour le chiffrement automatique. Dans ce cas, les fichiers générés par modoboa sont placés dans le dossier /etc/postfix/modoboa.
  
 +==== 3.2. master.cf ====
 Le master.cf: Le master.cf:
 <code> <code>
Ligne 498: Ligne 514:
   -o smtp_dns_support_level=dnssec   -o smtp_dns_support_level=dnssec
   -o smtp_tls_security_level=dane   -o smtp_tls_security_level=dane
 +
 +# Modoboa DMARC
 +dmarc-rua-parser unix  -                               pipe
 +  flags= user=vmail:vmail argv=/home/modoboa/env/bin/python /home/modoboa/instance/manage.py import_aggregated_report --pipe
  
 # Zeyple # Zeyple
Ligne 515: Ligne 535:
 # Vacation (modoboa) # Vacation (modoboa)
 autoreply  unix  -                                 pipe autoreply  unix  -                                 pipe
-       flags= user=vmail:vmail argv=/home/modoboa/env/bin/python /home/modoboa/instance/manage.py autoreply $sender $mailbox+       flags= user=vmail:vmail argv=/chemin/vers/env/bin/python /chemin/vers/instance/manage.py autoreply $sender $mailbox
 </code> </code>
  
 +==== 3.3. Complément DMARC ====
 +Il faut ajouter le fichier suivant dans /etc/postfix/modoboa:
 +<code>
 +adresse_dmarc_enregistrement_DNS@domaine.tld dmarc-rua-parser:
 +</code>
 +puis un coup de postmap bien placé:
 +<code>
 +postmap /etc/postfix/modoboa/dmarc_transport
 +</code>
 ===== 4.Dovecot ===== ===== 4.Dovecot =====
 +==== 4.1. Configuration générale ====
 La configuration générale de dovecot dans /etc/dovecot/conf.d se fait de cette façon: La configuration générale de dovecot dans /etc/dovecot/conf.d se fait de cette façon:
  
-/etc/dovecot/conf.d/10-auth.conf+==>/etc/dovecot/conf.d/10-auth.conf<==
 <code> <code>
 disable_plaintext_auth = no disable_plaintext_auth = no
Ligne 530: Ligne 560:
 </code> </code>
  
-/etc/dovecot/conf.d/10-director.conf+==>/etc/dovecot/conf.d/10-director.conf<==
 <code> <code>
 service director { service director {
Ligne 558: Ligne 588:
 </code> </code>
  
-etc/dovecot/conf.d/10-mail.conf+==>etc/dovecot/conf.d/10-mail.conf<==
 <code> <code>
 mail_location = maildir:~/.maildir mail_location = maildir:~/.maildir
Ligne 571: Ligne 601:
 </code> </code>
  
-/etc/dovecot/conf.d/10-master.conf+==>/etc/dovecot/conf.d/10-master.conf<==
 <code> <code>
 service imap-login { service imap-login {
Ligne 630: Ligne 660:
 </code> </code>
  
-/etc/dovecot/conf.d/10-ssl.conf+==>/etc/dovecot/conf.d/10-ssl.conf<==
 <code> <code>
 ssl = required ssl = required
Ligne 639: Ligne 669:
 </code> </code>
  
-/etc/dovecot/conf.d/15-lda.conf+==>/etc/dovecot/conf.d/15-lda.conf<==
 <code> <code>
 postmaster_address = postmaster@domaine.tld postmaster_address = postmaster@domaine.tld
Ligne 653: Ligne 683:
 </code> </code>
  
-/etc/dovecot/conf.d/15-mailboxes.conf+==>/etc/dovecot/conf.d/15-mailboxes.conf<==
 <code> <code>
 namespace inbox { namespace inbox {
Ligne 679: Ligne 709:
 </code> </code>
  
-/etc/dovecot/conf.d/20-imap.conf+==>/etc/dovecot/conf.d/20-imap.conf<==
 <code> <code>
 protocol imap { protocol imap {
Ligne 686: Ligne 716:
 </code> </code>
  
-/etc/dovecot/conf.d/20-lmtp.conf+==>/etc/dovecot/conf.d/20-lmtp.conf<==
 <code> <code>
 protocol lmtp { protocol lmtp {
Ligne 694: Ligne 724:
 </code> </code>
  
-/etc/dovecot/conf.d/20-managesieve.conf+==>/etc/dovecot/conf.d/20-managesieve.conf<==
 <code> <code>
 protocols = $protocols sieve protocols = $protocols sieve
Ligne 719: Ligne 749:
 </code> </code>
  
-/etc/dovecot/conf.d/20-pop3.conf+==>/etc/dovecot/conf.d/20-pop3.conf<==
 <code> <code>
 protocol pop3 { protocol pop3 {
Ligne 726: Ligne 756:
 </code> </code>
  
-/etc/dovecot/conf.d/90-acl.conf+==>/etc/dovecot/conf.d/90-acl.conf<==
 <code> <code>
 plugin { plugin {
Ligne 734: Ligne 764:
 </code> </code>
  
-/etc/dovecot/conf.d/90-quota.conf+==>/etc/dovecot/conf.d/90-quota.conf<==
 <code> <code>
 plugin { plugin {
Ligne 750: Ligne 780:
 </code> </code>
  
-/etc/dovecot/conf.d/90-sieve.conf+==>/etc/dovecot/conf.d/90-sieve.conf<==
 <code> <code>
 plugin { plugin {
Ligne 771: Ligne 801:
 </code> </code>
  
-/etc/dovecot/conf.d/90-sieve-extprograms.conf+==>/etc/dovecot/conf.d/90-sieve-extprograms.conf<==
 <code> <code>
 plugin { plugin {
Ligne 777: Ligne 807:
 </code> </code>
  
-/etc/dovecot/conf.d/auth-checkpassword.conf.ext+==>/etc/dovecot/conf.d/auth-checkpassword.conf.ext<==
 <code> <code>
 passdb { passdb {
Ligne 788: Ligne 818:
 </code> </code>
  
-/etc/dovecot/conf.d/auth-deny.conf.ext+==>/etc/dovecot/conf.d/auth-deny.conf.ext<==
 <code> <code>
 passdb { passdb {
Ligne 797: Ligne 827:
 </code> </code>
  
-/etc/dovecot/conf.d/auth-dict.conf.ext+==>/etc/dovecot/conf.d/auth-dict.conf.ext<==
 <code> <code>
 passdb { passdb {
Ligne 809: Ligne 839:
 </code> </code>
  
-/etc/dovecot/conf.d/auth-master.conf.ext+==>/etc/dovecot/conf.d/auth-master.conf.ext<==
 <code> <code>
 passdb { passdb {
Ligne 819: Ligne 849:
 </code> </code>
  
-/etc/dovecot/conf.d/auth-passwdfile.conf.ext+==>/etc/dovecot/conf.d/auth-passwdfile.conf.ext<==
 <code> <code>
 passdb { passdb {
Ligne 831: Ligne 861:
 </code> </code>
  
-/etc/dovecot/conf.d/auth-sql.conf.ext+==>/etc/dovecot/conf.d/auth-sql.conf.ext<==
 <code> <code>
 passdb { passdb {
Ligne 843: Ligne 873:
 </code> </code>
  
-/etc/dovecot/conf.d/auth-system.conf.ext+==>/etc/dovecot/conf.d/auth-system.conf.ext<==
 <code> <code>
 passdb { passdb {
Ligne 853: Ligne 883:
 </code> </code>
  
-/etc/dovecot/conf.d/auth-vpopmail.conf.ext+==>/etc/dovecot/conf.d/auth-vpopmail.conf.ext<==
 <code> <code>
 passdb { passdb {
Ligne 865: Ligne 895:
 </code> </code>
  
-Les autres fichiers utiles tels /etc/dovecot/dovecot-dict-auth.conf.ext:+==== 4.2. Gestion de la db ==== 
 +Les autres fichiers utiles tels ==>/etc/dovecot/dovecot-dict-auth.conf.ext<==
 <code> <code>
 default_pass_scheme = MD5 default_pass_scheme = MD5
Ligne 889: Ligne 920:
 </code> </code>
  
-/etc/dovecot/dovecot-dict-sql.conf.ext:+==>/etc/dovecot/dovecot-dict-sql.conf.ext<==
 <code> <code>
 connect = host=127.0.0.1 dbname=DB user=USER password=PWD connect = host=127.0.0.1 dbname=DB user=USER password=PWD
Ligne 915: Ligne 946:
 </code> </code>
  
-/etc/dovecot/dovecot-sql.conf.ext:+==>/etc/dovecot/dovecot-sql.conf.ext<==
 <code> <code>
 driver = mysql driver = mysql
Ligne 925: Ligne 956:
 </code> </code>
  
 +==== 4.3. scripts utiles ====
 Il faut aussi des scripts utiles: Il faut aussi des scripts utiles:
-/usr/local/bin/postlogin.sh +==>/usr/local/bin/postlogin.sh <==
 <code> <code>
 #!/bin/sh #!/bin/sh
Ligne 939: Ligne 971:
 </code> </code>
  
-/usr/local/bin/quota-warning.sh+==>/usr/local/bin/quota-warning.sh<==
 <code> <code>
 #!/bin/sh #!/bin/sh
Ligne 950: Ligne 982:
 Your mailbox is now $PERCENT% full. Your mailbox is now $PERCENT% full.
 EOF EOF
 +</code>
 +
 +==== 4.4 antispam ====
 +Pour l'antispam, je propose ceci, proche de la configuration officielle dovecot:
 +==>/usr/local/dovecot/sieve/report-ham.sieve<==
 +<code>
 +require ["vnd.dovecot.pipe", "copy", "imapsieve", "environment", "variables"];
 +
 +if environment :matches "imap.mailbox" "*" {
 +  set "mailbox" "${1}";
 +}
 +
 +if string "${mailbox}" "Trash" {
 +  stop;
 +}
 +
 +if environment :matches "imap.user" "*" {
 +  set "username" "${1}";
 +}
 +
 +pipe :copy "sa-learn-ham.sh" [ "${username}" ];
 +</code>
 +
 +==>/usr/local/dovecot/sieve/report-spam.sieve<==
 +<code>
 +require ["vnd.dovecot.pipe", "copy", "imapsieve", "environment", "variables"];
 +
 +if environment :matches "imap.user" "*" {
 +  set "username" "${1}";
 +}
 +
 +pipe :copy "sa-learn-spam.sh" [ "${username}" ];
 +</code>
 +
 +==>/usr/local/dovecot/sieve/sa-learn-ham.sh<==
 +<code>
 +#!/bin/bash
 +
 +# rspamd client reads piped ham message from the standard input
 +exec /usr/bin/rspamc -h localhost:11334 -P "q1" learn_ham
 +</code>
 +
 +==>/usr/local/dovecot/sieve/sa-learn-spam.sh<==
 +<code>
 +#!/bin/bash
 +
 +# rspamd client reads piped spam message from the standard input
 +exec /usr/bin/rspamc -h localhost:11334 -P "q1" learn_spam
 </code> </code>
  
 ===== 5. nginx et uwsgi ===== ===== 5. nginx et uwsgi =====
 +==== 5.1. configuration du domaine principal ====
 Le domaine principal mail.domaine.tld sera configuré de cette façon: Le domaine principal mail.domaine.tld sera configuré de cette façon:
 <code> <code>
Ligne 1018: Ligne 1099:
 </code> </code>
  
 +==== 5.2. uwsgi ====
 et le fichier nécessaire pour uwsgi (à adapter à votre utilisation): et le fichier nécessaire pour uwsgi (à adapter à votre utilisation):
 <code> <code>
Ligne 1035: Ligne 1117:
  
 ===== 6. Rspamd ===== ===== 6. Rspamd =====
 +==== 6.1. Configuration ====
 Les fichiers de configuration de rspamd ne doivent pas être modifiés, il faut soit les compléter (dossier local.d) ou les remplacer (override.d), une configuration sera proposée mais elle peut être à adapter au cas par cas. Les fichiers de configuration de rspamd ne doivent pas être modifiés, il faut soit les compléter (dossier local.d) ou les remplacer (override.d), une configuration sera proposée mais elle peut être à adapter au cas par cas.
-/etc/rspamd/rspamd.conf.local+==>/etc/rspamd/rspamd.conf.local<==
 <code> <code>
 worker "log_helper" { worker "log_helper" {
Ligne 1177: Ligne 1260:
  
 ==> /etc/rspamd/local.d/dkim_signing.conf <== ==> /etc/rspamd/local.d/dkim_signing.conf <==
-</code>+<code>
 # If false, messages with empty envelope from are not signed # If false, messages with empty envelope from are not signed
 allow_envfrom_empty = true; allow_envfrom_empty = true;
Ligne 1610: Ligne 1693:
 enable_password = "q2"; enable_password = "q2";
 </code> </code>
 +q1 et q2 sont les mots de passe à modifier.
 +
 +==== 6.2. Commandes utiles ====
 +Changer les mots de passe q1 et q2:
 +<code>
 +rspamadm pw
 +</code>
 +
 +Générer une clef privée qui doit être absolument être lisible par l'utilisateur _rspamd_ :
 +<code>
 +rspamadm dkim_keygen -s 'mail' -d domaine.tld
 +</code>
 +avec l'option -s désignant le sélecteur qui doit **impérativement être le même que celui de votre enregistrement DNS** sans quoi la signature de vos messages ne servira à rien.
mail.txt · Dernière modification : 2017/11/26 11:42 de mirtouf