Nous allons mettre en place un serveur mail relativement basique avec pour MTA Postfix et MDA Dovecot. L’accès à la boite mail se fera par un client lourd (genre thunderbirds) via IMAP/IMAPS avec une authentification sasl/Plain/TLS pour s’y connecter de n’importe où. Les utilisateurs seront les utilisateurs du serveurs de messagerie.

Installation

Nous allons donc installer le nécessaire sur notre serveur :

sudo aptitude install postfix dovecot-impad<br></br>#accessoirement on peut installer mailutils pour faire des tests<br></br>sudo aptitude install mailutils

Lors de l’installation, Postfix devrait vous poser des questions. Vous pouvez laisser les choix par défaut, sachant que nous allons reprendre intégralement la configuration.

Configuration

Nous allons d’abord configurer Postfix. Les fichiers de configuration se trouvent dans /etc/postfix. Ceux qui vont nous intéresser pour le moment sont main.cf pour la configuration d’accès et de distribution et master.cf pour la partie transport

Commencez par faire une copie de ce fichier.
sudo cp /etc/postfix/main.cf /etc/postfix/main.cf.orig

/etc/postfix/main.cf
#global<br></br>smtpd_banner = Qui me parle ?<br></br>#smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)<br></br>biff = no<br></br>append_dot_mydomain = no<br></br>delay_warning_time = 4h<br></br>readme_directory = no<br></br>inet_interfaces = all<br></br><br></br>myhostname = <nom_smtp_sur_internet><br></br>mydomain = <domain_local><br></br>mydestination = <domains_de_distribution><br></br>mynetworks = <réseau_local_x.x.x.x/24> 127.0.0.0/8<br></br>relayhost = <smtp_de_sortie><br></br><br></br>#Restrictions<br></br>smtpd_helo_required = yes<br></br>smtpd_recipient_restrictions = reject_unknown_sender_domain, reject_unknown_recipient_domain, reject_unauth_pipelining, permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination<br></br>smtpd_sender_restrictions = reject_unknown_sender_domain<br></br><br></br>#TLS<br></br>smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem<br></br>smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key<br></br>smtpd_use_tls=yes<br></br>smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache<br></br>smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache<br></br>smtpd_tls_received_header = yes<br></br>smtpd_tls_mandatory_protocols = SSLv3, TLSv1<br></br>smtpd_tls_mandatory_ciphers = medium<br></br>smtpd_tls_auth_only = yes<br></br>tls_random_source = dev:/dev/urandom<br></br><br></br>#SASL<br></br>smtpd_sasl_type = dovecot<br></br>smtpd_sasl_auth_enable = yes<br></br>smtpd_sasl_path = private/auth<br></br>smtpd_sasl_security_options = noanonymous<br></br>smtpd_sasl_tls_security_options = noanonymous<br></br>smtpd_sasl_local_domain = $myhostname<br></br>broken_sasl_auth_clients = yes<br></br><br></br>#Fichier<br></br>mailbox_size_limit = 0<br></br>recipient_delimiter = +<br></br>alias_maps = hash:/etc/aliases<br></br>alias_database = hash:/etc/aliases<br></br>home_mailbox = Maildir/<br></br>mailbox_command = /usr/lib/dovecot/deliver -c /etc/dovecot/dovecot.conf -m "${EXTENSION}"<br></br>

/etc/postfix/master.cf

Il faut dé-commenter les parties submission et smtps
submission inet n - - - - smtpd<br></br>-o syslog_name=postfix/submission<br></br>-o smtpd_tls_security_level=encrypt<br></br>-o smtpd_sasl_auth_enable=yes<br></br>-o smtpd_client_restrictions=permit_sasl_authenticated,reject<br></br>-o milter_macro_daemon_name=ORIGINATING<br></br>smtps inet n - - - - smtpd<br></br>-o syslog_name=postfix/smtps<br></br>-o smtpd_tls_wrappermode=yes<br></br>-o smtpd_sasl_auth_enable=yes<br></br>-o smtpd_client_restrictions=permit_sasl_authenticated,reject<br></br>-o milter_macro_daemon_name=ORIGINATING<br></br>
Nous allons maintenant configurer Dovecot pour qu’il distribue les mails et authentifie les utilisateurs
Il existe deux façons de configurer Dovecot. Soit on édite les fichiers contenus dans /etc/dovecot/conf.d/, soit on édite directement /etc/dovecot/dovecot.conf

C’est cette seconde méthode que nous allons utiliser. Commencez par faire une copie de ce fichier.
sudo cp /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf/orig

Remplacer ensuite le contenue de ce fichier par :
/etc/dovecot/dovecot.conf
log_path = /var/log/dovecot.log<br></br>log_timestamp = "%Y-%m-%d %H:%M:%S "<br></br><br></br>mail_location = maildir:~/Maildir<br></br>protocols = imap<br></br><br></br>#Auth<br></br>auth_mechanisms = plain login<br></br>auth_username_chars = abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890.-_@<br></br>#disable_plaintext_auth = no<br></br><br></br>service auth {<br></br># Postfix smtp-auth<br></br>unix_listener /var/spool/postfix/private/auth {<br></br>mode = 0660<br></br>user = postfix<br></br>group = postfix<br></br>}<br></br>}<br></br>userdb {<br></br>driver = passwd<br></br>}<br></br>passdb {<br></br>driver = pam<br></br>}<br></br><br></br>#SSL<br></br>ssl_cert =ssl_cipher_list = ALL:!LOW:!SSLv2:ALL:!aNULL:!ADH:!eNULL:!EXP:RC4+RSA:+HIGH:+MEDIUM<br></br>ssl_key =<br></br><br></br># IMAP configuration<br></br>protocol imap {<br></br>mail_max_userip_connections = 10<br></br>imap_client_workarounds = delay-newmail<br></br>}<br></br><br></br># LDA configuration<br></br>protocol lda {<br></br>log_path = ~/dovecot-deliver.log<br></br>postmaster_address = postmaster<br></br>deliver_log_format = msgid=%m: %$<br></br>}<br></br>

Utilisation

La configuration des clients se fait avec les paramètres suivants :

  • utilisateur : <nom_d’utilisateur> (sans le @)
  • port imaps : 993
  • port smtp : 465
  • sécurité imap et smtp : SSL/TLS
  • méthode d’authentification imap et smtp : mot de passe normal

Bonus

1 - Il est possible de faire l’installation plus rapidement en utilisant le meta paquet mail-stack-delivery. Ce paquet semble présent avec les distributions récentes. Il permet de mettre en place un serveur sécurisé avec Postfix/Dovecot et en grande partie configuré.

sudo aptitude install mail-stack-delivery

Il ne vous reste plus qu’à modifier les fichiers de configuration pour adapter à vos besoins. A noter que la configuration de Dovecot se fait par les fichiers spécifiques situés dans le dossier /etc/dovecot/conf.d/. Pour postfix, on reprend les fichiers /etc/postfix/main.cf et /etc/postfix/master.cf.

2 - il arrive que les FAI empêchent l’envoi de mail depuis un serveur, obligeant ainsi à utiliser leurs smtp. Il est parfois possible contourner cela en modifiant le port d’envoie du smtp. Pour cela il faut éditer fichier /etc/postfix/master.cf :

#changez la ligne <br></br>smtp inet - - - - - smtp<br></br><br></br>#comme ceci (le numéro de port est à votre convenance)<br></br>2525 inet - - - - - smtp<br></br>

3 - Pour respecter les bonnes pratiques il faut que le votre reverse DNS (FAI ou maison) retourne bien l’adresse de votre serveur. Cette manipulation n’est pas toujours possible pour les clients qui sont en ip dynamique (comme orange :s). Cela peut se vérifier comme suit :

# host <adresse_ip>

Si tout est bien configuré vous devriez voir apparaître le nom de votre serveur. Si ce n’est pas le cas il faut mettre en place un enregistrement PTR dans votre DNS.

4 - vous pouvez tester votre smpt avec cet outil en ligne : mxtoolbox

5 - Il est possible de faire des alias ou des adresses temporaires en utilisant le fichier /etc/aliases

Documentation