Configuration Serveur · 9 min read · Nov 25, 2025
Utilisateurs et domaines virtuels avec Postfix, Courier, MySQL et SquirrelMail (Fedora 13 x86_64) - Page 5
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 et Pyzor, exécutez
yum install perl-Razor-Agent pyzorEnsuite, initialisez les deux services :
chmod -R a+rX /usr/share/doc/pyzor-0.5.0 /usr/bin/pyzor /usr/bin/pyzord
chmod -R a+rX /usr/lib/python2.6/site-packages/pyzor
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.126
./configure --with-uid=amavis
make
make install
chown -R amavis:amavis /var/dcc
ln -s /var/dcc/libexec/dccifd /usr/local/bin/dccifdMaintenant, 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 filtrage visuel simple # 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 DCC # licence pour plus de détails. # loadplugin Mail::SpamAssassin::Plugin::DCC [...] |
Vous pouvez vérifier votre configuration SpamAssassin en exécutant :
spamassassin --lintCela ne devrait pas afficher d’erreurs.
Exécutez
/etc/init.d/amavisd restartensuite.
Maintenant, nous mettons à jour nos ensembles de règles SpamAssassin comme suit :
sa-update --no-gpgNous créons un travail cron afin que les ensembles de règles soient mis à jour régulièrement. Exécutez
crontab -epour ouvrir l’éditeur de tâches cron. Créez le travail cron suivant :
| 23 4 */2 * * /usr/bin/sa-update --no-gpg &> /dev/null |
Cela mettra à jour les ensembles de 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, créez le fichier /usr/local/sbin/quota_notify :
cd /usr/local/sbin/
vi quota_notify| #!/usr/bin/perl -w # Auteur <[email protected]> # # Ce script suppose que virtual_mailbox_base est défini # dans le fichier main.cf de postfix. Ce répertoire est supposé contenir # des répertoires qui contiennent eux-mêmes les maildirs de vos utilisateurs virtuels. # Par exemple : # # -----------/ # | # | # home/vmail/domains/ # | | # | | # example.com/ foo.com/ # | # | # ----------------- # | | | # | | | # user1/ user2/ user3/ # | # | # maildirsize # use strict; my $POSTFIX_CF = "/etc/postfix/main.cf"; my $MAILPROG = "/usr/sbin/sendmail -t"; my $WARNPERCENT = 80; my @POSTMASTERS = ('[email protected]'); my $CONAME = 'Ma Société'; my $COADDR = '[email protected]'; my $SUADDR = '[email protected]'; my $MAIL_REPORT = 1; my $MAIL_WARNING = 1; #get virtual mailbox base from postfix config open(PCF, "< $POSTFIX_CF") or die $!; my $mboxBase; while ( |
Assurez-vous d’ajuster les variables en haut (en particulier l’adresse e-mail [email protected]).
Nous devons rendre le fichier exécutable :
chmod 755 quota_notifyExécutez
crontab -epour créer un travail 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 25Après avoir établi la connexion à votre serveur de messagerie Postfix, tapez
ehlo localhostSi vous voyez les lignes
*250-STARTTLS *et
*250-AUTH* LOGIN* PLAIN** *tout va bien.
[root@server1 sbin]# telnet localhost 25
Trying ::1...
Connected to localhost.
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 LOGIN PLAIN
250-AUTH=LOGIN PLAIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
quit
221 2.0.0 Bye
Connection closed by foreign host.
[root@server1 sbin]#Tapez
quitpour revenir à l’invite de commande du système.
16 Remplir la base de données et tester
Pour remplir la base de données, vous pouvez utiliser le shell MySQL :
mysql -u root -pUSE 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 faire attention à utiliser la syntaxe ENCRYPT dans la deuxième instruction INSERT afin de chiffrer 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 ; vous pouvez donc é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 chiffrer 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 :
| source | destination | |
| [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.tld | Cela redirige tous les e-mails vers 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érer les e-mails pour [email protected] vers deux adresses e-mail ou plus. Toutes les adresses e-mail répertoriées sous destination reçoivent une copie de l’e-mail. |
La table transport peut avoir des entrées comme celles-ci :
| domain | transport | |
| example.com | : | Livrer les e-mails pour example.com localement. C’est comme si cet enregistrement n’existait pas du tout dans cette table. |
| example.com | smtp:mail.anotherdomain.tld | Livrer tous les e-mails pour example.com via smtp au serveur mail.anotherdomain.com. |
| example.com | smtp:mail.anotherdomain.tld:2025 | Livrer 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 transportpour 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 reloadaprè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 d’en récupérer des e-mails (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. Par conséquent, il est judicieux d’envoyer un e-mail de bienvenue à un nouveau compte.
Tout d’abord, nous installons le package mailx :
yum install mailxPour 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 ~]# mailx [email protected]
Subject: Bienvenue <– ENTRÉE
Bienvenue ! Amusez-vous avec votre nouveau compte de messagerie. <– ENTRÉE
<– CTRL+D
EOT
[root@server1 ~]#
Recevez de nouveaux articles dans votre boîte de réception.
Aucun spam. Désabonnez-vous à tout moment.