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
tuto:serveur_mail [2010/09/19 12:31] Thomastuto:serveur_mail [2015/03/15 12:03] (Version actuelle) – Ajout de création de table MySQL Thomas
Ligne 1: Ligne 1:
 ====== Mettre en place un serveur mail (sous slackware) ====== ====== Mettre en place un serveur mail (sous slackware) ======
  
-Mon but est d'installé un serveur mail basé sur [[http://www.postfix.org/|postfix]], [[http://www.dovecot.org/|dovecot]], puis configurer ces outils pour l'utiliser uniquement en [[http://fr.wikipedia.org/wiki/Webmail|webmail]] via [[http://www.roundcube.net/|roundcube]].+Mon but est d'installer un serveur mail basé sur [[http://www.postfix.org/|postfix]], [[http://www.dovecot.org/|dovecot]], puis de configurer ses outils pour l'utiliser en [[http://fr.wikipedia.org/wiki/Webmail|webmail]] via [[http://www.roundcube.net/|roundcube]] en utilisant le protocole [[http://fr.wikipedia.org/wiki/Imap|IMAP]], ou en passant par un quelconque client mail par IMAP ou [[http://fr.wikipedia.org/wiki/Post_Office_Protocol|POP]].
 L'installation de roundcube étant assez simple, je ne parlerai que de postfix et dovecot. L'installation de roundcube étant assez simple, je ne parlerai que de postfix et dovecot.
  
Ligne 31: Ligne 31:
 data_directory = /var/lib/postfix data_directory = /var/lib/postfix
  
 +# Général
 setgid_group = postdrop setgid_group = postdrop
 mail_owner = postfix mail_owner = postfix
Ligne 38: Ligne 39:
 mydestination = $mydomain, $myhostname, localhost.$mydomain, localhost mydestination = $mydomain, $myhostname, localhost.$mydomain, localhost
 mynetworks = 127.0.0.0/8 192.168.0.2 mynetworks = 127.0.0.0/8 192.168.0.2
- 
-proxy_interfaces = 192.168.1.1 
 unknown_local_recipient_reject_code = 550 unknown_local_recipient_reject_code = 550
-alias_database = hash:/etc/aliases +alias_database = hash:/etc/postfix/aliases 
-alias_maps = hash:/etc/aliases+alias_maps = hash:/etc/postfix/aliases 
 +transport_maps = hash:/etc/postfix/transport 
 + 
 +# Règles pour accepter ou refuser un message, dès lors qu'on connaît le 
 +# destinataire (par la commande RCPT TO) : 
 +# - s'il est destiné à un expéditeur forgé chez nous, on le rejette ; 
 +# - s'il est destiné à un domaine forgé, on le rejette ; 
 +# - s'il vient d'un hôte sûr ou d'un client authentifié, on l'accepte ; 
 +# - si l'adresse de destination n'est pas sous forme canonique, on le refuse ; 
 +# - finalement, s'il n'est pas destiné à un domaine que l'on gère ou pour 
 +#   lequel on relaie, on le refuse. 
 +smtpd_recipient_restrictions = 
 +  reject_unlisted_recipient, 
 +  reject_unknown_recipient_domain, 
 +  permit_mynetworks, 
 +  permit_sasl_authenticated, 
 +  reject_non_fqdn_recipient, 
 +  reject_unauth_destination 
 + 
 +# Règles pour accepter ou refuser une connexion : 
 +# - on attend une seconde (pour piéger les zombies) ; 
 +# - on interdit la parallélisation là où il n'est pas sensé y en avoir. 
 +smtpd_client_restrictions = 
 +  permit_mynetworks, 
 +  permit_sasl_authenticated, 
 +  sleep 1, 
 +  reject_unauth_pipelining 
 + 
 +# Règles pour accepter ou refuser un message, dès lors qu'on connaît le nom 
 +# de l'hôte de l'expéditeur (par sa commande HELO ou EHLO) : 
 +# - on refuse les noms d'hôte invalides. 
 +smtpd_helo_restrictions = reject_invalid_helo_hostname 
 + 
 +# Règles pour accepter ou refuser un message, dès lors qu'on connaît l'adresse 
 +# de l'expéditeur : 
 +# - s'il vient d'un expéditeur inexistant de notre domaine, on le rejette ; 
 +# - si le domaine de l'expéditeur n'a pas d'IP ou de MX, on le refuse ; 
 +# - s'il vient d'un client sûr ou d'un client authentifié, on l'accepte ; 
 +# - si l'adresse de l'expéditeur n'est pas sous forme canonique, on le refuse. 
 +smtpd_sender_restrictions = 
 +    reject_unlisted_sender, reject_unknown_sender_domain, 
 +    permit_mynetworks, permit_sasl_authenticated, 
 +    reject_non_fqdn_sender 
 + 
 +# SASL 
 +smtpd_sasl_type = dovecot 
 +smtpd_sasl_path = private/auth 
 +smtpd_sasl_auth_enable = yes 
 +smtpd_sasl_authenticated_header = yes 
 +broken_sasl_auth_clients = yes
  
 # TLS client # TLS client
 +smtp_tls_cert_file = /etc/ssl/private/smtp.pem
 +smtp_tls_key_file = $smtp_tls_cert_file
 smtp_tls_session_cache_database = btree:/var/lib/postfix/smtp_scache smtp_tls_session_cache_database = btree:/var/lib/postfix/smtp_scache
 smtp_tls_session_cache_timeout = 3600s smtp_tls_session_cache_timeout = 3600s
-#smtp_use_tls = yes 
-#smtp_enforce_tls = no 
 smtp_tls_security_level = may smtp_tls_security_level = may
 tls_daemon_random_bytes = 32 tls_daemon_random_bytes = 32
  
 # TLS server # TLS server
-smtpd_tls_cert_file = /etc/postfix/ssl/server.pem+smtpd_tls_cert_file = /etc/ssl/private/smtpd.pem
 smtpd_tls_key_file = $smtpd_tls_cert_file smtpd_tls_key_file = $smtpd_tls_cert_file
 smtpd_tls_received_header = yes smtpd_tls_received_header = yes
-#smtpd_use_tls yes +smtpd_tls_session_cache_database btree:/var/lib/postfix/smtpd_scache 
-#smtpd_enforce_tls no+smtpd_tls_security_level encrypt 
 +smtpd_tls_auth_only = yes
 smtpd_tls_security_level = may smtpd_tls_security_level = may
  
Ligne 73: Ligne 122:
 debug_peer_level = 2 debug_peer_level = 2
 debugger_command = debugger_command =
-  PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin +   PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin 
-  ddd $daemon_directory/$process_name $process_id & sleep 5 +   ddd $daemon_directory/$process_name $process_id & sleep 5
-html_directory = /usr/doc/postfix-2.7.1/html+
  
 # Doc # Doc
 manpage_directory = /usr/man manpage_directory = /usr/man
 readme_directory = /usr/doc/postfix-2.7.1/README_FILES readme_directory = /usr/doc/postfix-2.7.1/README_FILES
 +html_directory = /usr/doc/postfix-2.7.1/html
 +</code>
 +
 +Les lignes suivantes du fichier ''/etc/postfix/master.cf'' doivent être décommentées :
 +<code>
 +smtp      inet  n                               smtpd
 +submission inet n                               smtpd
 +  -o smtpd_enforce_tls=yes
 +  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
 +smtps     inet  n                               smtpd
 +  -o smtpd_tls_wrappermode=yes
 </code> </code>
  
Ligne 101: Ligne 160:
 Les lignes suivantes sont nécessaires dans le fichier ''/etc/dovecot/dovecot.conf'' : Les lignes suivantes sont nécessaires dans le fichier ''/etc/dovecot/dovecot.conf'' :
 <code> <code>
-protocols = imap +!include conf.d/*.conf 
-listen = 192.168.0.2+!include sasl.conf 
 +protocols = imap pop3 
 +listen = *, :: 
 +</code> 
 +J'ai créé le fichier ''/etc/dovecot/sasl.conf'' avec les lignes suivantes :  
 +<code> 
 +service auth { 
 +  unix_listener /var/spool/postfix/private/auth { 
 +    group = postfix 
 +    mode = 0660 
 +    user = postfix 
 +  } 
 +}
 </code> </code>
-En effet, comme le but est de n'utiliser le serveur mail que depuis une webmail, seul le protocole imap est nécessaire. Enfin il faut écouter sur l'adresse du serveur (ne pas mettre 127.0.0.1). 
  
 Ensuite le fichier ''/etc/dovecot/conf.d/auth-system.conf.ext'' doit contenir : Ensuite le fichier ''/etc/dovecot/conf.d/auth-system.conf.ext'' doit contenir :
Ligne 126: Ligne 196:
 <code>mail_location = maildir:~/Maildir</code> <code>mail_location = maildir:~/Maildir</code>
 Le but est donc d'utiliser une boîte de type maildir situé dans le $HOME de chaque utilisateur. Le but est donc d'utiliser une boîte de type maildir situé dans le $HOME de chaque utilisateur.
 +
 +Reste plus qu'à lancer dovecot :
 +<code># /etc/rc.d/rc.dovecot start</code>
 +
 +===== MySQL =====
 +<code># mysql --user=mail --password=<secret> mail</code>
 +<code>CREATE TABLE `virtual_domains` (
 +`id`  INT NOT NULL AUTO_INCREMENT,
 +`name` VARCHAR(50) NOT NULL,
 +PRIMARY KEY (`id`)
 +) ENGINE=InnoDB DEFAULT CHARSET=utf8;</code>
 +
 +<code>CREATE TABLE `virtual_users` (
 +`id` INT NOT NULL AUTO_INCREMENT,
 +`domain_id` INT NOT NULL,
 +`password` VARCHAR(106) NOT NULL,
 +`email` VARCHAR(120) NOT NULL,
 +PRIMARY KEY (`id`),
 +UNIQUE KEY `email` (`email`),
 +FOREIGN KEY (domain_id) REFERENCES virtual_domains(id) ON DELETE CASCADE
 +) ENGINE=InnoDB DEFAULT CHARSET=utf8;</code>
 +
 +<code>CREATE TABLE `virtual_aliases` (
 +`id` INT NOT NULL AUTO_INCREMENT,
 +`domain_id` INT NOT NULL,
 +`source` varchar(100) NOT NULL,
 +`destination` varchar(100) NOT NULL,
 +PRIMARY KEY (`id`),
 +FOREIGN KEY (domain_id) REFERENCES virtual_domains(id) ON DELETE CASCADE
 +) ENGINE=InnoDB DEFAULT CHARSET=utf8;</code>
tuto/serveur_mail.1284892310.txt.gz · Dernière modification : 2010/09/19 12:31 de Thomas
CC Attribution 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0