Outils pour utilisateurs

Outils du site


informatique:linux:postfix

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 :

Dans la section d'installation nous allons mettre en place cette solution

Installation

Introduction

L'installation sera effectué dans l'ordre suivant :

  1. Installation de MySQL et création de la base postfix et droits d'accès à la base
  2. Installation de apache avec PHP5 avec connecteur MySQL
  3. Installation et configuration de postfixadmin
  4. Création du stockage des courriels
  5. Installation et configuration de postfix avec MySQL
  6. 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

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.

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

Pour relancer l'envoi les messages en attente dans la file :

postqueue -f

Pour effacer un message de la file d'attente :

postsuper -d 3EA3E17CC4

Pour effacer tous les messages :

postsuper -d ALL
informatique/linux/postfix.txt · Dernière modification: 2018/10/17 12:59 par benoit