Installer un serveur web avec Debian

3) Configuration du serveur de mail

Installons d’abord le serveur pop/imap que nous configurerons pour servir les mails grâce aux protocoles sécurisés pop3s et imaps.

précédent - suivant


Nous choisissons le serveur Dovecot

# aptitude install dovecot-common dovecot-pop3d dovecot-imapd
Cela installe aussi : libmysqlclient15off libpq4 libsqlite3-0 mysql-common

Puis il faut le configurer (TODO expliquer la config) Attention, ce fichier de conf est écrit en python, faites donc bien gaffe de respecter l’indentation des blocs :

# nano /etc/dovecot/dovecot.conf
 21> protocols = imaps pop3s
 46> disable_plaintext_auth = yes
 91> ssl_cert_file = /etc/ssl/certs/dovecot.pem
 92> ssl_key_file = /etc/ssl/private/dovecot.pem
953>   socket listen {
966>     client {
970>       path = /var/spool/postfix/private/auth
971>       mode = 0660
972>       user = postfix
973>       group = postfix
974>     }
975>   }

On le lance, et c’est gentil il change les permissions des fichiers comme il faut :)

invoke-rc.d dovecot start
> Restarting mail server : dovecotWarning : Fixing permissions of /var/run/dovecot to be world-readable
> Warning : Corrected permissions for login directory /var/run/dovecot/login

On peut dès ce moment tester notre installation du serveur pop3s en configurant un client mail pour s’envoyer puis rapatrier nos mail.

texte - 649 octets
dovecot.conf.diff
texte - 40 ko
/etc/dovecot/dovecot.conf

La configuration du serveur smtp :

# nano /etc/postfix/master.cf
10> submission inet n       -       -       -       -       smtpd
11>   -o smtpd_enforce_tls=yes
12>   -o smtpd_sasl_auth_enable=yes
13>   -o smtpd_client_restrictions=permit_sasl_authenticated,reject
14> smtps     inet  n       -       -       -       -       smtpd
15>   -o smtpd_tls_wrappermode=yes
16>   -o smtpd_sasl_auth_enable=yes
17>   -o smtpd_client_restrictions=permit_sasl_authenticated,reject
Voilà pour l’authentification pour l’utilisation du serveur smtp
texte - 804 octets
master.cf.diff
texte - 3.8 ko
/etc/postfix/master.cf

Maintenant on va configurer postfix pour y rajouter la possibilité d’avoir plusieurs nom de domaine (les virtualhosts) et aussi pour le sécuriser un peu plus.

Un utilisateur pour postfix est utilisé pour ranger les mails, nous créons donc son dossier d’action et son compte :

# mkdir /var/mail/virtuel
# adduser —home /var/mail/virtuel —disabled-login —ingroup mail mailvirtuel
# chown mailvirtuel:mail /var/mail/virtuel
# chmod 700 /var/mail/virtuel
> Ajout du nouvel utilisateur « mailvirtuel » (1002) avec le groupe « mail »…
> Le répertoire personnel « /var/mail/virtuel » existe déjà.
Notez bien l’uid de cet utilisateur, il va falloir le reporter dans le fichier de configuration main.cf

Trois fichiers texte pour configurer notre serveur de mail :

  • vhosts.txt pour y mettre nos noms de domaines
  • vmaps.txt avec les comptes pop/imap
  • valias.txt pour les redirections de mail
# touch /etc/postfix/{vhosts.txt,vmaps.txt,valias.txt}

Configuration de postfix, oulala c’est long…

# nano /etc/postfix/main.cf

Authentification en en utilisant dovecot

23> smtpd_tls_auth_only = yes


27> # SASL 28> smtpd_sasl_type = dovecot 29> smtpd_sasl_path = private/auth 30> smtpd_sasl_auth_enable = yes

Tous un tas de mesure "anti-spam", rejeter tout autre serveur smtp un tant soit peu mal configuré…

32> # Anti-spam !
33> # voir http://madism.org/ madcoder/etc/pos…
34> # et http://www.postfix.org/postconf.5.html


36> disable_vrfy_command = yes 37> smtpd_helo_required = yes 38> strict_rfc821_envelopes = yes 39> smtpd_junk_command_limit = 2 40> smtpd_soft_error_limit = 2 41> smtpd_hard_error_limit = 4 42> smtpd_error_sleep_time = 10s 43> message_reject_characters = \0

45> smtpd_client_restrictions = 46> reject_unknown_client_hostname 47> permit 48> smtpd_helo_restrictions = 49> reject_unknown_client_hostname 50> reject_invalid_helo_hostname 51> reject_non_fqdn_helo_hostname 52> reject_unknown_helo_hostname 53> permit 54> smtpd_recipient_restrictions = 55> reject_non_fqdn_sender 56> reject_non_fqdn_recipient 57> reject_unknown_sender_domain 58> reject_unknown_recipient_domain 59> permit_mynetworks 60> permit_sasl_authenticated 61> reject_unauth_pipelining 62> reject_invalid_hostname 63> reject_non_fqdn_hostname 64> reject_unauth_destination 65> reject_unlisted_sender 66> permit 67> smtpd_data_restrictions = 68> reject_unauth_pipelining 69> reject_multi_recipient_bounce 70> permit

Configuration de notre nom de domaine, on ne le met pas dans mydestination, car il va être comme les autres domaines configurés dans vhosts.txt

75> mydomain = mutants.mutins.net
76> mydestination = localhost

Configuration pour les virtualhosts

85> # pour les virtualsmail
86> # mailvirtuel 1002 : 8
87> virtual_mailbox_domains = /etc/postfix/vhosts.txt
88> virtual_mailbox_base = /var/mail/virtuel
89> virtual_mailbox_maps = hash:/etc/postfix/vmaps.txt
90> virtual_alias_maps =
91>    hash:/etc/postfix/valias.txt,
92> virtual_uid_maps = static:1002
93> virtual_gid_maps = static:8
texte - 2.5 ko
/etc/postfix/main.cf
texte - 1.7 ko
main.cf.diff

Nous avons configuré postfix pour gérer plusieurs noms de domaine (virtualhosts), il nous faut revenir sur la configuration de dovecot pour qu’il gère les dossiers de mail de la même manière. Et nous allons utiliser un fichier texte pour enregistrer les mots de passe de nos utilisateurs.

# touch /etc/dovecot/passwd
# chmod 600 /etc/dovecot/passwd
# nano /etc/dovecot/dovecot.conf
208> mail_location = maildir:/var/mail/virtuel/%d/%n


782> #passdb pam { 811> #{

834> passdb passwd-file { 836> args = /etc/dovecot/passwd 837> }

880> #userdb passwd { 881> #}

892> userdb static { 898> args = uid=1002 gid=8 mail=maildir:/var/mail/virtuel/%d/%n 899> }

Relançons tout cela en croisant les doigts !

# invoke-rc.d dovecot restart
# invoke-rc.d postfix reload
texte - 40.1 ko
/etc/dovecot/dovecot.conf.2
texte - 538 octets
dovecot.conf.2.diff

précédent - suivant


Arnaud , le 23/04/2010 (dernière modif : 23/01/2009)