<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fr">
	<id>https://lea-linux.org/docs/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Cube45+%28phorum%29</id>
	<title>Lea Linux - Contributions [fr]</title>
	<link rel="self" type="application/atom+xml" href="https://lea-linux.org/docs/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Cube45+%28phorum%29"/>
	<link rel="alternate" type="text/html" href="https://lea-linux.org/documentations/Sp%C3%A9cial:Contributions/Cube45_(phorum)"/>
	<updated>2026-04-28T14:05:04Z</updated>
	<subtitle>Contributions</subtitle>
	<generator>MediaWiki 1.40.1</generator>
	<entry>
		<id>https://lea-linux.org/docs/index.php?title=Postfix_Courier_MySQL_Quota_SpamAssassin_Amavis&amp;diff=14353</id>
		<title>Postfix Courier MySQL Quota SpamAssassin Amavis</title>
		<link rel="alternate" type="text/html" href="https://lea-linux.org/docs/index.php?title=Postfix_Courier_MySQL_Quota_SpamAssassin_Amavis&amp;diff=14353"/>
		<updated>2007-02-28T17:34:03Z</updated>

		<summary type="html">&lt;p&gt;Cube45 (phorum) : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;h1&amp;gt;Postfix, Courier Imap &amp;amp;amp; Pop, MySQL et Quota avec filtre AntiSpam et antivirus sous Debian&amp;lt;/h1&amp;gt;&lt;br /&gt;
Par [[Utilisateur:Space2d|Space2d]]&lt;br /&gt;
Page d&#039;origine sur [http://www.espace.fr.to/howto/postfix-courier-mysql-quota-spamassassin-amavis.html www.espace.fr.to/howto]&lt;br /&gt;
&lt;br /&gt;
Le but de cet howto est d&#039;expliquer comment mettre en place un serveur email complet, supportant plusieurs domaines sous Debian GNU/Linux.&lt;br /&gt;
Celui-ci sera composé des éléments suivants :&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;un serveur smtp : Postfix (avec patch vda supportant la gestion des quotas)&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;un serveur imap/pop : Courier&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;un serveur mysql : MySQL&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;un antivirus : Amavis&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;un filtre antispam : SpamAssassin&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;h2&amp;gt;Introduction&amp;lt;/h2&amp;gt;&lt;br /&gt;
Au début, j&#039;utilisais le serveur de courier postfix avec la configuration&lt;br /&gt;
d&#039;origine utilisant l&#039;authentification unix. J&#039;ai eu besoin de servir plusieurs domaines ainsi que des comptes mails virtuels.&lt;br /&gt;
En effet, l&#039;utilisation des utilisateurs unix n&#039;est pas adaptée à une configuration multidomaine.&lt;br /&gt;
Désormais, je peux administrer facilement mes domaines et comptes email via l&#039;interface Web PHPMyAdmin.&lt;br /&gt;
Il est aussi possible de créer une interface spécifique à cette gestion par exemple en utilisant php &lt;br /&gt;
&amp;lt;h2&amp;gt;Prérequis&amp;lt;/h2&amp;gt;&lt;br /&gt;
Il vous faut un système avec un serveur MySQL installé avec si possible un serveur web et PHPMyAdmin pour faciliter l&#039;administration de la BD.&lt;br /&gt;
Cette documentation est écrite pour un système Debian GNU/linux&lt;br /&gt;
&amp;lt;h2&amp;gt;La base de données&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;h3&amp;gt;Description de la structure&amp;lt;/h3&amp;gt;&lt;br /&gt;
Cette base de données sera structurée dans les 4 tables suivantes :&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;les domaines&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;domaine&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;actif (1 pour oui, 0 pour non)&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
  &amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;les emails&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;email&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;mot de passe&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;quota&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;accès pop3 (1 pour oui, 0 pour non)&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;accès imap (1 pour oui, 0 pour non)&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;compte email actif (1 pour oui, 0 pour non)&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
  &amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;les alias&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;email&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;alias (contient une liste d&#039;emails séparés par une virgule vers lesquels seront dirigés les emails reçu par &#039;email&#039;)&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;compte email actif (1 pour oui, 0 pour non)&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
  &amp;lt;/li&amp;gt; &lt;br /&gt;
&amp;lt;/ul&amp;gt; &lt;br /&gt;
&amp;lt;h3&amp;gt;Creation de la base et de l&#039;utilisateur SQL&amp;lt;/h3&amp;gt;&lt;br /&gt;
Entrez dans l&#039;interface de la base de données :&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;si vous n&#039;avez jamais modifier les utilisateurs de la base, vous puvez acceder à la base de données en tant que root sans mot de passe.&lt;br /&gt;
     Il est conseillé d&#039;ajouter un mot de passe un root pour d&#039;évidente questions de sécurité avec la commande :&lt;br /&gt;
     &amp;lt;code&amp;gt;mysqladmin -u root password votre-mot-de-passe&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;sinon (avec un utilisateur/pwd ayant le droit de modifier la base): &amp;lt;code&amp;gt;mysql -u &#039;&#039;utilisateur&#039;&#039; -p&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
Il faut tout d&#039;abord créer la base de données (ex : postfix) et les tables qu&#039;elle contient.&lt;br /&gt;
&amp;lt;div class=&amp;quot;code&amp;quot;&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
CREATE DATABASE `postfix`;&lt;br /&gt;
USE postfix;&lt;br /&gt;
&lt;br /&gt;
-- &lt;br /&gt;
-- Structure de la table `domain`&lt;br /&gt;
-- &lt;br /&gt;
CREATE TABLE `domain` (&lt;br /&gt;
  `domain` varchar(255) NOT NULL default &#039;&#039;,&lt;br /&gt;
  `actif` tinyint(1) NOT NULL default &#039;1&#039;,&lt;br /&gt;
  PRIMARY KEY  (`domain`)&lt;br /&gt;
) ENGINE=MyISAM COMMENT=&#039;Postfix Admin - Domaines Virtuels&#039;;&lt;br /&gt;
&lt;br /&gt;
-- &lt;br /&gt;
-- Structure de la table `mailbox`&lt;br /&gt;
-- &lt;br /&gt;
CREATE TABLE `mailbox` (&lt;br /&gt;
  `email` varchar(255) NOT NULL default &#039;&#039;,&lt;br /&gt;
  `password` varchar(255) NOT NULL default &#039;&#039;,&lt;br /&gt;
  `quota` int(10) NOT NULL default &#039;0&#039;,&lt;br /&gt;
  `actif` tinyint(1) NOT NULL default &#039;1&#039;,&lt;br /&gt;
  `imap` tinyint(1) NOT NULL default &#039;1&#039;,&lt;br /&gt;
  `pop3` tinyint(1) NOT NULL default &#039;1&#039;,&lt;br /&gt;
  PRIMARY KEY  (`email`)&lt;br /&gt;
) ENGINE=MyISAM COMMENT=&#039;Postfix Admin - Boites Emails Virtuelles&#039;;&lt;br /&gt;
&lt;br /&gt;
-- &lt;br /&gt;
-- Structure de la table `alias`&lt;br /&gt;
-- &lt;br /&gt;
CREATE TABLE `alias` (&lt;br /&gt;
  `source` varchar(255) NOT NULL default &#039;&#039;,&lt;br /&gt;
  `destination` text NOT NULL,&lt;br /&gt;
  `actif` tinyint(1) NOT NULL default &#039;1&#039;,&lt;br /&gt;
  PRIMARY KEY  (`source`)&lt;br /&gt;
) ENGINE=MyISAM COMMENT=&#039;Postfix Admin - Alias Virtuels&#039;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
Ensuite, les différents services doivent accéder à cette base de données. Pour des raisons de sécurité évidentes,&lt;br /&gt;
il est nécessaire de créer un utilisateur MySQL qui n&#039;a accès qu&#039;en lecture (SELECT) à la base &#039;postfix&#039;. &lt;br /&gt;
Pour l&#039;exemple, celui-ci s&#039;appelera &#039;postfix&#039; avec comme mot de passe &#039;pass&#039;.&lt;br /&gt;
Pour le créer, il suffit de taper les commandes suivantes dans la console MySQL :&lt;br /&gt;
&amp;lt;div class=&amp;quot;code&amp;quot;&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
GRANT SELECT ON `postfix`.* TO &#039;postfix&#039;@&#039;%&#039;&lt;br /&gt;
IDENTIFIED BY &#039;pass&#039;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Postfix&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;h3&amp;gt;Installation&amp;lt;/h3&amp;gt;&lt;br /&gt;
Pour l&#039;instant, Postfix ne supporte pas les quotas en natif. Cependant, le patch VDA offre cette possibilité.&lt;br /&gt;
Pour ne pas recompiler postfix en intégrant le patch VDA, nous allons utiliser le dépot de paquets non-officiel pour Debian : [http://debian.home-dn.net http://debian.home-dn.net]&lt;br /&gt;
Il faut ajouter les lignes suivantes à la liste des dépots de votre serveur dans le fichier &amp;lt;code&amp;gt;/etc/apt/sources.list&amp;lt;/code&amp;gt; (vous devez être logué en root pour pouvoir modifier ce fichier) :&lt;br /&gt;
&amp;lt;div class=&amp;quot;code&amp;quot;&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#postfix VDA&lt;br /&gt;
deb http://debian.home-dn.net/sarge postfix-vda/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
Puis il suffit de mettre à jour la liste des paquets et d&#039;intaller les paquets necessaires (en tant que root) :&lt;br /&gt;
&amp;lt;div class=&amp;quot;code&amp;quot;&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
apt-get update&lt;br /&gt;
apt-get install postfix postfix-mysql&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
L&#039;installateur Debian va demander quel type de configuration vous souhaitez utilisez. Dans notre cas, nous allons choisir &amp;quot;Pas de configuration&amp;quot;, afin d&#039;obtenir une configuration vierge.&lt;br /&gt;
&amp;lt;h3&amp;gt;Configuration&amp;lt;/h3&amp;gt;&lt;br /&gt;
Nous allons configurer le système courier afin que les emails soient conservés dans un seul repertoire : &amp;lt;code&amp;gt;/var/spool/vmail/&amp;lt;/code&amp;gt;.&lt;br /&gt;
Les boites seront rangés (au format maildir) dans un repertoire du type : &lt;br /&gt;
&amp;lt;code&amp;gt;/var/spool/vmail/virtualdomain/virtualmailbox/&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;h4&amp;gt;Création de l&#039;utilisateur vmail&amp;lt;/h4&amp;gt;&lt;br /&gt;
Ce repertoire sera accessible en lecture et ecriture par un utilisateur nommé vmail (uid:5000,gid:5000) que nous allons créer ainsi :&lt;br /&gt;
&amp;lt;div class=&amp;quot;code&amp;quot;&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
groupadd -g 5000 vmail&lt;br /&gt;
useradd -g vmail -u 5000 vmail -d /var/spool/vmail/ -m&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;h4&amp;gt;Fichier de configuration principal&amp;lt;/h4&amp;gt;&lt;br /&gt;
Le fichier &amp;lt;code&amp;gt;/etc/postfix/main.cf&amp;lt;/code&amp;gt; définit les paramètres principaux du serveur postfix, notamment les paramètres des domaines virtuels.&lt;br /&gt;
Le fichier ci-après contient une configuration complète de postfix. Si vous avez déjà un tel fichier et que vous souhaitez seulement ajouter &lt;br /&gt;
le support des domaines virtuel mysql, il faut copier les directives commençant par virtual_...&lt;br /&gt;
&amp;lt;div class=&amp;quot;code&amp;quot;&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
# /etc/postfix/main.cf&lt;br /&gt;
# Configuration Postfix&lt;br /&gt;
# espace.fr.to&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
smtpd_banner = $myhostname ESMTP (Debian/GNU)&lt;br /&gt;
biff = no&lt;br /&gt;
disable_vrfy_command = yes&lt;br /&gt;
smtpd_helo_required = yes&lt;br /&gt;
&lt;br /&gt;
# ajoute le domaine aux emails de la distribution locale&lt;br /&gt;
# ainsi vous pourrez envoyer des emails sans @domain.priv&lt;br /&gt;
# par la commande sendmail&lt;br /&gt;
mydomain = domain.priv &lt;br /&gt;
append_dot_mydomain = yes&lt;br /&gt;
&lt;br /&gt;
# Envoi une alerte de dépassement de délai par email&lt;br /&gt;
#delay_warning_time = 4h&lt;br /&gt;
&lt;br /&gt;
myhostname = smtp.domain.priv&lt;br /&gt;
&lt;br /&gt;
# domaine de distribution local&lt;br /&gt;
mydestination = localhost, localhost.localdomain&lt;br /&gt;
&lt;br /&gt;
# Mettez ici le relais smtp de votre FAI si vous avez des problèmes de blacklist&lt;br /&gt;
# à cause de votre IP&lt;br /&gt;
relayhost =&lt;br /&gt;
&lt;br /&gt;
# adresseIP/Masque des réseaux locaux (réseaux autorisés pour l&#039;envoi de courier)&lt;br /&gt;
mynetworks = 127.0.0.0/8 192.168.0.0/24&lt;br /&gt;
inet_interfaces = all&lt;br /&gt;
&lt;br /&gt;
#restrictions d&#039;accès&lt;br /&gt;
# adresses d&#039;expédition&lt;br /&gt;
# le &amp;quot;reject_unknown_sender_domain&amp;quot; verifie que le domaine existe&lt;br /&gt;
smtpd_sender_restrictions =&lt;br /&gt;
        permit_mynetworks,&lt;br /&gt;
        reject_unknown_sender_domain,&lt;br /&gt;
        warn_if_reject reject_unverified_sender&lt;br /&gt;
&lt;br /&gt;
# adresses de destination&lt;br /&gt;
smtpd_recipient_restrictions =&lt;br /&gt;
        permit_mynetworks,&lt;br /&gt;
        reject_unauth_destination,&lt;br /&gt;
        reject_unknown_recipient_domain,&lt;br /&gt;
        reject_non_fqdn_recipient&lt;br /&gt;
&lt;br /&gt;
# client&lt;br /&gt;
smtpd_client_restrictions =&lt;br /&gt;
        reject_unknown_client,&lt;br /&gt;
        permit_mynetworks&lt;br /&gt;
&lt;br /&gt;
virtual_alias_maps = mysql:/etc/postfix/mysql-virtual_aliases.cf,mysql:/etc/postfix/mysql-virtual_aliases_mailbox.cf&lt;br /&gt;
virtual_mailbox_domains = mysql:/etc/postfix/mysql-virtual_domains.cf&lt;br /&gt;
virtual_mailbox_maps = mysql:/etc/postfix/mysql-virtual_mailboxes.cf&lt;br /&gt;
virtual_mailbox_base = /var/spool/vmail/&lt;br /&gt;
virtual_uid_maps = static:5000&lt;br /&gt;
virtual_gid_maps = static:5000&lt;br /&gt;
&lt;br /&gt;
virtual_create_maildirsize = yes&lt;br /&gt;
virtual_mailbox_extended = yes&lt;br /&gt;
virtual_mailbox_limit_maps = mysql:/etc/postfix/mysql-virtual_mailbox_limit_maps.cf&lt;br /&gt;
virtual_mailbox_limit_override = yes&lt;br /&gt;
virtual_maildir_limit_message = &amp;quot;Desole, la boite email de l&#039;utilisateur est pleine, essayez plus tard.&amp;quot;&lt;br /&gt;
virtual_overquota_bounce = yes&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h4&amp;gt;Fichiers de configuration d&#039;accès à la base de données&amp;lt;/h4&amp;gt;&lt;br /&gt;
Si vous avez un peu lu le fichier précédent, vous avez pu constater que nous faisons appel à des fichiers correspondances (mapping).&lt;br /&gt;
Ces fichiers fournissent les informations permettant à postfix de récupérer la configuration des domaines et emails virtuels dans la base de données crée précédemment.&lt;br /&gt;
&lt;br /&gt;
Vous devez créer les fichiers suivant dans &amp;lt;code&amp;gt;/etc/postfix/&amp;lt;/code&amp;gt; en remplaçant les paramètres par ceux de votre configuration (par exemple : le champ password).&amp;lt;br/&amp;gt;&lt;br /&gt;
Attention! Dans le champs host, n&#039;utilisez pas &#039;localhost&#039;. En effet postfix fonctionne en environnement &amp;quot;chrooté&amp;quot; dans le repertoire  (/var/spool/postfix), il ne peut donc pas accéder aux fichiers hors de ce repertoire notamment /var/run/mysqld/mysqld.sock. Hors, si vous utiliser &#039;localhost&#039;, postfix va essayer d&#039;accéder à ce fichier socket. Pour résoudre le problème nous faisons passer la connection par une connection TCP utilisant la boucle locale (lo) en utilisant l&#039;addresse ip 127.0.0.1.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;code&amp;quot;&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
# mysql-virtual_domains.cf&lt;br /&gt;
hosts = 127.0.0.1&lt;br /&gt;
user = postfix&lt;br /&gt;
password = pass&lt;br /&gt;
dbname = postfix&lt;br /&gt;
select_field = &#039;virtual&#039;&lt;br /&gt;
table = domain&lt;br /&gt;
where_field = domain&lt;br /&gt;
additional_conditions = AND actif=1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;code&amp;quot;&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
# mysql-virtual_mailboxes.cf&lt;br /&gt;
hosts = 127.0.0.1&lt;br /&gt;
user = postfix&lt;br /&gt;
password = pass&lt;br /&gt;
dbname = postfix&lt;br /&gt;
select_field = CONCAT(SUBSTRING_INDEX(email,&#039;@&#039;,-1),&#039;/&#039;,SUBSTRING_INDEX(email,&#039;@&#039;,1),&#039;/&#039;)&lt;br /&gt;
table = mailbox&lt;br /&gt;
where_field = email&lt;br /&gt;
additional_conditions = AND actif=1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;code&amp;quot;&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
# mysql-virtual_aliases.cf&lt;br /&gt;
hosts = 127.0.0.1&lt;br /&gt;
user = postfix&lt;br /&gt;
password = pass&lt;br /&gt;
dbname = postfix&lt;br /&gt;
select_field = destination&lt;br /&gt;
table = alias&lt;br /&gt;
where_field = source&lt;br /&gt;
additional_conditions = AND actif=1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;code&amp;quot;&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
# mysql-virtual_aliases_mailbox.cf&lt;br /&gt;
hosts = 127.0.0.1&lt;br /&gt;
user = postfix&lt;br /&gt;
password = pass&lt;br /&gt;
dbname = postfix&lt;br /&gt;
select_field = email&lt;br /&gt;
table = mailbox&lt;br /&gt;
where_field = email&lt;br /&gt;
additional_conditions = AND actif=1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;code&amp;quot;&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
# mysql-virtual_mailbox_limit_maps.cf&lt;br /&gt;
hosts = 127.0.0.1&lt;br /&gt;
user = postfix&lt;br /&gt;
password = pass&lt;br /&gt;
dbname = postfix&lt;br /&gt;
select_field = quota&lt;br /&gt;
table = mailbox&lt;br /&gt;
where_field = email&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;alert&amp;quot;&amp;gt;&lt;br /&gt;
Ces fichiers doivent être accessibles seulement par root et par postfix. En effet, ils contiennent le mot de passe en clair d&#039;accès à la base de données.&lt;br /&gt;
Pour cela il suffit de lancer les commandes suivantes qui change le groupe de ces fichiers par &amp;quot;postfix&amp;quot; et affecte les droits d&#039;accès necessaires :&lt;br /&gt;
&amp;lt;div class=&amp;quot;code&amp;quot;&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
  chgrp postfix /etc/postfix/mysql-virtual_*.cf&lt;br /&gt;
  chmod u=rw,g=r,o= /etc/postfix/mysql-virtual_*.cf&amp;lt;/pre&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;h4&amp;gt;Validation de la configuration&amp;lt;/h4&amp;gt;&lt;br /&gt;
Redémarrez postfix &amp;lt;code&amp;gt;/etc/init.d/postfix restart&amp;lt;/code&amp;gt; et lancer &amp;lt;code&amp;gt;postfix check&amp;lt;/code&amp;gt; afin de verifier que vous n&#039;avez fait aucune erreur.&lt;br /&gt;
&amp;lt;h2&amp;gt;Courier&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;h3&amp;gt;Installation&amp;lt;/h3&amp;gt;&lt;br /&gt;
Le serveur Courier est composé de plusieurs éléments:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;le serveur imap&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;le serveur pop&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;le démon d&#039;authentification (authdaemon) qui utilise le module approprié à la configuration (authmysql)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
Pour installer tout ceci :&lt;br /&gt;
&amp;lt;div class=&amp;quot;code&amp;quot;&amp;gt;apt-get install courier-base courier-authdaemon courier-authmysql courier-imap courier-pop&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;h3&amp;gt;Configuration&amp;lt;/h3&amp;gt;&lt;br /&gt;
&amp;lt;h4&amp;gt;Le démon d&#039;authentification&amp;lt;/h4&amp;gt;&lt;br /&gt;
Il faut modifier le fichier &amp;lt;code&amp;gt;/etc/courier/authdaemonrc&amp;lt;/code&amp;gt; pour indiquer à authdaemon qu&#039;il doit utiliser le module mysql. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;code&amp;quot;&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#authmodulelist=&amp;quot;authpam&amp;quot;&lt;br /&gt;
authmodulelist=&amp;quot;authmysql&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
Puis il faut configurer le module authmysql en editant le fichier &amp;lt;code&amp;gt;/etc/courier/authmysqlrc&amp;lt;/code&amp;gt; ainsi:&lt;br /&gt;
&amp;lt;div class=&amp;quot;code&amp;quot;&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
MYSQL_SERVER            localhost&lt;br /&gt;
MYSQL_USERNAME          postfix&lt;br /&gt;
MYSQL_PASSWORD          pass&lt;br /&gt;
MYSQL_DATABASE          postfix&lt;br /&gt;
MYSQL_USER_TABLE        mailbox&lt;br /&gt;
&lt;br /&gt;
MYSQL_CRYPT_PWFIELD     password&lt;br /&gt;
# MYSQL_CLEAR_PWFIELD    clear&lt;br /&gt;
&lt;br /&gt;
MYSQL_UID_FIELD         5000&lt;br /&gt;
MYSQL_GID_FIELD         5000&lt;br /&gt;
&lt;br /&gt;
MYSQL_LOGIN_FIELD       email&lt;br /&gt;
&lt;br /&gt;
MYSQL_HOME_FIELD        &amp;quot;/var/spool/vmail/&amp;quot;&lt;br /&gt;
&lt;br /&gt;
MYSQL_MAILDIR_FIELD CONCAT(SUBSTRING_INDEX(email,&#039;@&#039;,-1),&#039;/&#039;,SUBSTRING_INDEX(email,&#039;@&#039;,1),&#039;/&#039;)&lt;br /&gt;
&lt;br /&gt;
#Ligne à commenter &lt;br /&gt;
# MYSQL_NAME_FIELD       name&lt;br /&gt;
&lt;br /&gt;
MYSQL_QUOTA_FIELD       quota&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;alert&amp;quot;&amp;gt;Veillez à ne pas mettre d&#039;espace en début de ligne. Courier est très suceptible ;)&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;h4&amp;gt;Validation de la configuration&amp;lt;/h4&amp;gt;&lt;br /&gt;
Relancez les démons que vous venez de configurer :&lt;br /&gt;
&amp;lt;div class=&amp;quot;code&amp;quot;&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
/etc/init.d/courier-authdaemon restart&lt;br /&gt;
/etc/init.d/courier-imap restart&lt;br /&gt;
/etc/init.d/courier-pop restart&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;h2&amp;gt;Test de la configuration&amp;lt;/h2&amp;gt;&lt;br /&gt;
Pour effectuer nos tests, nous allons créer un compte email &#039;test&#039; ainsi que le domain &#039;domain.priv&#039; par les requêtes SQL suivantes :&lt;br /&gt;
&amp;lt;div class=&amp;quot;code&amp;quot;&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
INSERT INTO `domain` (`domain`,`actif`) VALUES (&#039;test&#039;,1);&lt;br /&gt;
INSERT INTO `mailbox` (`email`,`password`,`quota`,`actif`,`imap`,`pop3`)&lt;br /&gt;
       VALUES (&#039;user@domain.priv&#039;,ENCRYPT(&#039;secret&#039;),0,1,1,1);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Remplissage de la base de données&amp;lt;/h3&amp;gt;&lt;br /&gt;
Pour plus de détail, referez-vous à [[#BD_structure]].&lt;br /&gt;
&amp;lt;h4&amp;gt;Domaines&amp;lt;/h4&amp;gt;Pour chaque domaine, inserez une ligne dans la table &#039;domain&#039; avec le champs actif à 1. &lt;br /&gt;
&amp;lt;h4&amp;gt;Boites emails&amp;lt;/h4&amp;gt;Pour chaque email, inserez une ligne dans la table &#039;email&#039; avec le champs actif à 1.&lt;br /&gt;
&amp;lt;h4&amp;gt;Alias&amp;lt;/h4&amp;gt;&lt;br /&gt;
Grâce à la table &#039;alias&#039;, vous pouvez effectuer plusieurs transferts (source-&amp;gt;destination) :&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;d&#039;email à email : alias@domain.priv -&amp;gt; user1@domain.priv&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;d&#039;email à emails : alias@domain.priv -&amp;gt; user1@domain.priv,user1@otherdomain.priv (séparés par une virgule)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;de tous les emails du domaine qui ne sont pas définis vers un email : @domain.priv -&amp;gt; catchall@domain.priv&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;d&#039;un domain vers un autre : @domain.priv -&amp;gt; @otherdomain.priv&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;h3&amp;gt;Test Postfix&amp;lt;/h3&amp;gt;&lt;br /&gt;
Nous allons envoyer un email à test@domain.priv via la commande telnet :&lt;br /&gt;
&amp;lt;div class=&amp;quot;code&amp;quot;&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
~$ telnet 127.0.0.1 25&lt;br /&gt;
Trying 127.0.0.1...&lt;br /&gt;
Connected to 127.0.0.1.&lt;br /&gt;
Escape character is &#039;^]&#039;.&lt;br /&gt;
220 smtp.domain.priv ESMTP (Debian/GNU)&lt;br /&gt;
&amp;lt;b&amp;gt;ehlo domain.priv&amp;lt;/b&amp;gt;&lt;br /&gt;
250-smtp.domain.priv&lt;br /&gt;
250-PIPELINING&lt;br /&gt;
250-SIZE 10240000&lt;br /&gt;
250-ETRN&lt;br /&gt;
250 8BITMIME&lt;br /&gt;
mail from: &amp;amp;lt;test@domain.priv&amp;amp;gt;&lt;br /&gt;
250 Ok&lt;br /&gt;
rcpt to: &amp;amp;lt;user@domain.priv&amp;amp;gt;&lt;br /&gt;
250 Ok&lt;br /&gt;
250 Ok&lt;br /&gt;
data&lt;br /&gt;
354 End data with &amp;amp;lt;CR&amp;amp;gt;&amp;amp;lt;LF&amp;amp;gt;.&amp;amp;lt;CR&amp;amp;gt;&amp;amp;lt;LF&amp;amp;gt;&lt;br /&gt;
Voici le premier mail de test.&lt;br /&gt;
.&lt;br /&gt;
250 Ok: queued as 8ECC524208&lt;br /&gt;
quit&lt;br /&gt;
221 Bye&lt;br /&gt;
Connection closed by foreign host.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
Vous pouvez verifier que tout c&#039;est bien dérouler grâce au fichier de log &amp;lt;code&amp;gt;/var/log/mail.log&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;code&amp;quot;&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
postfix/smtpd[2036]: connect from localhost.localdomain[127.0.0.1]&lt;br /&gt;
postfix/smtpd[2036]: 8ECC524208: client=localhost.localdomain[127.0.0.1]&lt;br /&gt;
postfix/cleanup[2067]: 8ECC524208: message-id=&amp;amp;lt;20060923131054.8ECC524208@smtp.domain.priv&amp;amp;gt;&lt;br /&gt;
postfix/qmgr[1876]: 8ECC524208: from=&amp;amp;lt;test@espace.fr.to&amp;amp;gt;, size=377, nrcpt=1 (queue active)&lt;br /&gt;
postfix/virtual[2076]: 8ECC524208: to=&amp;amp;lt;user@domain.priv&amp;amp;gt;, relay=virtual, delay=0, \&lt;br /&gt;
  status=sent (delivered to maildir)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
Si vous trouvez la ligne contenant &amp;quot;status=sent (delivered to maildir)&amp;quot;, le mail a bien été reçu.&lt;br /&gt;
Vérifier alors le contenu du repertoire &amp;lt;code&amp;gt;/var/spool/vmail/&amp;lt;/code&amp;gt; avec la commande &amp;lt;code&amp;gt;find /var/spool/vmail&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;div class=&amp;quot;code&amp;quot;&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
/var/spool/vmail/&lt;br /&gt;
/var/spool/vmail/domain.priv&lt;br /&gt;
/var/spool/vmail/domain.priv/user&lt;br /&gt;
/var/spool/vmail/domain.priv/user/tmp&lt;br /&gt;
/var/spool/vmail/domain.priv/user/cur&lt;br /&gt;
/var/spool/vmail/domain.priv/user/new&lt;br /&gt;
/var/spool/vmail/domain.priv/user/new/1159016974.V301I242fe.titan.espace.fr.to&lt;br /&gt;
/var/spool/vmail/domain.priv/user/maildirsize&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
Si celà correpond postfix est bien configuré et fonctionne correctement.&lt;br /&gt;
&amp;lt;h3&amp;gt;Test Courier&amp;lt;/h3&amp;gt;&lt;br /&gt;
Utlisez votre client de messagerie avec comme utilisateur &#039;user@domain.priv&#039; et mot de passe &#039;secret&#039; pour effectuer ce test.&lt;br /&gt;
&amp;lt;div class=&amp;quot;alert&amp;quot;&amp;gt;Attention! L&#039;accès imap ou pop echouera si le repertoire de la boite email de l&#039;utilisateur n&#039;existe pas (si vous venez juste d&#039;ajouter l&#039;email dans la base de données). Je vous conseille d&#039;envoyer un email de bienvenue après la création d&#039;une nouvelle boite.&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;h2&amp;gt;Amavis (facultatif)&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;h3&amp;gt;Installation&amp;lt;/h3&amp;gt; &lt;br /&gt;
&amp;lt;div class=&amp;quot;code&amp;quot;&amp;gt;apt-get install amavisd-new clamav clamav-daemon clamav-freshclam lha arj unrar zoo nomarch lzop unzoo bzip2&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;note&amp;quot;&amp;gt;Les packages lha et unrar font partie du dépot non-free de Sarge.&amp;lt;/div&amp;gt;&lt;br /&gt;
Lors de l&#039;installation du package clamav-freshclam, debconf va posez 2 questions :&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Méthode de mise à jour de la base de données des virus :&amp;quot;démon&amp;quot; si vous avez une connexion réseau permanente, &amp;quot;cron&amp;quot; créera une tache cron que vous pourrez modifier à votre convenance.&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Miroir de la base de données : (choisissez le plus de proche chez vous)&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Faut-il notifier clamd des mises à jour ? : &amp;quot;Oui&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;h3&amp;gt;Configuration&amp;lt;/h3&amp;gt;&lt;br /&gt;
Afin que l&#039;antivirus clamav puisse lire les fichiers crées par amavis, il faut ajouter l&#039;utilisateur clamav au groupe amavis : &amp;lt;code&amp;gt;adduser clamav amavis&amp;lt;/code&amp;gt;&lt;br /&gt;
Ensuite, vous devez modifier le fichier de cofiguration &amp;lt;code&amp;gt;/etc/amavis/amavisd.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;code&amp;quot;&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#ce domaine correspond au domaine local si vous n&#039;avez pas de domaine local utilisez &#039;localhost&#039;&lt;br /&gt;
$mydomain = &#039;yourdomain.org&#039;;&lt;br /&gt;
&lt;br /&gt;
# @bypass_virus_checks_acl = qw( . );  # uncomment to DISABLE anti-virus code&lt;br /&gt;
# @bypass_spam_checks_acl  = qw( . );  # uncomment to DISABLE anti-spam code&lt;br /&gt;
&lt;br /&gt;
#amavis doit connaitre les domaines à controler (en effet il controle seulement les mails entrants)&lt;br /&gt;
@lookup_sql_dsn = ( [ &#039;DBI:mysql:postfix;host=127.0.0.1;port=3306&#039;, &#039;postfix&#039;, &#039;pass&#039; ] );&lt;br /&gt;
$sql_select_policy =&lt;br /&gt;
    &#039;SELECT &amp;quot;Y&amp;quot; as local FROM domains WHERE CONCAT(&amp;quot;@&amp;quot;,domain) IN (%k) AND actif=&amp;quot;1&amp;quot;&#039;;&lt;br /&gt;
&lt;br /&gt;
$final_virus_destiny      = D_DISCARD; # (defaults to D_BOUNCE)&lt;br /&gt;
$final_banned_destiny     = D_BOUNCE;  # (defaults to D_BOUNCE)&lt;br /&gt;
$final_spam_destiny       = D_REJECT;  # (defaults to D_REJECT)&lt;br /&gt;
$final_bad_header_destiny = D_PASS;  # (defaults to D_PASS), D_BOUNCE suggested&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;h2&amp;gt;SpamAssassin (facultatif)&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;h3&amp;gt;Installation&amp;lt;/h3&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;code&amp;quot;&amp;gt;&amp;lt;pre&amp;gt;apt-get install spamassassin libnet-dns-perl libmail-spf-query-perl \&lt;br /&gt;
                             libnet-ident-perl libio-socket-ssl-perl libsys-hostname-long-perl \&lt;br /&gt;
                             razor pyzor dcc-client&amp;lt;/pre&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;h3&amp;gt;Configuration&amp;lt;/h3&amp;gt;&lt;br /&gt;
Pour améliorer l&#039;analyse des emails par spamassassin, il faut utiliser le démons spamd.&lt;br /&gt;
Pour cela, modifiez le fichier &amp;lt;code&amp;gt;/etc/default/spamassassin&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;code&amp;quot;&amp;gt;ENABLED=1&amp;lt;/div&amp;gt;&lt;br /&gt;
Puis, relancez le démon spamd : &amp;lt;code&amp;gt;/etc/init.d/spamassassin restart&amp;lt;/code&amp;gt;&lt;br /&gt;
Nous allons utiliser amavis pour appeler le filtre spamasssin. La configuration de Amavis est prête à l&#039;utiliser.&lt;br /&gt;
Il suffit de modifier quelques lignes dans &amp;lt;code&amp;gt;/etc/amavis/amavisd.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;code&amp;quot;&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
# @bypass_virus_checks_acl = qw( . );  # uncomment to DISABLE anti-virus code&lt;br /&gt;
# @bypass_spam_checks_acl  = qw( . );  # uncomment to DISABLE anti-spam code&lt;br /&gt;
#&lt;br /&gt;
# Any setting can be changed with a new assignment, so make sure&lt;br /&gt;
# you do not unintentionally override these settings further down!&lt;br /&gt;
# @bypass_spam_checks_acl  = qw( . );    # No default dependency on spamassassin&lt;br /&gt;
&lt;br /&gt;
$sa_local_tests_only = 0;&lt;br /&gt;
&lt;br /&gt;
$sa_tag_level_deflt = -1000; # note minimal pour ajouter les tags X-Spam... à l&#039;en-tête des emails&lt;br /&gt;
$sa_tag2_level_deflt = 3.5;  # note minimal pour ajouter le tag X-Spam-Flag: YES&lt;br /&gt;
                             # et modifier l&#039;objet&lt;br /&gt;
$sa_kill_level_deflt = 10;   # note à partir de laquelle les mails sont traités comme définis&lt;br /&gt;
                             # par la variable $final_spam_destiny (ici ils sont refusés)&lt;br /&gt;
$sa_spam_subject_tag = &#039;***SPAM*** &#039;; # chaine ajouté à l&#039;objet de l&#039;email&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Copyright =&lt;br /&gt;
&lt;br /&gt;
{{FDL}}&lt;br /&gt;
&lt;br /&gt;
--[[Utilisateur:Space2d|Space2d]] 25 sep 2006 à 19:05 (CEST)&lt;/div&gt;</summary>
		<author><name>Cube45 (phorum)</name></author>
	</entry>
</feed>