0% ont trouvé ce document utile (0 vote)
14 vues11 pages

Configuration Mail Linux

Transféré par

somchai
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
14 vues11 pages

Configuration Mail Linux

Transféré par

somchai
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Configuration mail linux

Dans ce document nous verrons comment passer progressivement d’une configuration


postfix/dovecot non sécurisée (de Labo) à une version sécurisée utilisable en production.

1. Configuration non sécurisée avec gestion des


comptes en local
Dans un premier temps nous installerons les logiciels postfix et dovecot et comme
d'habitude une mise à jour des programmes disponibles au téléchargement s'impose :

apt-get update

apt-get install postfix dovecot-pop3d

Attention lors de l'installation de postfix il faudra choisir l'option site internet ensuite
on ne suit pas le menu de configuration, puisque nous irons dans les fichiers de
configuration.

Pour postfix nous ne modifierons qu'un fichier :

nano /etc/postfix/[Link]

à la fin du fichier nous modifierons les lignes suivantes (en rouge)

smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_$


myhostname = SRV-MAIL
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
mydestination = [Link], [Link], , localhost
relayhost =
mynetworks = [Link]/8 [Link]/24 [::ffff:[Link]]/104 [::1]/128
mailbox_command = procmail -a "$EXTENSION"
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all

Cohen Julien configuration mail linux 1/11


inet_protocols = ipv4

mydestination désigne les noms de domaines pour lesquels notre serveur de messagerie
accepte les messages.

Mynetworks désigne les réseaux autorisés à utiliser notre serveur smtp sans connexion
sécurisée (on rajoute ici [Link]/24 le réseau interne de notre infrastructure)

Enfin la ligne inet_protocols en ipv4 permet d'éviter d'avoir des erreurs si on n'utilise
pas l'ipv6 sur notre réseau.

Nous voilà avec un serveur smtp, il faudra enfin modifier le fichier le fichier
/etc/dovecot/[Link] pour configurer notre serveur POP et il suffira d'autoriser notre
réseau en dé-commentant la ligne 48 :

login_trusted_networks = [Link]/24

Enfin pour créer les utilisateurs de notre serveur mail nous pourrons lancer la commande
suivante :

adduser toto && adduser toto mail

2. Configuration d’une base de donnée pour gérer les


utilisateurs

Nous ajoutons ici un serveur de base de donnée ainsi que les plugins permettant à nos

Cohen Julien configuration mail linux 2/11


services postfix et dovecot d’y lire les informations :

apt install mariadb-server postfix-mysql dovecot-mysql

2.1. création de la base de donnée et gestion des comptes

Nous nous connectons ici à la base de donnée pour y créer une nouvelle base, un
utilisateur et finalement permettre à cet utilisateur d’accéder à la base de donnée.
Finalement nous créerons une table qui contiendra nos utilisateurs, le nom du domaine
dns, le mot de passe, l’addresse mail et un indicateur nous permettant d’activer le compte
ou non :

mariadb
MariaDB [(none)]> create database mail;
MariaDB [(none)]> create user 'julien'@'localhost' identified by 'poseidon';
MariaDB [(none)]> grant all on mail.* to 'julien'@'localhost';
MariaDB [(none)]> use mail
MariaDB [(none)]> CREATE TABLE users (
- > username VARCHAR(128) NOT NULL,
- > domain VARCHAR(128) NOT NULL,
- > password VARCHAR(64) NOT NULL,
- > mail VARCHAR(64) NOT NULL,
- > active CHAR(1) DEFAULT 'Y' NOT NULL
->);

pour voir les bases de données existantes :


MariaDB [(none)]> show databases ;

pour voir les bases de tables existantes :


MariaDB [(none)]> show tables ;

Pour voir les colonnes d’une table appelée users:


MariaDB [(none)]> describe users ;

pour supprimer une colonne :


MariaDB [(none)]> alter table users drop column active;

Cohen Julien configuration mail linux 3/11


pour ajouter une colonne à la table :
MariaDB [(none)]> alter table users add column active CHAR(1) DEFAULT 'Y' NOT NULL;

pour créer un nouvel utilisateur mail :

MariaDB [(none)]> insert into users (username,domain,password,mail,active) VALUES


('titi','[Link]','poseidon','titi@[Link]','1');

pour supprimer un utilisateur :


delete from users where username='toto';

pour désactiver un utilsateur :


update users set active='0' where username='titi';

pour activer un utilsateur :


update users set active='1' where username='titi';

2.2. Configuration de dovecot

Modifier le fichier de configuration sql :


nano /etc/docevot/[Link]

driver = mysql

connect = host=[Link] dbname=mail user=julien password=poseidon

default_pass_scheme = PLAIN

password_query = \
SELECT username,domain,password \
FROM users WHERE username = '%n' AND domain = '%d' AND active = '1'

user_query = SELECT username, 5999 AS uid, 5999 AS gid FROM users WHERE
username = '%n' AND active = '1'

Ajouter dans le fichier /etc /dovecot /[Link] :

Cohen Julien configuration mail linux 4/11


mail_uid = vmail
mail_gid = vmail

modifier la fin du fichier /etc /dovecot /conf.d /[Link]

...
#!include [Link]
!include [Link]
#!include [Link]
#!include [Link]
#!include [Link]
#!include [Link]

modifier le fichier /etc /dovecot /conf.d /[Link]


mail_location = maildir:/var/mail/vmail/%d/%n/Maildir

2.3. Configuration de postfix

Ajouter à la fin du fichier [Link] :

nano /etc/postfix/[Link]

mydestination = [Link], , localhost


...
virtual_transport = dovecot
virtual_mailbox_maps =
mysql:/etc/postfix/sql/mysql_virtual_mailbox_maps.cf,
mysql:/etc/postfix/sql/mysql_virtual_mailbox_domains_maps.cf
virtual_uid_maps = static:5999
virtual_gid_maps = static:5999
virtual_mailbox_base = /var/mail/vmail

Attention on devra ici retirer le domaine de la ligne mydestination (le domaine sera lu

Cohen Julien configuration mail linux 5/11


dans la base de donnée, il ne peut pas apparaître aux deux endroits).
créer les deux fichier dans le repertoire sql :

mkdir /etc/postfix/sql

nano mysql_virtual_mailbox_maps.cf

hosts = [Link]

user = julien
password = poseidon

dbname = mail

query = SELECT mail FROM users WHERE mail='%s' AND active='1'

nano mysql_virtual_domain_mailbox_maps.cf

hosts = [Link]

user = julien
password = poseidon

dbname = mail

query = SELECT distinct domain FROM users WHERE domain='%s' AND active='1'

finalement ajouter à la fin du fichier [Link] :

nano /etc/postfix /[Link] :

...
dovecot unix - n n - - pipe
flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -f ${sender} -d ${recipient}

addgroup --gid 5999 vmail


useradd -u 5999 -g 5999 -s /usr/sbin/nologin -d /var/mail/vmail vmail

Cohen Julien configuration mail linux 6/11


adduser vmail mail
mkdir /var/mail/vmail
chown -R vmail:vmail /var/mail/vmail

3. Activation de l’authentification SASL

Nous activerons ici l’authentification sasl de manière à reteindre le relais de mail aux
utilisateurs authentifiés

nano /etc/dovecot/conf.d/[Link]

unix_listener /var/spool/postfix/private/auth {
mode = 0666
user = postfix
group = postfix
}

nano /etc/postfix/[Link]

#SASL PARAMETERS
smtpd_sasl_security_options = noanonymous, noplaintext
smtpd_sasl_tls_security_options = noanonymous
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
broken_sasl_auth_clients = yes
#smtpd_sasl_auth_enable = yes # activer uniquement si le serveur ne reçoit pas les
connexions extérieures (n’est pas le MX accessible depuis internet)
mynetworks = [Link]/8 [::ffff:[Link]]/104 [::1]/128

Dans la partie mynetworks nous supprimons les adresses du réseau local interdisant ainsi
le relais des messages (envoi vers d’autres domaines)

vi /etc/postfix/[Link]

submission inet n - y - - smtpd

Cohen Julien configuration mail linux 7/11


-o syslog_name=postfix/submission
-o smtpd_tls_security_level=encrypt
-o smtpd_sasl_auth_enable=yes
# -o smtpd_tls_auth_only=yes
-o smtpd_reject_unlisted_recipient=yes
# -o smtpd_client_restrictions=$mua_client_restrictions
# -o smtpd_helo_restrictions=$mua_helo_restrictions
# -o smtpd_sender_restrictions=$mua_sender_restrictions
-o smtpd_recipient_restrictions=
-o smtpd_relay_restrictions=permit_sasl_authenticated,reject
# -o milter_macro_daemon_name=ORIGINATING

4. Filtrage anti-virus et anti-spam des emails

Maintenant que la messagerie est sécurisée et fonctionnelle nous pourrons y ajouter un


filtrage des mails avec anti-virus et anti-spam.

apt install amavisd-new clamav clamav-daemon spamassassin

Si l’installation de amavisd-new pose problème modifier le fichier /etc/amavis/conf.d/05-


node_id :

...
$myhostname = "[Link]";
...

Éditer le fichier /etc/amavis/conf.d/15-content_filter_mode

@bypass_virus_checks_maps = (
\%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);
@bypass_spam_checks_maps = (
\%bypass_spam_checks, \@bypass_spam_checks_acl, \
$bypass_spam_checks_re);

nano /etc/amavis/conf.d/50-user

Cohen Julien configuration mail linux 8/11


$warnvirussender = 1; # (defaults to false (undef))
# Notify spam sender?
$warnspamsender = 1;
# (defaults to false (undef))
# Notify sender of banned files?
$warnbannedsender = 1; # (defaults to false (undef))
# Notify sender of syntactically invalid header containing non-ASCII characters?
$warnbadhsender = 1; # (defaults to false (undef))
# Notify virus (or banned files or bad headers) RECIPIENT?
# (not very useful, but some policies demand it)
$warnvirusrecip = 1; # (defaults to false (undef))
$warnbannedrecip = 1; # (defaults to false (undef))
#$warnbadhrecip = 1; # (defaults to false (undef))

nano /etc/spamassassin/[Link]

rewrite_header Subject [SPAM]


required_score 5.0

nano /etc/postfix/[Link]

[Link]:10025 inet n - y - - smtpd


-o content_filter=
-o local_recipient_maps=
-o relay_recipient_maps=
-o smtpd_restriction_classes=
-o smtpd_helo_restrictions=
-o smtpd_sender_restrictions=
-o smtpd_recipient_restrictions=permit_mynetworks,reject
-o mynetworks=[Link]/8
-o strict_rfc821_envelopes=yes
smtp-amavis unix - - y - 2 smtp
-o smtp_data_done_timeout=1200
-o disable_dns_lookups=yes

Ajouter la ligne suivante au début du fichier

Cohen Julien configuration mail linux 9/11


nano /etc/postfix/[Link]

content_filter = smtp-amavis:[[Link]]:10024

finalement nous ajoutons l’utilisateur clamav au groupe amavis puis nous redémarrons les
différents services :

adduser clamav amavis


systemctl enable spamassassin && systemctl start spamassassin
systemctl enable clamav-daemon && systemctl start clamav-daemon
systemctl start amavis

Si le service clamav-daemon ne démarre pas il est fort probable que le téléchargement


des bases de données de virus ait échoué. Il faudra donc télécharger manuellement les
données sur internet à l’adresse suivante :

[Link]
[Link]

et placer ces fichiers dans le répertoire :


/var/lib/clamav

Pour permettre le test de notre anti-virus/antispam nous effectuerons les tests


suivant en observant les logs du service amavis.
Envoyer un mail avec le contenu suivant pour tester l’anti-spam :

XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X

Tester l’antivirus à l’aide du fichier suivant à mettre en pièce jointe :


[Link]

5. Synchronisation des boîtes de messagerie entre deux


serveurs

Cohen Julien configuration mail linux 10/11


Pour finir nous pourrons synchroniser les boîtes de messageries de deux serveurs en
utilisant une simple commande de synchronisation placée dans une tâche planifiée cron :

nano /root /[Link]

Doveadm sync -u *.[Link] [Link]

Cette commande permettra de synchroniser toutes les boites de messagerie du serveur


local avec le serveur à l’adresse [Link].
La commande utilisera une connexion ssh (il faudra utiliser une authentification par clé
pour pouvoir automatiser la synchronisation).

Finalement on ajoutera le lancement de ce script toutes les 5 minutes :

crontab -e


*/5 * * * * /root/[Link]

Cohen Julien configuration mail linux 11/11

Vous aimerez peut-être aussi