Configuration Email · 7 min read · Jan 11, 2026

Utilisateurs et domaines virtuels avec Postfix, Courier, MySQL et SquirrelMail (CentOS 4.8 i386) - Page 4

13 Installer Razor, Pyzor et DCC et configurer SpamAssassin

Razor, Pyzor et DCC sont des filtres anti-spam qui utilisent un réseau de filtrage collaboratif. Pour installer Razor, exécutez

yum install perl-Razor-Agent razor-agents

Pyzor n’est pas disponible dans les dépôts de CentOS 4.8, mais nous pouvons installer le paquet Pyzor pour RHEL 4 à la place (il s’agit d’un paquet noarch, c’est-à-dire qu’il fonctionne sur x86_64 et i386) :

rpm -ivh ftp://ftp.pbone.net/mirror/ftp.silfreed.net/repo/rhel/4/i386/silfreednet/RPMS/pyzor-0.4.0-2.el4.noarch.rpm

(Vous pouvez utiliser la recherche RPM à http://rpm.pbone.net/ pour trouver la version actuelle si le lien ci-dessus ne fonctionne plus.)

Ensuite, initialisez les deux services :

chmod -R a+rX /usr/share/doc/pyzor-0.4.0 /usr/bin/pyzor /usr/bin/pyzord  
chmod -R a+rX /usr/lib/python2.3/site-packages/pyzor  
mkdir /var/spool/amavisd  
chown amavis:amavis /var/spool/amavisd  
su -m amavis -c 'pyzor --homedir /var/spool/amavisd discover'  
su -m amavis -c 'razor-admin -home=/var/spool/amavisd -create'  
su -m amavis -c 'razor-admin -home=/var/spool/amavisd -register'

Ensuite, nous installons DCC comme suit :

cd /tmp  
wget http://www.dcc-servers.net/dcc/source/dcc-dccproc.tar.Z  
tar xzvf dcc-dccproc.tar.Z  
cd dcc-dccproc-1.3.115  
./configure --with-uid=amavis  
make  
make install  
chown -R amavis:amavis /var/dcc  
ln -s /var/dcc/libexec/dccifd /usr/local/bin/dccifd

Maintenant, nous devons dire à SpamAssassin d’utiliser ces trois programmes. Éditez /etc/mail/spamassassin/local.cf pour qu’il ressemble à ceci :

vi /etc/mail/spamassassin/local.cf

| # Ces valeurs peuvent être remplacées en modifiant ~/.spamassassin/user_prefs.cf # (voir spamassassin(1) pour plus de détails) # Ce sont des hypothèses sûres et permettent un simple filtrage visuel # sans risquer de perdre des e-mails. #required_hits 5 #report_safe 0 #rewrite_header Subject [SPAM] # dcc use_dcc 1 dcc_path /usr/local/bin/dccproc #pyzor use_pyzor 1 pyzor_path /usr/bin/pyzor #razor use_razor2 1 razor_config /var/spool/amavisd/razor-agent.conf #bayes use_bayes 1 use_bayes_rules 1 bayes_auto_learn 1 |

Ensuite, nous devons activer le plugin DCC dans SpamAssassin. Ouvrez /etc/mail/spamassassin/v310.pre et décommentez la ligne loadplugin Mail::SpamAssassin::Plugin::DCC :

vi /etc/mail/spamassassin/v310.pre

| [...] # DCC - effectuer des vérifications de messages DCC. # # DCC est désactivé ici car il n'est pas open source. Voir la licence DCC # pour plus de détails. # loadplugin Mail::SpamAssassin::Plugin::DCC [...] |

Vous pouvez vérifier votre configuration SpamAssassin en exécutant :

spamassassin --lint

Il ne devrait pas afficher d’erreurs.

Exécutez

/etc/init.d/amavisd restart

ensuite.

Maintenant, nous mettons à jour nos règles SpamAssassin comme suit :

sa-update --no-gpg

Nous créons un job cron afin que les règles soient mises à jour régulièrement. Exécutez

crontab -e

pour ouvrir l’éditeur de job cron. Créez le job cron suivant :

| 23 4 */2 * * /usr/bin/sa-update --no-gpg &> /dev/null |

Cela mettra à jour les règles tous les deux jours à 4h23.

14 Notifications de dépassement de quota

Si vous souhaitez recevoir des notifications concernant tous les comptes de messagerie qui dépassent le quota, faites ceci :

cd /usr/local/sbin/  
wget http://puuhis.net/vhcs/quota.txt  
mv quota.txt quota_notify  
chmod 755 quota_notify

Ouvrez /usr/local/sbin/quota_notify et éditez les variables en haut. Plus bas dans le fichier (vers la fin), il y a deux lignes où vous devez ajouter un signe % ( $lusers{$luser}%):

vi /usr/local/sbin/quota_notify

| [...] my $POSTFIX_CF = "/etc/postfix/main.cf"; my $MAILPROG = "/usr/sbin/sendmail -t"; my $WARNPERCENT = 80; my @POSTMASTERS = ('[email protected]'); my $CONAME = 'Mon entreprise'; my $COADDR = '[email protected]'; my $SUADDR = '[email protected]'; my $MAIL_REPORT = 1; my $MAIL_WARNING = 1; [...] print "Subject: WARNING: Votre boîte aux lettres est $lusers{$luser}% pleine.\n"; [...] print "Votre boîte aux lettres : $luser est $lusers{$luser}% pleine.\n\n"; [...] |

Exécutez

crontab -e

pour créer un job cron pour ce script :

| 0 0 * * * /usr/local/sbin/quota_notify &> /dev/null |

15 Tester Postfix

Pour voir si Postfix est prêt pour SMTP-AUTH et TLS, exécutez

telnet localhost 25

Après avoir établi la connexion à votre serveur de messagerie Postfix, tapez

ehlo localhost

Si vous voyez les lignes

*250-STARTTLS *

et

*250-AUTH PLAIN* LOGIN* *

tout va bien.

[root@server1 sbin]# telnet localhost 25  
Trying 127.0.0.1...  
Connected to localhost.localdomain (127.0.0.1).  
Escape character is '^]'.  
220 server1.example.com ESMTP Postfix  
ehlo localhost  
250-server1.example.com  
250-PIPELINING  
250-SIZE 10240000  
250-VRFY  
250-ETRN  
250-STARTTLS  
250-AUTH PLAIN LOGIN  
250-AUTH=PLAIN LOGIN  
250 8BITMIME  
quit  
221 Bye  
Connection closed by foreign host.  
[root@server1 sbin]#

Tapez

quit

pour revenir au shell du système.

16 Peupler la base de données et tester

Pour peupler la base de données, vous pouvez utiliser le shell MySQL :

mysql -u root -p
USE mail;

Vous devez au moins créer des entrées dans les tables domains et users :

INSERT INTO `domains` (`domain`) VALUES ('example.com');  
INSERT INTO `users` (`email`, `password`, `quota`) VALUES ('[email protected]', ENCRYPT('secret'), 10485760);

(Veuillez vous assurer d’utiliser la syntaxe ENCRYPT dans la deuxième instruction INSERT afin de crypter le mot de passe!)

Si vous souhaitez faire des entrées dans les deux autres tables, cela ressemblerait à ceci :

INSERT INTO `forwardings` (`source`, `destination`) VALUES ('[email protected]', '[email protected]');  
INSERT INTO `transport` (`domain`, `transport`) VALUES ('example.com', 'smtp:mail.example.com');

Pour quitter le shell MySQL, tapez

quit;

Pour la plupart des gens, il est plus facile d’avoir une interface graphique pour MySQL ; par conséquent, vous pouvez également utiliser phpMyAdmin (dans cet exemple sous http://192.168.0.100/phpmyadmin/ ou http://server1.example.com/phpmyadmin/) pour administrer la base de données mail. Encore une fois, lorsque vous créez un utilisateur, assurez-vous d’utiliser la fonction ENCRYPT pour crypter le mot de passe :

Je ne pense pas avoir besoin d’expliquer davantage les tables domains et users.

La table forwardings peut avoir des entrées comme les suivantes :

sourcedestination
[email protected][email protected]Redirige les e-mails pour [email protected] vers [email protected]
@example.com[email protected]Crée un compte Catch-All pour [email protected]. Tous les e-mails à example.com arriveront à [email protected], sauf ceux qui existent dans la table users (c’est-à-dire, si [email protected] existe dans la table users, les mails à [email protected] arriveront toujours à [email protected]).
@example.com@anotherdomain.tldCela redirige tous les e-mails à example.com vers le même utilisateur à anotherdomain.tld. Par exemple, les e-mails à [email protected] seront transférés à [email protected].
[email protected][email protected], [email protected]Transfère les e-mails pour [email protected] vers deux adresses e-mail ou plus. Toutes les adresses e-mail listées sous destination reçoivent une copie de l’e-mail.

La table transport peut avoir des entrées comme celles-ci :

domaintransport
example.com:Livre les e-mails pour example.com localement. C’est comme si cet enregistrement n’existait pas du tout dans cette table.
example.comsmtp:mail.anotherdomain.tldLivre tous les e-mails pour example.com via smtp au serveur mail.anotherdomain.com.
example.comsmtp:mail.anotherdomain.tld:2025Livre tous les e-mails pour example.com via smtp au serveur mail.anotherdomain.com, mais sur le port 2025, pas 25 qui est le port par défaut pour smtp.

| example.com | smtp:[1.2.3.4]
smtp:[1.2.3.4]:2025
smtp:[mail.anotherdomain.tld] | Les crochets empêchent Postfix de faire des recherches sur l’enregistrement MX DNS pour l’adresse entre crochets. Cela a du sens pour les adresses IP. | | .example.com | smtp:mail.anotherdomain.tld | Le courrier pour tout sous-domaine de example.com est livré à mail.anotherdomain.tld. | | * | smtp:mail.anotherdomain.tld | Tous les e-mails sont livrés à mail.anotherdomain.tld. | | [email protected] | smtp:mail.anotherdomain.tld | Les e-mails pour [email protected] sont livrés à mail.anotherdomain.tld. |

Voir

man transport

pour plus de détails.

Veuillez garder à l’esprit que l’ordre des entrées dans la table transport est important ! Les entrées seront suivies de haut en bas.

Important : Postfix utilise un mécanisme de mise en cache pour les transports, il peut donc falloir un certain temps avant que les modifications dans la table transport prennent effet. Si vous souhaitez qu’elles prennent effet immédiatement, exécutez

postfix reload

après avoir effectué vos modifications dans la table transport.

17 Envoyer un e-mail de bienvenue pour créer Maildir

Lorsque vous créez un nouveau compte de messagerie et essayez de récupérer des e-mails à partir de celui-ci (avec POP3/IMAP), vous recevrez probablement des messages d’erreur disant que le Maildir n’existe pas. Le Maildir est créé automatiquement lorsque le premier e-mail arrive pour le nouveau compte. Il est donc judicieux d’envoyer un e-mail de bienvenue à un nouveau compte.

Tout d’abord, nous installons le paquet mailx :

yum install mailx

Pour envoyer un e-mail de bienvenue à [email protected], nous faisons ceci :

mailx [email protected]

Vous serez invité à entrer le sujet. Tapez le sujet (par exemple, Bienvenue), puis appuyez sur ENTRÉE, et dans la ligne suivante, tapez votre message. Lorsque le message est terminé, appuyez à nouveau sur ENTRÉE pour que vous soyez sur une nouvelle ligne, puis appuyez sur CTRL+D :

[root@server1 sbin]# mailx [email protected]
Subject: Bienvenue <– ENTRÉE
Bienvenue ! Amusez-vous avec votre nouveau compte de messagerie. <– ENTRÉE
<– CTRL+D
Cc : <– ENTRÉE
[root@server1 sbin]#

Share: X/Twitter LinkedIn

Recevez de nouveaux articles dans votre boîte de réception.

Aucun spam. Désabonnez-vous à tout moment.