Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Prochaine révision
Révision précédente
tuto:serveur_mail [2010/09/19 12:25] – créée 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> </code>
-En effet, comme le but est de n'utiliser le serveur mail que depuis une webmail, seul le protocole imap est nécessaireEnfin il faut écouter sur l'adresse du serveur (ne pas mettre 127.0.0.1).+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> 
 + 
 +Ensuite le fichier ''/etc/dovecot/conf.d/auth-system.conf.ext'' doit contenir : 
 +<code> 
 +passdb { 
 +  driver = shadow 
 +  # [blocking=no] 
 +  #args = 
 +
 + 
 +userdb { 
 +  # <doc/wiki/AuthDatabase.Passwd.txt> 
 +  driver = passwd 
 +  # [blocking=no] 
 +  #args =  
 +
 +</code> 
 +Dans ce cas ce sont les comptes unix qui sont utilisés. 
 + 
 +Maintenant le fichier ''/etc/dovecot/conf.d/10-mail.conf'' 
 +<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. 
 + 
 +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(50NOT 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.1284891918.txt.gz · Dernière modification : 2010/09/19 12:25 de Thomas
CC Attribution 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0