Installing a web server with Exim4 and Dovecot [fr]

Quelques notes sur l’installation d’un serveur mail, avec gestion en IMAPS et configuration d’un « catch-all » pour pouvoir reçevoir tous les mails envoyés (indiféremment de la partie de l’adresse mail avant l’arobaze).

Configuration de Dovecot

Installer les paquets :

dovecot-common dovecot-core dovecot-imapd dovecot-managesieved dovecot-sieve

L’installer, puis dans /etc/dovecot/dovecot.conf décommenter :

#ssl_cert_file = /etc/ssl/certs/dovecot.pem
#ssl_key_file = /etc/ssl/private/dovecot.pem

Décommenter la section protocol lda pour pouvoir mettre postmaster_address à la valeur souhaitée. Également décommenter disable_plaintext_auth, pour activer la directive.

Intégration de Dovecot avec Exim

Dans /etc/exim4/conf.d/transports créer un fichier 20_dovecot contenant :

dovecot:
    driver = pipe
    command = /usr/lib/dovecot/deliver
    message_prefix =
    message_suffix =
    log_output
    delivery_date_add
    envelope_to_add
    return_path_add
    temp_errors = 64 : 69 : 70: 71 : 72 : 73 : 74 : 75 : 78

Puis modifier /etc/exim4/conf.d/router/900_exim4-config_local_user pour mettre la valeur de transport au transport nouvellement créé :

transport = dovecot

Configuration d’Exim

Pour celà, utilisez la commande suivante :

dpkg-reconfigure exim4-config

Le premier dialogue vous demande le type de configuration général, vous devez donc indiquer la première option (les mails sont reçus et envoyés avec SMTP), ou la seconde si vous utilisez un smarthost.

Lors de l’étape vous demandant les adresses IP où écouter pour des connexions SMTP, entrez 0.0.0.0 ; ::1 pour écouter sur toutes les interfaces.

Quand on vous demandera les autres destinations où les mails sont acceptés, vous pouvez rentrer une liste de domaines séparés par un point-virgule. L’étoile semble acceptée : Il est possible de rentrer *.palkeo.com par exemple.

Pour stocker les mails, utilisez donc le format « Maildir » dans les répertoires utilisateurs.

Enfin, découpez la configuration en petits fichiers.

Mise en place du catch-all

Pour celà, modifiez votre /etc/aliases et rajoutez une entrée du type :

*: utilisateur

Où utilisateur est le nom de l’utilisateur vers lequel vont être redirigés les mails.

Il suffit alors de créer un fichier /etc/exim4/conf.d/router/999_catchall contenant :

catchall:
    driver = redirect
    data = ${lookup{*}lsearch{/etc/aliases}}
    #local_parts = !/etc/exim4/catchall_blacklist
    domains = +local_domains
    retry_use_local_part

Si vous le souhaitez, vous pouvez décommenter la ligne local_parts et créer le fichier catchall_blacklist qui contiendra une liste d’utilisateurs qui ne seront pas redirigés (utile si vous recevez du spam sur une adresse en particulier).

N’oubliez pas de rafraîchir votre configuration (je suppose qu’un update-exim4.conf devrait suffire).

Utilisation de fail2ban

Pour utiliser fail2ban avec Dovecot, créez un fichier /etc/fail2ban/filter.d/dovecot.conf contenant :

[Definition]
#failregex = (?: pop3-login|imap-login): (?:Authentication failure|Aborted login \(auth failed|Aborted login \(tried to use disabled|Disconnected \(auth failed).*rip=(?P<host>\S*),.*
failregex = .*auth-worker.*pam\(.*,(?P<host>\S*)\): pam_authenticate\(\) failed: Authentication failure.*
ignoreregex =</code>

Éditez aussi /etc/fail2ban/jail.conf, pour ajouter :

[dovecot]
enabled  = true
port     = smtp,ssmtp,imap2,imap3,imaps,pop3,pop3s
filter   = dovecot
logpath  = /var/log/mail.log</code>

Enfin, pensez à modifier le fichier /etc/dovecot/dovecot.conf pour décommenter la ligne :

#auth_verbose = yes

Puis rechargez la configuration, et voilà :)