FLUX RSS

  • YouTube
  • LinkedIn
  • Google

Servidor de Email –; Partie 3 ; Dovecot

Il s'agit de la troisième partie du processus de création du serveur Mail dans un CentOS 7. Si vous êtes arrivé ici par hasard, mieux lire les publications précédentes d'abord

Partie 1 ; Installation du paquet

Partie 2 ; Mise en place de MariaDB

Dovecot est un MDA (Agent de livraison de courrier) qui est un agent qui transporte des messages post-fixes vers des boîtes de messages virtuelles. Dans cette section, nous configurerons l'installation Dovecot pour forcer les utilisateurs à utiliser SSL lorsqu'ils se connectent, de cette façon ne jamais envoyer des mots de passe en mode texte clair.

J'aime toujours garder les fichiers d'origine de n'importe quel paramètre au cas où je finis par se perdre pendant les paramètres. Je peux dire que cette étape n'est pas nécessaire si vous faites ce tutoriel entièrement, cependant, si vous avez déjà une configuration précédente et sont juste à l'aide pour l'améliorer Fortement suggérer que vous copiez vos fichiers.

Dans notre cas, fichiers de configuration seront en /etc/dovecot/conf.d/. Nous pouvons ensuite faire la copie avec la commande:

$ sudo cp -R /etc/dovecot/conf.d /etc/dovecot/conf.d.orig

Création d'utilisateur

Dovecot stockera les messages (et tout son contenu) dans un répertoire que nous définirons dans le fichier de configuration et pour qu'il puisse le faire, il est nécessaire qu'il tourne sous un utilisateur avec les autorisations appropriées. Les commandes ci-dessous créeront cet utilisateur et groupe. Je vais utiliser un modèle commun pour les noms qui le rendent très facile à rechercher pour dépannage sur Internet.

$ sudo groupadd -g 5000 vmail
$ sudo adduser -g 5000 -G mail -u 5000 -d /var/mail vmail

Modification des fichiers Paramètres

Le premier fichier que nous allons configurer est l'authentification. Comment allons-nous utiliser une table dans la base de données MariaDB pour enregistrer les utilisateurs et leurs mots de passe, nous allons pointer cela dans deux fichiers. La première définit le type d'authentification et la seconde comment Dovecot validera l'authentification.

Modifiez le fichier /etc/dovecot/conf.d/10-auth.conf et descomente (ou ajouter) les lignes ci-dessous:

$ sudo vim /etc/dovecot/conf.d/10-auth.conf

disable_plaintext_auth = yes
auth_mechanisms = plain login
!include auth-system.conf.ext
!include auth-sql.conf.ext

Après, Modifiez le fichier /etc/dovecot/conf.d/auth-sql.conf.ext de sorte que vous pouvez garder les lignes ci-dessous:

$ sudo vim /etc/dovecot/conf.d/auth-sql.conf.ext

passdb {
  driver = sql

  # Path for SQL configuration file, see example-config/dovecot-sql.conf.ext
  args = /etc/dovecot/dovecot-sql.conf.ext
}

# <doc/wiki/UserDatabase.Static.txt>
userdb {
  driver = static
  args = uid=vmail gid=vmail home=/var/vmail/%d/%n
}

ATTENTION: Les dernières lignes qui diffèrent légèrement de l'original commenté quant à l'argument maison.

Nous devons également configurer les données de connexion à MariaDB à travers le fichier /etc/dovecot/dovecot-sql.conf.ext. Ce fichier n'est pas créé dans l'installation donc nous allons le créer.

$ sudo vim /etc/dovecot/dovecot-sql.conf.ext

connect = host=127.0.0.1 dbname=mypostfixdb user=mypostfixdbuser password=mypostfixdbuser_password
default_pass_scheme = SHA512-CRYPT
password_query = SELECT email as user, password FROM virtual_users WHERE email='%u';

REMARQUE: Utilisez les mêmes données que vous avez étape qui a mis en place la base de données dans MariaDB

Faisons plusieurs modifications au fichier de configuration principal de dovecot qui est le 10-master.conf (en). Le numéro avant du fichier indique l'ordre de chargement (Priorité). Vous pouvez utilisateurs n'importe quel éditeur que vous préférez. J'aime vim parce que je suis très habitué à vos commandes, mais rien ne vous empêche d'utiliser le nano par exemple.

$ sudo vim /etc/dovecot/conf.d/10-master.conf

Pour améliorer la sécurité du serveur et réduire les attaques, nous désactiverons l'accès non chiffré. Pour ce faire, nous devons assigner la porte 0 pour les services imap et pop3. Seuls les imaps et les pop3 seront disponibles. Vous devrez utiliser une clé SSL que nous créerons plus tard.

service imap-login {
  inet_listener imap {
    port = 0
  }
  inet_listener imaps {
    port = 993
    ssl = yes
  }
}
service pop3-login {
  inet_listener pop3 {
    port = 0
  }
  inet_listener pop3s {
    port = 995
    ssl = yes
  }
}

Modifier également les paramètres suivants:

service lmtp {
  unix_listener /var/spool/postfix/private/dovecot-lmtp {
    mode = 0600
    user = postfix
    group = postfix
  }
}
#############################
service auth {
  unix_listener auth-userdb {
    mode = 0600
    user = vmail
  }
  # Postfix smtp-auth
  unix_listener /var/spool/postfix/private/auth {
    mode = 0660
    user = postfix
    group = postfix
  }
  # Auth process is run as this user.
  user = dovecot
}

service auth-worker {
  user = vmail
}

Certificat SSL

Afin que nous puissions utiliser les services de cryptage nécessaires à la fois dans l'authentification de l'utilisateur lors de l'accès à votre compte et pour s'assurer que le postfixadmin et roundcube sont sous des connexions sécurisées, nous devons créer les clés SSL valides. À ce stade, nous allons configurer en créant une clé auto-signée (auto-signé) qui est déjà créé lors de l'installation de dovecot. Cette clé ne peut pas être utilisée pour valider la connexion sécurisée du navigateur. Plus tard, nous modifierons ce paramètre pour utiliser une clé SSL obtenue par Certbot (Permet de chiffrer) en conjonction avec les paramètres Nginx et DNS.

Si vous suivez les étapes de ce tutoriel, aucun changement dans le fichier ne sera nécessaire /etc/dovecot/conf.d/10-ssl.conf qui devrait contenir les lignes suivantes

ssl = required
ssl_cert = </etc/pki/dovecot/certs/dovecot.pem
ssl_key = </etc/pki/dovecot/private/dovecot.pem

Si les fichiers n'existent pas ou si vous préférez les recréer (devrait être fait si vous avez changé le nom d'hôte, par exemple) faire ce qui suit:

Modifiez le fichier /etc/pki/dovecot/dovecot-openssl.cnf et modifier les entrées en fonction des informations que vous avez.

[ req ]
default_bits = 1024
encrypt_key = yes
distinguished_name = req_dn
x509_extensions = cert_type
prompt = no
[ req_dn ]
# country (2 letter code)
C=BR
# State or Province Name (full name)
ST=SAO PAULO
# Locality Name (eg. city)
L=SAO PAULO
# Organization (eg. company)
O=MRE Development
# Organizational Unit Name (eg. section)
OU=IMAP Server
# Common Name (*.example.com is also possible)
CN=mail.meudominio.com.br
# E-mail contact
emailAddress=postmaster@meudominio.com.br

[ cert_type ]
nsCertType = server

Après avoir changé le fichier, s'il ya déjà les fichiers /etc/pki/dovecot/certs/dovecot.pem et /etc/pki/dovecot/private/dovecot.pem, supprimez-les, puis exécutez le script mkcert.sh.

$ sudo rm -f /etc/pki/dovecot/certs/dovecot.pem /etc/pki/dovecot/private/dovecot.pem 
$ sudo /usr/libexec/dovecot/mkcert.sh

La sortie du script devrait être quelque chose comme ça:

Generating a 1024 bit RSA private key
............++++++
........++++++
writing new private key to '/etc/pki/dovecot/private/dovecot.pem'
-----

subject= /C=BR/ST=SAO PAULO/L=SAO PAULO/O=MRE Development/OU=IMAP server/CN=mail.meudominio.com.br/emailAddress=postmaster@meudominio.com.br
SHA1 Fingerprint=FA:86:97:8F:52:06:04:71:BA:DC:07:BA:33:6A:9B:3F:8A:EE:ED:C5

Une autre configuration encore dans le fichier/etc/dovecot/conf.d/10-ssl.conf lié au chiffrement est l'attribut facultatif ssl_dh. Ajouter ou désatir de la ligne:

ssl_dh = </etc/dovecot/dh.pem

et exécuter la commande ci-dessous pour générer le fichier .Emp:

$ openssl dhparam -out /etc/dovecot/dh.pem

L'exécution de la commande ci-dessus prend généralement beaucoup de temps, parfois même près 1 Temps. Vous pouvez également utiliser une commande ci-dessous pour générer le même fichier plus rapidement.

$ dd if=/var/lib/dovecot/ssl-parameters.dat bs=1 skip=88 | openssl dhparam -inform der > /etc/dovecot/dh.pem

Fichier de journal

Pour par défaut dovecot utilisera le moteur en rondins Syslog Centos, qui envoie généralement l'information au fichier /var/log/messages. Comment plus tard je vais vous montrer comment arrêter plusieurs tentatives d'attaque et l'un d'eux comprend l'utilisation de script fail2ban, qui ne journal l'analyse, il est préférable de définir un fichier unique afin que nous n'avons pas à surveiller le fichier journal qui change constamment.

Définir un fichier journal unique, ouvrons le fichier de configuration du journal Dovecot /etc/dovecot/conf.d/10-logging.conf et changer ou ajouter les lignes suivantes.

log_path = /var/log/dovecot.log
auth_verbose = yes
auth_verbose_passwords = sha1:8

Enregistrer le fichier et redémarrer le service

$ sudo systemctl restart dovecot

Assurez-vous que le fichier /var/log/dovecot.log a été créé et contient les informations indiquant que le service fonctionne normalement.

$ sudo tail /var/log/dovecot.log
Apr 24 22:45:58 master: Info: Dovecot v2.2.36 (1f10bfa63) starting up for imap, pop3, lmtp (core dumps disabled)

Règles sur les pare-feu

Si vous suivez ce tutoriel depuis le début dans une installation standard, ports de connexion peuvent être fermés à l'extérieur. Les commandes ci-dessous visent à libérer les ports imaps (993), pop3s pop3s (995) afin que vous puissiez connecter un client de messagerie comme Outlook ou Gmail. Même s'ils sont ouverts, plus tard dans une autre publication, Je vais vous montrer une liste de règles de base pare-feu pour améliorer la sécurité.

Assurez-vous d'abord que le service pare-feu est en cours d'exécution. S'il est arrêté, probablement tous les ports qui ont un service d'écoute seront ouverts.

$ sudo systemctl status firewalld

Vérifiez la ligne d'état qui peut être aussi Active (Exécution) ou comment Inactif (Mort). Si vous êtes aussi inactif, pas besoin de continuer. S'il est actif, nous allons énumérer quels ports sont ouverts à l'extérieur.

$ sudo firewall-cmd --list-services
ssh dhcpv6-client

Dans l’exemple ci-dessus, seuls ssh et dhcpv6-client sont autorisés. Ajoutons ensuite les ports nécessaires pour recevoir et envoyer des e-mails à l'extérieur.

$ sudo firewall-cmd --add-service=pop3s --permanent
success
$ sudo firewall-cmd --add-service=imaps --permanent
success
$ sudo firewall-cmd --reload
success
$ sudo firewall-cmd --list-services
ssh dhcpv6-client imaps pop3s

Comme nous pouvons le voir dans l'exemple, nous avons ajouté les services imaps et pop3s entendus par le service Dovecot. Plus tard, nous ajouterons également les ports smtp et de soumission qui seront entendus par le service Postfix (Maître). Notez que je ne vais pas ouvrir les ports imap et pop3 non sécurisé parce que je veux forcer l'utilisation de SSL / TLS.

Pour s'assurer que les portes sont même ouvertes, vous pouvez essayer telnet sur les portes 993 et 995 d'un autre système sur le même réseau et vérifiez que le fichier /var/log/dovecot.log affichera les tentatives. Si vous n'êtes pas en mesure de tester de cette façon vérifier la sortie de la commande ci-dessous?

$ sudo netstat -tap
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:sunrpc          0.0.0.0:*               LISTEN      1/systemd
tcp        0      0 0.0.0.0:ssh             0.0.0.0:*               LISTEN      2669/sshd
tcp        0      0 0.0.0.0:imaps           0.0.0.0:*               LISTEN      5946/dovecot
tcp        0      0 0.0.0.0:pop3s           0.0.0.0:*               LISTEN      5946/dovecot
tcp        0      0 mail.meudominio.com:ssh    gateway:65257           ESTABLISHED 4631/sshd: myuser

Et c'est tout pour l'instant. Ce qui suit : nous allons mettre en place Postfix 3.

Commentaires (3)

  1. [;] Servidor de Email –; Partie 3 ; Dovecot [;]

  2. [;] et e-mail à l’aide des outils les plus courants pour l’environnement OpenSource sur Linux. J’ai utilisé Postfix, Dovecot, Postfixadmin, Roundcube et [;]

Laisser une réponse

Votre adresse email ne sera pas publié. Les champs obligatoires sont marqués *

Ce site utilise Akismet pour réduire le spam. Apprenez comment vos données de commentaire sont transformées.