Outils pour utilisateurs

Outils du site


informatique:linux:postfix

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
informatique:linux:postfix [2007/09/21 15:33]
127.0.0.1 édition externe
informatique:linux:postfix [2018/10/17 12:59] (Version actuelle)
benoit [Tests]
Ligne 1: Ligne 1:
 +
 +
 +====== Postfix - Dovecot - Mysql - Postfixadmin sous debian lenny ======
 +
 +
 +===== Présentation de l'​architecture du système de messagerie =====
 +
 +Le système de messagerie se base sur un certain nombre de composants :
 +
 +  * **Postfix** : pour la remise et le routage des courriels entrants (SMTP)
 +  * **Dovecot** : pour récupérer les courriels en POP3, IMAP ou POP3s et IMAPs
 +  * **Mysql** : pour stocker les comptes utilisateurs de la messagerie, mais également les informations nécessaire au fonctionnement du Webmail.
 +  * **Postfixadmin** : Interface HTTP pour créer et supprimer des comptes de messagerie
 +  * **Webmail** : Interface HTTP sous **Squirrel Mail**, **IMP Horde** ou **groupOffice** pour que les utilisateurs puissent consulter leurs courriels depuis un navigateur
 +
 +
 +
 +**Ci-dessous le diagramme des flux internes et externes du système de messagerie entre les différents composants :**
 +
 +{{informatique:​linux:​postfix.png?​800}}
 +
 +Dans la section d'​installation nous allons mettre en place cette solution
 +
 ===== Installation ===== ===== Installation =====
-Installer le package ​suivant: +==== Introduction ==== 
-  postfix+L'​installation sera effectué dans l'​ordre suivant : 
 +  - Installation de MySQL et création de la base postfix et droits d'​accès à la base 
 +  - Installation de apache avec PHP5 avec connecteur MySQL 
 +  - Installation et configuration de postfixadmin 
 +  - Création du stockage des courriels 
 +  - Installation et configuration de postfix avec MySQL 
 +  - Installation et configuration de Dovecot avec MySQL 
 + 
 +L'​ensemble de la procédure est réalisée dans la console en tant que **root** (accès par SSH), l'​utilisation du navigateur dans certains cas vous sera précisé. 
 + 
 +==== Pré-requis ==== 
 + 
 +Le dépôt debian pour **apt** doit être configuré de façon à pouvoir récupérer des paquetages soit sur le CD soit sur Internet. 
 + 
 +==== Choses à savoir avant installation ==== 
 + 
 +Si vous rencontrez des problèmes pendant l'​installation vous pouvez consulter les logs dans : 
 + 
 +  /​var/​log/​mail.err 
 +  /​var/​log/​mail.info 
 +  /​var/​log/​mail.log 
 +  /​var/​log/​mail.warn 
 + 
 +==== Mysql ==== 
 +Installer ​MySQL par la commande suivante : 
 +  apt-get install mysql-client mysql-server 
 + 
 +Répondre aux questions relative à l'​installation de MySQL 
 + 
 +Se connecter au serveur pour créer la base postfix : 
 +  mysql -u root -p 
 + 
 +Ici allons :  
 +  * créer la base **postfix** 
 +  * créer un utilisateur **postfix@localhost** 
 +  * donner tous les droits à l'​utilisateur **postfix@localhost** sur base **postfix** 
 + 
 +  CREATE DATABASE postfix; 
 +  CREATE USER '​postfix'​@'​localhost'​ IDENTIFIED BY '​definir_un_mdp';​ 
 +  GRANT ALL PRIVILEGES ON `postfix` . * TO '​postfix'​@'​localhost';​ 
 +  quit 
 + 
 + 
 +   
 + 
 +==== Apache ==== 
 +Installer Apache et PHP par la commande suivante : 
 +  apt-get install apache2 php5 php5-mysql php5-imap 
 + 
 +Redémarrer apache : 
 +  /​etc/​init.d/​apache2 restart 
 + 
 +==== Postfixadmin ==== 
 +Télécharger postfixadmin chez l'​éditeur : 
 +  cd /tmp 
 +  wget http://​sourceforge.net/​projects/​postfixadmin/​files/​postfixadmin/​postfixadmin-2.2.1.1.tar.gz/​download 
 + 
 +Décompacter l'​archive : 
 +  tar xzf /​tmp/​postfixadmin-2.2.1.1.tar.gz 
 + 
 +Déplacer et renommer ​le répertoire décompecté dans le répertoire d'​apache:​ 
 +  mv /​tmp/​postfixadmin-2.2.1.1 /​var/​www/​postfixadmin 
 + 
 +Lancer la commande ''​vi /​var/​www/​postfixadmin/​config.inc.php''​ pour éditer la configuration de **postfixadmin** et changer les paramètres suivants: 
 + 
 +  $CONF['​configured'​] = true; 
 +  ... 
 +  $CONF['​database_type'​] = '​mysqli';​ 
 +  $CONF['​database_host'​] = '​localhost';​ 
 +  $CONF['​database_user'​] = '​postfix';​ 
 +  $CONF['​database_password'​] = '​passwd4postfix';​ 
 +  $CONF['​database_name'​] = '​postfix';​ 
 +  $CONF['​database_prefix'​] = '';​ 
 +  ... 
 +  $CONF['​admin_email'​] = '​postmaster@domain.com';​ 
 +  ... 
 +  $CONF['​default_aliases'​] = array ( 
 +      '​abuse'​ => '​abuse@host.domain.com',​ 
 +      '​hostmaster'​ => '​hostmaster@mailhost.domain.com',​ 
 +      '​postmaster'​ => '​postmaster@mailhost.domain.com',​ 
 +      '​webmaster'​ => '​webmaster@mailhost.domain.com'​ 
 +  ); 
 +  $CONF['​domain_path'​] = '​YES';​ 
 +  ... 
 +  $CONF['​domain_in_mailbox'​] = '​NO';​ 
 +  ... 
 +  $CONF['​emailcheck_resolve_domain'​]='​NO';​ 
 + 
 +Nous allons maintenant terminer la configuration depuis votre navigateur : **http://​mailhost.domain.com/​postfixadmin/​setup.php** 
 + 
 +Normalement lorsque la page est chargée, tout doit être **"​OK"​** il ne doit y avoir aucune erreur. Il vous est proposé de créer un compte administrateur,​ créez le librement. 
 + 
 +Une fois le compte administrateur créer, retourner sur la console et supprimer le fichier ''​setup.php''​ 
 +  rm /​var/​www/​postfixadmin/​setup.php 
 + 
 +Vous pouvez désormais créer des domaines de messagerie et des comptes mail sur **http://​mailhost.domain.com/​postfixadmin/​** 
 + 
 +Attention :!: ces comptes ne seront pas fonctionnels tant que **postfix** et **dovecot** ne seront pas installés. 
 + 
 +==== Espace de stockage ==== 
 +Pour créer un utilisateur,​ groupe et répertoire pour l'​espace de stockage des mails lancer les commandes suivantes : 
 + 
 +  groupadd -g 5000 vmail 
 +  useradd -g vmail -u 5000 vmail -d /home/vmail -m 
 + 
 +==== Postfix ==== 
 +Installer Postfix et son module Mysql : 
 +  apt-get install postfix postfix-mysql 
 + 
 +A la question choisir : 
 +  pas de configuration 
 + 
 +Pour configurer postfix créer et éditer le fichier **/​etc/​postfix/​main.cf** de façon à obtenir le contenu ​suivant : 
 + 
 +  ​# Nom d'hote du serveur , veiller à ce que ce nom soit fqdn et qu'il soit existant dans le domaine (reverse dns) 
 +  myhostname=mailhost.domain.com 
 +   
 +  # Destinations locales gérés par postfix ​Attention à ne pas mettre un domaines que vous allez gérer virtuellement 
 +  mydestination=mailhost.domain.com,​ localhost.domain.com,​ localhost 
 +   
 +  # Permet de definir un relais pour vos mails sortant exemple : [smtp.nordnet.fr] vide par defaut 
 +  relayhost=smtp.orange.fr 
 +   
 +  # mynetworks permet de définir le/les réseaux qui sont autorisé à envoyer des mails 
 +  mynetworks=127.0.0.0/​8 192.168.40.0/​24 
 +   
 +  # mydomain permet de définir le domaine internet du système de messagerie 
 +  mydomain=domain.com 
 +   
 +  # smtpd_recipient_restrictions permet d'​ajouter des restrictions sur les mails entrant 
 +  smtpd_recipient_restrictions= 
 +          permit_mynetworks,​ 
 +          permit_sasl_authenticated,​ 
 +          reject_unauth_destination,​ 
 +          reject_non_fqdn_recipient,​ 
 +  #        reject_unknown_sender_domain,​ 
 +  #        reject_non_fqdn_sender,​ 
 +  #        reject_unknown_recipient_domain,​ 
 +  #        reject_invalid_helo_hostname,​ 
 +  #        reject_unlisted_recipient,​ 
 +  #        reject_unlisted_sender,​ 
 +  #        reject_non_fqdn_helo_hostname,​ 
 +  #        reject_rbl_client list.dsbl.org,​ 
 +  #        reject_rhsbl_sender dsn.rfc-ignorant.org 
 +   
 +  # message_size_limit correspond à la taille maximale d'un message en octets 
 +  message_size_limit=10240000 
 +   
 +  # Fichier de requete SQL pour les alias et redirections mails  
 +  virtual_alias_maps = mysql:/​etc/​postfix/​mysql-virtual-alias-maps.cf 
 +   
 +  # Fichier de requete SQL pour les domaines pris en charges 
 +  virtual_mailbox_domains = mysql:/​etc/​postfix/​mysql-virtual-mailbox-domains.cf 
 +   
 +  # Fichier de requete SQL pour les comptes de messagerie 
 +  virtual_mailbox_maps = mysql:/​etc/​postfix/​mysql-virtual-mailbox-maps.cf 
 +   
 +  local_transport = virtual 
 +  local_recipient_maps = $virtual_mailbox_maps 
 +   
 +  # UID et GID à fixer pour le stockage de mail 
 +  virtual_uid_maps = static:​5000 
 +  virtual_gid_maps = static:​5000 
 +   
 +  # Répertoire de base où sont stockés les mails 
 +  virtual_mailbox_base = /​home/​vmail 
 + 
 +Nous allons maintenant créer les 3 fichiers de requêtes SQL : 
 + 
 +Lancer ''​vi /​etc/​postfix/​mysql-virtual-alias-maps.cf''​ et insérer le contenu suivant : 
 +  user = postfix 
 +  password = mdp_defini_dans_mysql 
 +  hosts = 127.0.0.1 
 +  dbname = postfix 
 +  query= SELECT goto FROM alias WHERE address='​%s'​ 
 + 
 +Lancer ''​vi /​etc/​postfix/​mysql-virtual-mailbox-domains.cf''​ et insérer le contenu suivant : 
 +  user = postfix 
 +  password = mdp_defini_dans_mysql 
 +  hosts = 127.0.0.1 
 +  dbname = postfix 
 +  query= SELECT domain FROM domain WHERE domain='​%s'​ 
 + 
 +Lancer ''​vi /​etc/​postfix/​mysql-virtual-mailbox-maps.cf''​ et insérer le contenu suivant : 
 +  user = postfix 
 +  password = mdp_defini_dans_mysql 
 +  hosts = 127.0.0.1 
 +  dbname = postfix 
 +  query= SELECT maildir FROM mailbox WHERE username='​%s'​ AND active='​1'​ 
 + 
 +Redémarrer Postfix par le commande : 
 +  /​etc/​init.d/​postfix restart 
 + 
 +==== Dovecot ==== 
 +Lancer la commande suivante pour installer **dovecot** : 
 +  apt-get install dovecot-common dovecot-imapd dovecot-pop3 
 + 
 +Faire une sauvegarde du fichier de configuration de dovecot : 
 +  mv /​etc/​dovecot/​dovecot.conf /​etc/​dovecot/​dovecot.conf.bkp 
 + 
 +Recréer le fichier de configuration en lançant la commande : ''​vi /​etc/​dovecot/​dovecot.conf''​ et insérer le contenu suivant : 
 +  protocols = imap pop3 imaps pop3s 
 +  listen = [::] 
 +  disable_plaintext_auth = no 
 +  log_timestamp = "​%Y-%m-%d %H:%M:%S " 
 +  ssl_listen = [::] 
 +  mail_location = maildir:/​home/​vmail/​%d/​%n 
 +  mail_privileged_group = mail 
 +  protocol imap { 
 +        mail_plugins = quota imap_quota 
 +  } 
 +  protocol pop3 { 
 +       ​pop3_uidl_format = %08Xu%08Xv 
 +       ​mail_plugins = quota 
 +  } 
 +  protocol lda { 
 +       ​mail_plugins = quota 
 +  } 
 +  auth default { 
 +       ​mechanisms = plain 
 +       ​passdb sql { 
 +             args = /​etc/​dovecot/​dovecot-sql.conf 
 +       } 
 +       ​userdb sql { 
 +            args = /​etc/​dovecot/​dovecot-sql.conf 
 +       } 
 +       user = root 
 +       count = 2 
 +  } 
 +  dict { 
 +  } 
 +  plugin { 
 +       #​exemple pour un stockage de 5Gb par compte et/ou 1000000000000 mails 
 +        quota = maildir:​storage=5242880:​messages=1000000000000 
 +  } 
 + 
 +Nous allons créer le fichier de requête SQL pour l'​authentification par SQL, lancer la commande ''​vi /​etc/​dovecot/​dovecot-sql.conf''​ et insérer à la fin le contenu suivant : 
 + 
 +  # Type de base SQL 
 +  driver = mysql 
 +   
 +  # Information de connexion à la base MySQL 
 +  connect = host=127.0.0.1 dbname=postfix user=postfix password=passwd_defini_dans_mysql 
 +   
 +  # md5crypt ​ -> MD5-CRYPT 
 +  # md5       -> PLAIN-MD5 
 +  # cleartext -> PLAIN 
 +  #Type de cryptage di mot de passe 
 +  default_pass_scheme = MD5-CRYPT 
 +   
 +  # Requete pour obtenir le mot de passe 
 +  password_query = SELECT password FROM mailbox WHERE username = '​%u'​ 
 +   
 +  # Requete pour obtenir les informations d'un compte. 
 +  user_query = SELECT maildir, 5000 AS uid, 5000 AS gid FROM mailbox WHERE username = '​%u'​ 
 + 
 + 
 +==== Tests ==== 
 + 
 +Voir : [[telnet_test_mail|Tests protocoles mail en telnet]] 
 +===== Installation de modules complémentaires ===== 
 + 
 + 
 +==== ClamAV ==== 
 +=== Description === 
 +ClamAV est un antivirus libre s'​intégrant à Postfix. Les mails entreront dans le serveur par SMTP, postfix redirigera le mail à ClamAV par le port 10025 et ClamAV reinjectera le mail dans Postfix par le port 10026. 
 + 
 +{{informatique:​linux:​postfix-clamav.png?​300}} 
 + 
 +=== Installation du produit === 
 + 
 +Lancer la commande suivante pour installer les paquetages : 
 +  apt-get install clamsmtp clamav-freshclam 
 + 
 +=== Configuration === 
 +Nous allons dire à Postfix d'​envoyer les messages ​ entrants dans un filtre nommé **scan** par le port **10025**. Pour cela éditer le fichier ''/​etc/​postfix/​main.cf''​ et ajouter à la fin la ligne suivante : 
 +  content_filter = scan:​[127.0.0.1]:​10025 
 + 
 +Nous allons créer la fonction **scan** et créer le service de ré-injection des messages vers postfix sur le port 10026. Pour cela éditer le fichier ''/​etc/​postfix/​master.cf''​ et ajouter à la fin les lignes suivantes : 
 + 
 +  # AV scan filter (used by content_filter) 
 +  scan      unix  -       ​- ​      ​n ​      ​- ​      ​16 ​     smtp 
 +          -o smtp_send_xforward_command=yes 
 +          -o smtp_enforce_tls=no 
 +  # For injecting mail back into postfix from the filter 
 +  127.0.0.1:​10026 inet  n -       ​n ​      ​- ​      ​16 ​     smtpd 
 +          -o content_filter= 
 +          -o receive_override_options=no_unknown_recipient_checks,​no_header_body_checks 
 +          -o smtpd_helo_restrictions= 
 +          -o smtpd_client_restrictions= 
 +          -o smtpd_sender_restrictions= 
 +          -o smtpd_recipient_restrictions=permit_mynetworks,​reject 
 +          -o mynetworks_style=host 
 +          -o smtpd_authorized_xforward_hosts=127.0.0.0/​8 
 + 
 +Nous allons modifier les ports d'​écoute de **clamsmtpd** et l'​injection des mail après Scan. Editer le fichier ''/​etc/​clamsmtpd.conf''​ et modifier les lignes suivantes : 
 +  OutAddress: ​ 127.0.0.1:​10026 
 +  #Listen: 127.0.0.1:​10026 (à commenter) 
 +  Header: X-AV-Checked:​ ClamAV using ClamSMTP 
 + 
 +Redémarrer **clamsmtp** et **postfix** : 
 + 
 +  /​etc/​init.d/​postfix stop 
 +  /​etc/​init.d/​clamsmtp stop 
 +  /​etc/​init.d/​clamsmtp start 
 +  /​etc/​init.d/​postfix start 
 + 
 +Planifier la mise à jour de la base AntiVirus tous les jours à 1h25, lancer la commande ''​crontab -e''​ pour éditer la planification : 
 +  25 1 * * * /​usr/​bin/​freshclam --quiet 
 + 
 + 
 +==== Spamassassin ==== 
 + 
 + 
 + 
 + 
 + 
 +===== Exploitation de postfix ===== 
 +Les commandes suivantes permettent de lister les messages de la file d'​attente :  
 +  postqueue -p 
 +  mailq 
  
-sous Redhat pour le lancer au demarrage du système+Pour relancer l'​envoi les messages en attente dans la file 
-  ​chkconfig ​--add postfix +  ​postqueue ​-f
-  chkconfig postfix on+
  
 +Pour effacer un message de la file d'​attente : 
 +  postsuper -d 3EA3E17CC4
  
-===== Configuration ===== +Pour effacer tous les messages : 
-Paramètres à modifier dans /​etc/​postfix/​main.cf +  ​postsuper -ALL
-  ​# Nom ud serveur affiché lors de la connexion SMTP +
-  myhostname = smtp.zikdomain.com +
-  # domaine principal +
-  mydomain = zikdomain.com +
-  # domain source +
-  myorigin = $mydomain +
-  # interfaces ​d'​ecoute  +
-  inet_interfaces = all +
-  #​inet_interfaces = localhost +
-  # machines autorisées a se connecter +
-  mynetworks = 10.0.0.0/24+
informatique/linux/postfix.1190381621.txt.gz · Dernière modification: 2018/09/06 19:00 (modification externe)