GNU/Linux >> Tutoriels Linux >  >> Ubuntu

Utilisateurs virtuels et domaines avec Postfix, Courier, MySQL et SquirrelMail (Ubuntu 13.10)

Ce tutoriel est Copyright (c) 2014 par Falko Timme &Srijan Kishore. Il est dérivé d'un tutoriel de Christoph Haas que vous pouvez trouver sur http://workaround.org. Vous êtes libre d'utiliser ce didacticiel sous la licence Creative Commons 2.5 ou toute version ultérieure.

Ce document décrit comment installer un serveur de messagerie Postfix basé sur des utilisateurs et des domaines virtuels, c'est-à-dire des utilisateurs et des domaines qui se trouvent dans une base de données MySQL. Je montrerai également l'installation et la configuration de Courier (Courier-POP3, Courier-IMAP), afin que Courier puisse s'authentifier auprès de la même base de données MySQL que Postfix utilise.

Le serveur Postfix résultant est capable de SMTP-AUTH et TLS et quota (le quota n'est pas intégré à Postfix par défaut, je vais montrer comment patcher votre Postfix de manière appropriée). Les mots de passe sont stockés dans crypté formulaire dans la base de données (la plupart des documents que j'ai trouvés traitaient de mots de passe en texte brut, ce qui représente un risque pour la sécurité). En plus de cela, ce tutoriel couvre l'installation de Amavisd , SpamAssassin et ClamAV afin que les e-mails soient analysés à la recherche de spam et de virus. Je montrerai également comment installer SquirrelMail en tant qu'interface de messagerie Web afin que les utilisateurs puissent lire et envoyer des e-mails et modifier leurs mots de passe.

L'avantage d'une telle configuration "virtuelle" (utilisateurs et domaines virtuels dans une base de données MySQL) est qu'elle est bien plus performante qu'une configuration basée sur des utilisateurs système "réels". Avec cette configuration virtuelle, votre serveur de messagerie peut gérer des milliers de domaines et d'utilisateurs. De plus, il est plus facile à administrer car vous n'avez à vous occuper de la base de données MySQL que lorsque vous ajoutez de nouveaux utilisateurs/domaines ou modifiez ceux qui existent déjà. Plus de commandes postmap pour créer des fichiers db, plus de rechargement de Postfix, etc. Pour l'administration de la base de données MySQL, vous pouvez utiliser des outils basés sur le Web comme phpMyAdmin qui sera également installé dans ce guide. Le troisième avantage est que les utilisateurs ont une adresse e-mail comme nom d'utilisateur (au lieu d'un nom d'utilisateur + une adresse e-mail), ce qui est plus facile à comprendre et à retenir.

Ce guide est conçu comme un guide pratique ; il ne couvre pas les arrière-plans théoriques. Ils sont traités dans de nombreux autres documents sur le Web.

Ce document est fourni sans garantie d'aucune sorte ! Je tiens à dire que ce n'est pas la seule façon de mettre en place un tel système. Il existe de nombreuses façons d'atteindre cet objectif, mais c'est la voie que je prends. Je n'émets aucune garantie que cela fonctionnera pour vous !

1 Remarque préliminaire

Ce didacticiel est basé sur le serveur Ubuntu 13.10 (Saucy Salamander). Vous devez donc configurer une installation de base du serveur Ubuntu 13.10 avant de poursuivre ce didacticiel. Le système doit avoir une adresse IP statique. J'utilise 192.168.0.100 comme adresse IP dans ce tutoriel et server1.example.com comme nom d'hôte.

Assurez-vous que vous êtes connecté en tant que root (tapez

sudo su

pour devenir root), car nous devons exécuter toutes les étapes de ce tutoriel en tant qu'utilisateur root.

Il est très important que vous fassiez de /bin/sh un lien symbolique vers /bin/bash...

dpkg-reconfigure tiret

Utiliser dash comme shell système par défaut (/bin/sh) ? <-- Non

... et que vous désactivez AppArmor :

/etc/init.d/apparmor stop 
update-rc.d -f apparmor remove
apt-get remove apparmor apparmor-utils

 

2 Installer Postfix, Courier, Saslauthd, MySQL, phpMyAdmin

Pour installer Postfix, Courier, Saslauthd, MySQL et phpMyAdmin, nous exécutons simplement

apt-get install postfix postfix-mysql postfix-doc mysql-client mysql-server courier-authdaemon courier-authlib-mysql courier-pop courier-pop-ssl courier-imap courier-imap-ssl libsasl2-2 libsasl2-modules libsasl2-modules-sql sasl2-bin libpam-mysql openssl phpmyadmin apache2 libapache2-mod-php5 php5 php5-mysql libpam-smbpass

Quelques questions vous seront posées :

Nouveau mot de passe pour l'utilisateur "root" MySQL :<-- yourrootsqlpassword
Répétez le mot de passe pour l'utilisateur MySQL "root" :<-- yourrootsqlpassword
Créer des répertoires pour l'administration Web ? <-- Non
Type général de configuration de messagerie :<-- Site Internet
Nom de messagerie système :<-- serveur1.exemple.com
Certificat SSL requis <-- Ok
Serveur Web à reconfigurer automatiquement :<-- apache2
Configurer la base de données pour phpmyadmin avec dbconfig-common ? <-- Non

3 Appliquer le correctif de quota à Postfix

Nous devons récupérer les sources de Postfix, le patcher avec le patch de quota, créer de nouveaux packages .deb Postfix et installer ces packages .deb :

apt-get build-dep suffixe
cd /usr/src
suffixe source apt-get

(Assurez-vous d'utiliser la bonne version de Postfix dans les commandes suivantes. J'ai installé Postfix 2.10.2. Vous pouvez trouver votre version de Postfix en exécutant

postconf -d | grep mail_version

Le résultat devrait ressembler à ceci :

[email protected] :/usr/src# postconf -d | grep mail_version
mail_version =2.10.2
milter_macro_v =$mail_name $mail_version
[email protected] :/usr/src#

wget http://vda.sourceforge.net/VDA/postfix-vda-v13-2.10.0.patch
cd postfix-2.10.2
patch -p1 <../postfix- vda-v13-2.10.0.correctif

Ouvrez ensuite debian/rules et changez DEB_BUILD_HARDENING de 1 à 0 :

vi debian/règles
[...]exporter DEB_BUILD_HARDENING=0[...]

Si vous ne le faites pas, votre compilation échouera avec les messages d'erreur suivants :

maildir.c :dans la fonction âdeliver_maildirâ :
maildir.c:974:17 : erreur :le format n'est pas un littéral de chaîne et aucun argument de format [-Werror=format-security]
maildir.c :977:17 :erreur :le format n'est pas un littéral de chaîne et aucun argument de format [-Werror=format-security]
maildir.c:983:17 :erreur :le format n'est pas un littéral de chaîne et aucun argument de format [-Werror=format-security]
maildir.c:986:17 :erreur :le format n'est pas un littéral de chaîne et aucun argument de format [-Werror=format-security]
maildir.c :dans la fonction âsql2fileâ :
maildir.c:404:25 :avertissement :valeur de retour ignorée de âreadâ, déclarée avec l'attribut warn_unused_result [-Wunused-result]
maildir.c:417:26 :avertissement :valeur de retour ignorée de âreadâ, déclarée avec l'attribut warn_unused_result [-Wunused-result]
cc1 :certains avertissements sont traités comme des erreurs
make :*** [maildir.o] Erreur 1
make :Quitter le répertoire `/usr/src/postfix -2.10.2/src/virtual'
make[1] :*** [mise à jour] Erreur 1
make[1] :Départ du répertoire `/usr/src/postfix-2.10.2'
make :*** [build] Erreur 2
dpkg-buildpackage :erreur :la construction debian/rules a donné l'état de sortie d'erreur 2
[ e-mail protégé] :/usr/src/postfix-2.10.2#

Nous pouvons maintenant créer les nouveaux packages Postfix .deb :

dpkg-buildpackage

Maintenant, nous remontons d'un répertoire, c'est là que les nouveaux packages .deb ont été créés :

cd ..

La commande

ls -l

vous montre les packages disponibles :

[email protected] :/usr/src# ls -l
total 7124
drwxr-xr-x 18 root root    4096 Apr 16 04:29 postfix-2.10.2
- rw-r--r--  1 racine racine   48594 16 avril 04:29 postfix-cdb_2.10.2-1_amd64.deb
-rw-r--r--  1 racine racine  161974 16 avril 04:29 postfix- dev_2.10.2-1_all.deb
-rw-r--r--  1 racine racine 1094344 16 avril 04:29 postfix-doc_2.10.2-1_all.deb
-rw-r--r- -  1 racine racine   57342 16 avril 04:29 postfix-ldap_2.10.2-1_amd64.deb
-rw-r--r--  1 racine racine   50554 16 avril 04:29 postfix-mysql_2.10.2-1_amd64.deb
-rw-r--r--  1 racine racine   50804 16 avril 04:29 postfix-pcre_2.10.2-1_amd64.deb
-rw-r--r--  1 racine racine   50756 16 avril 04:29 postfix-pgsql_2.10.2-1_amd64.deb
-rw-r--r--  1 racine racine   55701 7 juin 2013 postfix-vda-v13-2.10.0.patch
-rw- r--r--  1 racine racine  282175 16 avril 04:28 postfix_2.10.2-1.diff.gz
-rw-r--r--  1 racine racine    1522 16 avril 04:28 postfix_2.10.2- 1.dsc
-rw-r--r--  1 root racine    3899 16 avril 04:29 postfix_2.10.2-1_amd64. modifications
-rw-r--r--  1 racine racine 1542368 16 avril 04:29 postfix_2.10.2-1_amd64.deb
-rw-r--r--  1 racine racine 3828326 12 septembre 2013 postfix_2.10.2.orig.tar.gz

Choisissez les packages postfix et postfix-mysql et installez-les comme ceci :

dpkg -i postfix_2.10.2-1_amd64.deb postfix-mysql_2.10.2-1_amd64.deb

4 Créer la base de données MySQL pour Postfix/Courier

Nous créons maintenant une base de données appelée mail :

mysqladmin -u root -p créer un courrier

Cette question vous sera posée :

Saisissez le mot de passe :<-- votremotdepasseqlracine

Ensuite, nous passons au shell MySQL :

mysql -u root -p

Sur le shell MySQL, nous créons l'utilisateur mail_admin avec le mot de passe mail_admin_password (remplacez-le par votre propre mot de passe) qui a les privilèges SELECT, INSERT, UPDATE, DELETE sur la base de données de messagerie. Cet utilisateur sera utilisé par Postfix et Courier pour se connecter à la base mail :

GRANT SELECT, INSERT, UPDATE, DELETE ON mail.* TO 'mail_admin'@'localhost' IDENTIFIED BY 'mail_admin_password';
GRANT SELECT, INSERT, UPDATE, DELETE ON mail.* TO 'mail_admin'@ 'localhost.localdomain' IDENTIFIÉ PAR 'mail_admin_password' ;
PRIVILÈGES FLUSH ;

Toujours sur le shell MySQL, nous créons les tables nécessaires à Postfix et Courier :

UTILISER le courrier ;
CREATE TABLE domaines (
domaine varchar(50) NOT NULL,
PRIMARY KEY (domaine) )
ENGINE=MyISAM;
CREATE TABLE transferts (
source varchar(80) NOT NULL,
destination TEXT NOT NULL,
PRIMARY KEY (source) )
ENGINE=MyISAM;
CREATE TABLE utilisateurs (
email varchar(80) NOT NULL,
mot de passe varchar(20) NOT NULL,
quota INT(10) DEFAULT '10485760',
PRIMARY KEY (courriel)
) ENGINE=MyISAM;
CREATE TABLE transport (
domaine varchar(128) NOT NULL par défaut '',
transport varchar(128) NOT NULL par défaut '',
CLÉ UNIQUE domaine (domaine)
) ENGINE=MonISAM ;
quitter ;

Comme vous l'avez peut-être remarqué, avec le renoncement; commande, nous avons quitté le shell MySQL et sommes de retour sur le shell Linux.

Les domaines table stockera chaque domaine virtuel pour lequel Postfix devrait recevoir des e-mails (par exemple, example.com ).

domaine
exemple.com

Les transferts table sert à créer un alias d'une adresse e-mail à une autre, par ex. transférer les e-mails pour [email protected] à [email protected] .

destination
source
[email protected] [e-mail protégé]

Les utilisateurs La table stocke tous les utilisateurs virtuels (c'est-à-dire les adresses e-mail, car l'adresse e-mail et le nom d'utilisateur sont identiques) et les mots de passe (en chiffré formulaire !) et une valeur de quota pour chaque boîte aux lettres (dans cet exemple, la valeur par défaut est de 10485760 octets, ce qui signifie 10 Mo).

e-mail mot de passe quota
[email protected] No9.E4skNvGa. ("secret" sous forme cryptée) 10485760

Le transport table est facultative, elle est destinée aux utilisateurs avancés. Il permet de transférer les e-mails d'utilisateurs uniques, de domaines entiers ou de tous les e-mails vers un autre serveur. Par exemple,

domaine transport
exemple.com smtp :[1.2.3.4]

transmettra tous les e-mails pour example.com via le protocole smtp au serveur avec l'adresse IP 1.2.3.4 (les crochets [] signifie "ne pas rechercher l'enregistrement DNS MX" (ce qui est logique pour les adresses IP...). Si vous utilisez un nom de domaine complet (FQDN) à la place, vous n'utiliserez pas les crochets.).

BTW, (je suppose que l'adresse IP de votre système de serveur de messagerie est 192.168.0.100), vous pouvez accéder à phpMyAdmin via http://192.168.0.100/phpmyadmin/ dans un navigateur et vous connecter en tant que mail_admin. Ensuite, vous pouvez consulter la base de données. Plus tard, vous pourrez utiliser phpMyAdmin pour administrer votre serveur de messagerie.

5 Configurer Postfix

Maintenant, nous devons dire à Postfix où il peut trouver toutes les informations dans la base de données. Par conséquent, nous devons créer six fichiers texte. Vous remarquerez que je dis à Postfix de se connecter à MySQL sur l'adresse IP 127.0.0.1 au lieu de localhost. C'est parce que Postfix s'exécute dans une prison chroot et n'a pas accès au socket MySQL auquel il essaierait de se connecter si je disais à Postfix d'utiliser localhost. Si j'utilise 127.0.0.1, Postfix utilise le réseau TCP pour se connecter à MySQL, ce qui ne pose aucun problème, même dans une prison chroot (l'alternative serait de déplacer le socket MySQL dans la prison chroot, ce qui cause d'autres problèmes).

Assurez-vous que /etc/mysql/my.cnf contient la ligne suivante :

vi /etc/mysql/my.cnf
[...]# Au lieu de sauter le réseau, la valeur par défaut est maintenant d'écouter uniquement sur # localhost qui est plus compatible et n'est pas moins sécurisé.bind-address =127.0.0.1[...]

Si vous deviez modifier /etc/mysql/my.cnf, veuillez redémarrer MySQL maintenant :

/etc/init.d/mysql restart

Exécuter

netstat -tap | grep mysql

pour vous assurer que MySQL écoute sur 127.0.0.1 (localhost.localdomain) :

[email protected] :~# netstat -tap | grep mysql
tcp        0      0 localhost.localdo:mysql *:*                     ÉCOUTEZ      24970/mysqld   
[email protected] :~#

Créons maintenant nos six fichiers texte.

vi /etc/postfix/mysql-virtual_domains.cf
user =mail_adminpassword =mail_admin_passworddbname =mailquery =SELECT domain AS virtual FROM domaines WHERE domain='%s'hosts =127.0.0.1
vi /etc/postfix/mysql-virtual_forwardings.cf
user =mail_adminpassword =mail_admin_passworddbname =mailquery =SELECT destination FROM transferts WHERE source='%s'hosts =127.0.0.1
vi /etc/postfix/mysql-virtual_mailboxes.cf
user =mail_adminpassword =mail_admin_passworddbname =mailquery =SELECT CONCAT(SUBSTRING_INDEX(email,'@',-1),'/',SUBSTRING_INDEX(email,'@', 1),'/') FROM utilisateurs WHERE email='%s'hosts =127.0.0.1
vi /etc/postfix/mysql-virtual_email2email.cf
user =mail_adminpassword =mail_admin_passworddbname =mailquery =SELECT email FROM users WHERE email='%s'hosts =127.0.0.1
vi /etc/postfix/mysql-virtual_transports.cf
user =mail_adminpassword =mail_admin_passworddbname =mailquery =SELECT transport FROM transport WHERE domain='%s'hosts =127.0.0.1
vi /etc/postfix/mysql-virtual_mailbox_limit_maps.cf
user =mail_adminpassword =mail_admin_passworddbname =mailquery =SELECT quota FROM utilisateurs WHERE email='%s'hosts =127.0.0.1

Modifiez ensuite les permissions et le groupe de ces fichiers :

chmod o=/etc/postfix/mysql-virtual_*.cf
postfix chgrp /etc/postfix/mysql-virtual_*.cf

Nous créons maintenant un utilisateur et un groupe appelé vmail avec le répertoire personnel /home/vmail. C'est là que toutes les boîtes aux lettres seront stockées.

groupadd -g 5000 vmail
useradd -g vmail -u 5000 vmail -d /home/vmail -m

Ensuite, nous effectuons une configuration de Postfix. Assurez-vous de remplacer server1.example.com par un FQDN valide, sinon votre Postfix risque de ne pas fonctionner correctement !

postconf -e 'myhostname =server1.example.com'
postconf -e 'mydestination =server1.example.com, localhost, localhost.localdomain'
postconf -e 'mynetworks =127.0.0.0 /8'
postconf -e 'virtual_alias_domains ='
postconf -e 'virtual_alias_maps =proxy:mysql:/etc/postfix/mysql-virtual_forwardings.cf, mysql:/etc/postfix/mysql-virtual_email2email. cf'
postconf -e 'virtual_mailbox_domains =proxy:mysql:/etc/postfix/mysql-virtual_domains.cf'
postconf -e 'virtual_mailbox_maps =proxy:mysql:/etc/postfix/mysql-virtual_mailboxes. cf'
postconf -e 'virtual_mailbox_base =/home/vmail'
postconf -e 'virtual_uid_maps =static:5000'
postconf -e 'virtual_gid_maps =static:5000'
postconf -e 'smtpd_sasl_auth_enable =yes'
postconf -e 'broken_sasl_auth_clients =yes'
postconf -e 'smtpd_sasl_authenticated_header =yes'
postconf -e 'smtpd_recipient_restrictions =permit_mynetworks, permit_sasl_authenticated, rejet_unauth_destinati on'
postconf -e 'smtpd_use_tls =yes'
postconf -e 'smtpd_tls_cert_file =/etc/postfix/smtpd.cert'
postconf -e 'smtpd_tls_key_file =/etc/postfix/smtpd. clé'
postconf -e 'transport_maps =proxy:mysql:/etc/postfix/mysql-virtual_transports.cf'
postconf -e 'virtual_maildir_extended =yes'
postconf -e 'virtual_mailbox_limit_maps =proxy :mysql:/etc/postfix/mysql-virtual_mailbox_limit_maps.cf'
postconf -e 'virtual_mailbox_limit_override =yes'
postconf -e 'virtual_maildir_limit_message ="L'utilisateur que vous essayez d'atteindre dépasse le quota."'
postconf -e 'virtual_overquota_bounce =yes'
postconf -e « proxy_read_maps =$ local_recipient_maps $ $ mydestination virtual_alias_maps $ virtual_alias_domains $ $ virtual_mailbox_maps virtual_mailbox_domains $ relay_recipient_maps $ relay_domains $ canonical_maps $ sender_canonical_maps $ recipient_canonical_maps $ relocated_maps $ transport_maps $ mynetworks $virtual_mailbox_limit_maps'

Ensuite, nous créons le certificat SSL nécessaire pour TLS :

cd /etc/postfix
openssl req -new -outform PEM -out smtpd.cert -newkey rsa:2048 -nodes -keyout smtpd.key -keyform PEM -days 365 -x509

Nom du pays (code à 2 lettres) [AU] :<-- Saisissez le nom de votre pays (par exemple, "DE").
Nom de l'état ou de la province (nom complet) [Some-State] :<-- Saisissez votre état ou Nom de la province.
Nom de la localité (par exemple, ville) [] :<-- Saisissez votre ville.
Nom de l'organisation (par exemple, société) [Internet Widgits Pty Ltd] :<-- Saisissez le nom de votre organisation (par exemple, le nom de votre entreprise).
Nom de l'unité organisationnelle (par exemple, section) [] :<-- Saisissez le nom de votre unité organisationnelle (par exemple, "Service informatique").
Nom commun (par exemple, VOTRE nom) [] :<-- Saisissez le nom de domaine complet du système (par exemple, "serveur1.exemple.com").
Adresse e-mail [] :<-- Saisissez votre adresse e-mail.

Modifiez ensuite les permissions du smtpd.key :

chmod o=/etc/postfix/smtpd.key

6 Configurer Saslauthd

Première exécution

mkdir -p /var/spool/postfix/var/run/saslauthd

Modifiez ensuite /etc/default/saslauthd. Définissez START sur yes et modifiez la ligne OPTIONS="-c -m /var/run/saslauthd" en OPTIONS="-c -m /var/spool/postfix/var/run/saslauthd -r":

vi /etc/default/saslauthd
## Paramètres du démon saslauthd# Veuillez lire /usr/share/doc/sasl2-bin/README.Debian pour plus de détails.## Saslauthd doit-il s'exécuter automatiquement au démarrage ? (par défaut :no)START=yes# Description de cette instance saslauthd. Recommandé.# (suggestion :démon d'authentification SASL)DESC="Démon d'authentification SASL"# Nom abrégé de cette instance saslauthd. Fortement recommandé.# (suggestion :saslauthd)NAME="saslauthd"# Quels mécanismes d'authentification saslauthd doit-il utiliser ? (par défaut :pam)## Options disponibles dans ce paquet Debian :# getpwent -- utilisez la fonction de bibliothèque getpwent()# kerberos5 -- utilisez Kerberos 5# pam -- utilisez PAM# rimap -- utilisez un serveur IMAP distant# shadow - - use the local shadow password file# sasldb -- use the local sasldb database file# ldap -- use LDAP (configuration is in /etc/saslauthd.conf)## Une seule option peut être utilisée à la fois. Voir la page de manuel saslauthd# pour plus d'informations.## Exemple :MECHANISMS="pam"MECHANISMS="pam"# Options supplémentaires pour ce mécanisme. (par défaut :aucun)# Consultez la page de manuel saslauthd pour plus d'informations sur les options spécifiques aux mécanismes.MECH_OPTIONS=""# Combien de processus saslauthd devons-nous exécuter ? (par défaut :5)# Une valeur de 0 créera un nouveau processus pour chaque connexion.THREADS=5# Autres options (par défaut :-c -m /var/run/saslauthd)# Remarque :Vous DEVEZ spécifier l'option -m ou saslauthd ne s'exécutera pas !## AVERTISSEMENT :NE SPÉCIFIEZ PAS L'OPTION -d.# L'option -d entraînera l'exécution de saslauthd au premier plan au lieu d'être # un démon. Cela EMPÊCHERA VOTRE SYSTÈME DE DÉMARRER CORRECTEMENT. Si vous souhaitez# exécuter saslauthd en mode débogage, veuillez l'exécuter à la main pour plus de sécurité.## Consultez /usr/share/doc/sasl2-bin/README.Debian pour des informations spécifiques à Debian.# Consultez la page de manuel de saslauthd et la sortie de 'saslauthd -h' pour des informations générales sur ces options.## Exemple pour les utilisateurs de chroot Postfix :"-c -m /var/spool/postfix/var/run/saslauthd"# Exemple pour les utilisateurs de Postfix non-chroot :"-c -m /var/run/saslauthd"## Pour savoir si votre Postfix exécute un chroot, vérifiez /etc/postfix/master.cf.# S'il contient la ligne "smtp inet n - y - - smtpd" ou "smtp inet n - - - - smtpd"# alors votre Postfix s'exécute dans un chroot.# S'il a la ligne "smtp inet n - n - - smtpd" alors votre Postfix n'est PAS# exécuté dans un chroot.#OPTIONS ="-c -m /var/run/saslauthd"OPTIONS="-c -m /var/spool/postfix/var/run/saslauthd -r"

Créez ensuite le fichier /etc/pam.d/smtp. Il ne doit contenir que les deux lignes suivantes (assurez-vous de remplir correctement les détails de votre base de données) :

vi /etc/pam.d/smtp
auth requise pam_mysql.so user=mail_admin passwd=mail_admin_password host=127.0.0.1 db=mail table=users usercolumn=email passwdcolumn=password crypt=1compte suffisant pam_mysql.so user=mail_admin passwd=mail_admin_password host=127.0.0.1 db=mail table=utilisateurs usercolumn=email passwdcolumn=mot de passe crypt=1

Créez ensuite le fichier /etc/postfix/sasl/smtpd.conf. Cela devrait ressembler à ceci :

vi /etc/postfix/sasl/smtpd.conf
pwcheck_method:saslauthdmech_list:plain loginallow_plaintext:trueauxprop_plugin:sqlsql_engine:mysqlsql_hostnames:127.0.0.1sql_user:mail_adminsql_passwd:mail_admin_passwordsql_database:mailsql_select:sélectionnez le mot de passe des utilisateurs où email ='%[email protégé]%r'

Ajoutez ensuite l'utilisateur postfix au groupe sasl (cela garantit que Postfix a l'autorisation d'accéder à saslauthd) :

adduser suffixe sasl

Redémarrez ensuite Postfix et Saslauthd :

/etc/init.d/postfix restart
/etc/init.d/saslauthd restart

7 Configurer Courrier

Nous devons maintenant dire à Courier qu'il doit s'authentifier auprès de notre base de données MySQL. Tout d'abord, éditez /etc/courier/authdaemonrc et changez la valeur de authmodulelist pour qu'il se lise :

vi /etc/courier/authdaemonrc
[...]authmodulelist="authmysql"[...]

Faites ensuite une sauvegarde de /etc/courier/authmysqlrc et videz l'ancien fichier :

cp /etc/courier/authmysqlrc /etc/courier/authmysqlrc_orig
cat /dev/null> /etc/courier/authmysqlrc

Ouvrez ensuite /etc/courier/authmysqlrc et insérez-y les lignes suivantes :

vi /etc/courier/authmysqlrc
 mysql_server localhostMYSQL_USERNAME mail_adminMYSQL_PASSWORD mail_admin_passwordMYSQL_PORT 0MYSQL_DATABASE mailMYSQL_USER_TABLE usersMYSQL_CRYPT_PWFIELD mot de passe # MYSQL_CLEAR_PWFIELD passwordMYSQL_UID_FIELD 5000MYSQL_GID_FIELD 5000MYSQL_LOGIN_FIELD emailMYSQL_HOME_FIELD "/ home / vmail" MYSQL_MAILDIR_FIELD CONCAT (SUBSTRING_INDEX (e-mail, '@', - 1), '/',SUBSTRING_INDEX(email,'@',1),'/')#quota MYSQL_NAME_FIELDMYSQL_QUOTA_FIELD

Lors de l'installation, les certificats SSL pour IMAP-SSL et POP3-SSL sont créés avec le nom d'hôte localhost. Pour le remplacer par le nom d'hôte correct (server1.example.com dans ce tutoriel), supprimez les certificats...

cd /etc/courier
rm -f /etc/courier/imapd.pem
rm -f /etc/courier/pop3d.pem

... et modifiez les deux fichiers suivants ; remplacez CN=localhost par CN=server1.example.com (vous pouvez également modifier les autres valeurs, si nécessaire) :

vi /etc/courier/imapd.cnf
[...]CN=server1.example.com[...]
vi /etc/courier/pop3d.cnf
[...]CN=server1.example.com[...]

Recréez ensuite les certificats...

mkimapdcert
mkpop3dcert

... et redémarrez Courier :

/etc/init.d/courier-authdaemon restart
/etc/init.d/courier-imap restart
/etc/init.d/courier-imap-ssl restart
/etc/init.d/courier-pop restart
/etc/init.d/courier-pop-ssl restart

En courant

telnet localhost pop3

vous pouvez voir si votre serveur POP3 fonctionne correctement. Il devrait rendre +OK Bonjour. (Tapez quit pour revenir au shell Linux.)

[email protected] :/etc/courier# telnet localhost pop3
Essayer ::1...
Connecté à localhost.localdomain.
Le caractère d'échappement est '^]'.
+OK Bonjour.
<-- quitter
+OK Meilleure chance la prochaine fois.
Connexion fermée par un hôte étranger.
[email protected] :/etc/courier#

8 Modifier /etc/aliases

Maintenant, nous devrions ouvrir /etc/aliases. Assurez-vous que postmaster pointe vers root et root vers votre propre nom d'utilisateur ou votre adresse e-mail, par ex. comme ceci :

vi /etc/aliases
[...]postmaster :rootroot :[email protected][...]

ou comme ceci (si l'administrateur est votre propre nom d'utilisateur) :

[...]postmaster :rootroot :administrateur[...]

Chaque fois que vous modifiez /etc/aliases, vous devez exécuter

nouveaux alias

ensuite et relancez Postfix :

/etc/init.d/postfix restart

9 Installer amavisd-new, SpamAssassin et ClamAV

Pour installer amavisd-new, spamassassin et clamav, exécutez la commande suivante :

apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 libnet-ph-perl libnet-snpp-perl libnet-telnet-perl noarch lzop pax

Ensuite, nous devons configurer amavisd-new. La configuration est divisée en plusieurs fichiers qui résident dans le répertoire /etc/amavis/conf.d. Jetez un œil à chacun d'eux pour vous familiariser avec la configuration. La plupart des paramètres sont corrects, cependant nous devons modifier trois fichiers :

Il faut d'abord activer ClamAV et SpamAssassin dans /etc/amavis/conf.d/15-content_filter_mode en décommentant les lignes @bypass_virus_checks_maps et @bypass_spam_checks_maps :

vi /etc/amavis/conf.d/15-content_filter_mode

Le fichier devrait ressembler à ceci :

use strict;# Vous pouvez modifier ce fichier pour réactiver la vérification du SPAM via spamassassin# et pour réactiver la vérification antivirus.## Mode de vérification antivirus par défaut# Veuillez noter , cette vérification antivirus est DÉSACTIVÉE par # défaut. # Si vous souhaitez l'activer, veuillez décommenter les lignes suivantes :Veuillez noter que la vérification anti-spam est DÉSACTIVÉE par # défaut.# Si vous souhaitez l'activer, veuillez décommenter les lignes suivantes :@bypass_spam_checks_maps =( \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);1; # assurer un retour défini

Ensuite, vous devriez jeter un œil aux paramètres de spam et aux actions pour les spams/virus-mails dans /etc/amavis/conf.d/20-debian_defaults. Il n'est pas nécessaire de modifier quoi que ce soit si les paramètres par défaut vous conviennent. Le fichier contient de nombreuses explications, il n'est donc pas nécessaire d'expliquer les paramètres ici :

vi /etc/amavis/conf.d/20-debian_defaults
[...]$QUARANTINEDIR ="$MYHOME/virusmails";$quarantine_subdir_levels =1; # activer le répertoire de quarantaine hachage$log_recip_templ =undef ; # désactiver les entrées de journal de niveau 0 par destinataire $DO_SYSLOG =1 ; # journal via syslogd (préféré)$syslog_ident ='amavis'; # balise d'identification syslog, ajoutée à tous les messages$syslog_facility ='mail';$syslog_priority ='debug'; # passer à info pour supprimer la sortie de débogage, etc$enable_db =1 ; # activer l'utilisation de BerkeleyDB/libdb (SNMP et nounou)$enable_global_cache =1; # activer l'utilisation du cache basé sur libdb if $enable_db=1$inet_socket_port =10024 ; # socket d'écoute par défaut$sa_spam_subject_tag ='***SPAM*** ';$sa_tag_level_deflt =2.0; # ajouter des en-têtes d'informations de spam si à ou au-dessus de ce niveau$sa_tag2_level_deflt =6.31 ; # ajouter les en-têtes 'spam détecté' à ce niveau$sa_kill_level_deflt =6.31; # déclenche des actions d'évitement du spam$sa_dsn_cutoff_level =10 ; # niveau de spam au-delà duquel aucune DSN n'est envoyée[...]$final_virus_destiny =D_DISCARD; # (données non perdues, voir quarantaine de virus)$final_banned_destiny =D_BOUNCE ; # D_REJECT quand MTA$final_spam_destiny frontal =D_BOUNCE;$final_bad_header_destiny =D_PASS; # Sujet aux faux positifs (pour le spam)[...]

Enfin, éditez /etc/amavis/conf.d/50-user et ajoutez la ligne $pax='pax'; au milieu :

vi /etc/amavis/conf.d/50-user
use strict;## Placez vos directives de configuration ici. Elles remplaceront celles des fichiers précédents.## Voir /usr/share/doc/amavisd-new/ pour la documentation et des exemples de# directives que vous pouvez utiliser dans ce fichier#$pax='pax';#---- -------- Ne rien modifier en dessous de cette ligne ---------------1; # assurer un retour défini

Ensuite, exécutez ces commandes pour ajouter l'utilisateur clamav au groupe amavis et pour redémarrer amavisd-new et ClamAV :

adduser clamav amavis
/etc/init.d/amavis restart
/etc/init.d/clamav-freshclam restart
/etc/init.d/clamav-daemon restart

Nous devons maintenant configurer Postfix pour diriger les e-mails entrants via amavisd-new :

postconf -e 'content_filter =amavis:[127.0.0.1]:10024'
postconf -e 'receive_override_options =no_address_mappings'

Ajoutez ensuite les lignes suivantes à /etc/postfix/master.cf :

vi /etc/postfix/master.cf
[...]amavis unix - - - - 2 smtp -o smtp_data_done_timeout=1200 -o smtp_send_xforward_command=yes127.0.0.1:10025 inet n - - - - smtpd -o =-o content_filter local_recipient_maps =-o -o =relay_recipient_maps smtpd_restriction_classes =-o -o =smtpd_client_restrictions smtpd_helo_restrictions =-o -o =smtpd_sender_restrictions smtpd_recipient_restrictions =permit_mynetworks, rejeter -o mynetworks =127.0.0.0 / 8 -o strict_rfc821_envelopes =yes -o receive_override_options=no_unknown_recipient_checks, no_header_body_checks

Redémarrez ensuite Postfix :

/etc/init.d/postfix restart

Maintenant lancez

netstat -tap

et vous devriez voir Postfix (master) en écoute sur les ports 25 (smtp) et 10025, et amavisd-new sur le port 10024 :

[email protected] :/etc/courier# netstat -tap
 Connexions Internet actives (serveurs et établissements)
Proto Recv-Q Send-Q Adresse locale           Adresse étrangère         État       PID/Nom du programme
tcp        0      0 *:http                  *:*                     LISTEN      6134/apache2
tcp        0      0 *:ssh                   *:*                     LISTEN      610/sshd
tcp        0      0 *:smtp                  *:*                     LISTEN      23128/master
tcp        0      0 localhost.localdo:10024 *:*                     LISTEN      21937/amavisd-new (
tcp        0      0 localhost.localdo:10025 *:*                     LISTEN      23128/master
tcp        0      0 localhost.localdo :mysql *:*                     LISTEN      4308/mysqld
tcp        0     52 server1.example.com:ssh 192.168.0.206:57597     ESTABLISHED 976/0
tcp6       0      0 [::]:ssh                [::]:*                  LISTEN      610/sshd
tcp6       0      0 [::]:smtp               [::]:*                  LISTEN      23128/master
tcp6       0      0 [::]:imaps              [::]:*                  LISTEN      18191/couriertcpd
tcp6       0      0 [::]:pop3s              [::]:*                  LISTEN      18259/couriertcpd
tcp6       0      0 [::]:pop3               [::]:*                  LISTEN      18222/couriertcpd
tcp6       0      0 [::]:imap2              [::]:*                  LISTEN      18154/couriertcpd
[email protected]:/etc/courier#
 

10 Install Razor, Pyzor And DCC And Configure SpamAssassin

Razor, Pyzor and DCC are spamfilters that use a collaborative filtering network. To install Razor and Pyzor, run

apt-get install razor pyzor

DCC isn't available in the Ubuntu 13.10 repositories, so we install it as follows:

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.1.154
./configure --with-uid=amavis
make
make install
chown -R amavis:amavis /var/dcc
ln -s /var/dcc/libexec/dccifd /usr/local/bin/dccifd

Now we have to tell SpamAssassin to use these three programs. Edit /etc/spamassassin/local.cf and add the following lines to it:

vi /etc/spamassassin/local.cf
[...]#dccuse_dcc 1dcc_path /usr/local/bin/dccproc#pyzoruse_pyzor 1pyzor_path /usr/bin/pyzor#razoruse_razor2 1razor_config /etc/razor/razor-agent.conf#bayesuse_bayes 1use_bayes_rules 1bayes_auto_learn 1

Then we must enable the DCC plugin in SpamAssassin. Open /etc/spamassassin/v310.pre and uncomment the loadplugin Mail::SpamAssassin::Plugin::DCC line:

vi /etc/spamassassin/v310.pre
[...]# DCC - perform DCC message checks.## DCC is disabled here because it is not open source. See the DCC# license for more details.#loadplugin Mail::SpamAssassin::Plugin::DCC[...]

You can check your SpamAssassin configuration by executing:

spamassassin --lint

It shouldn't show any errors.

Restart amavisd-new afterwards:

/etc/init.d/amavis restart

Now we update our SpamAssassin rulesets as follows:

sa-update --no-gpg

We create a cron job so that the rulesets will be updated regularly. Exécuter

crontab -e

to open the cron job editor. Create the following cron job:

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

This will update the rulesets every second day at 4.23h.


Ubuntu
  1. Utilisateurs virtuels et domaines avec Postfix, Courier, MySQL et SquirrelMail (Ubuntu 14.04LTS)

  2. Hébergement virtuel avec Proftpd et MySQL (incl. Quota) sur Ubuntu 14.04LTS

  3. Utilisateurs virtuels et domaines avec Postfix, Courier et MySQL (Ubuntu 6.10 Edgy Eft)

  4. Utilisateurs virtuels et domaines avec Sendmail

  5. Serveur de messagerie avec des utilisateurs virtuels et des domaines utilisant Postfix et Dovecot sur un VPS CentOS 6

Utilisateurs virtuels et domaines avec Postfix, Courier, MySQL et SquirrelMail (Ubuntu 12.10)

Hébergement virtuel avec vsftpd et MySQL sur Ubuntu 12.10

Hébergement virtuel avec Proftpd et MySQL (incl. Quota) sur Ubuntu 12.10

Utilisateurs virtuels et domaines avec Postfix, Courier, MySQL et SquirrelMail (Debian Wheezy)

Utilisateurs virtuels et domaines avec Postfix, Courier, MySQL et SquirrelMail (CentOS 6.3 x86_64)

Utilisateurs virtuels et domaines avec Postfix, Courier, MySQL et SquirrelMail (Fedora 18 x86_64)