Mail_Server_Install/MailServerInstall.md
2019-11-11 20:16:00 +01:00

9.4 KiB

Installation Serveur Mail

Installation de Postfix

root@serveur:~# apt-get install postfix-mysql 

Verification du contenu de master.cf

root@serveur:~# vim /etc/postfix/master.cf

Dans le fichier (master.cf) il faut verifier que la premiere ligne ne contienne que un seul "n". La ligne doit ressembler a ceci:

smtp inet n - - - - smtpd

Creation de la base de donnees MySQL

  • On cree une base de donnees postfix, on ajoute un utilisateur postfix en passant par les privileges. Bien noter le mot de passe generer.
  • On cree les trois tables avec le code suivant:
        USE postfix;
    
        CREATE TABLE `domaines` (
          `domaine` varchar(255) NOT NULL default '',
          `etat` tinyint(1) NOT NULL default '1',
          PRIMARY KEY  (`domaine`)
        ) ENGINE=MyISAM;
    
        CREATE TABLE `comptes` (
          `email` varchar(255) NOT NULL default '',
          `password` varchar(255) NOT NULL default '',
          `quota` int(10) NOT NULL default '0',
          `etat` tinyint(1) NOT NULL default '1',
          `imap` tinyint(1) NOT NULL default '1',
          `pop3` tinyint(1) NOT NULL default '1',
          PRIMARY KEY  (`email`)
        ) ENGINE=MyISAM;
    
        CREATE TABLE `alias` (
          `source` varchar(255) NOT NULL default '',
          `destination` text NOT NULL,
          `etat` tinyint(1) NOT NULL default '1',
          PRIMARY KEY  (`source`)
        ) ENGINE=MyISAM;       
    

Edition des 5 fichiers de configuration suivants:

  • Contenu de mysql-virtual_domaines.cf

        hosts = 127.0.0.1
        user = postfix
        password = **Mot de passe Mysql Postfix**
        dbname = postfix
        select_field = 'virtual'
        table = domaines
        where_field = domaine
        additional_conditions = AND etat=1
    
  • Contenu de mysql-virtual_comptes.cf

        hosts = 127.0.0.1
        user = postfix
        password = **Mot de passe Mysql Postfix**
        dbname = postfix
        table = comptes
        select_field = CONCAT(SUBSTRING_INDEX(email,'@',-1),'/',SUBSTRING_INDEX(email,'@',1),'/')
        where_field = email
        additional_conditions = AND etat=1
    
  • Contenu de mysql-virtual_aliases.cf

        hosts = 127.0.0.1
        user = postfix
        password = **Mot de passe Mysql Postfix**
        dbname = postfix
        table = alias
        select_field = destination
        where_field = source
        additional_conditions = AND etat=1
    
  • Contenu de mysql-virtual_aliases_comptes.cf

        hosts = 127.0.0.1
        user = postfix
        password = **Mot de passe Mysql Postfix**
        dbname = postfix
        table = comptes
        select_field = email
        where_field = email
        additional_conditions = AND etat=1
    
  • Contenu de mysql-virtual_quotas.cf

        hosts = 127.0.0.1
        user = postfix
        password = **Mot de passe Mysql Postfix**
        dbname = postfix
        table = comptes
        select_field = quota
        where_field = email
    

Ajout du groupe et de l'utilisateur vmail

root@serveur:~# groupadd -g 5000 vmail 
root@serveur:~# useradd -g vmail -u 5000 vmail -d /var/spool/vmail -m 

Configuration du main.cf

Editer le main.cf

root@serveur:~# vim /etc/postfix/main.cf 
# Bannière afficher lorsqu'on se connecte en SMTP sur le port 25
smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)

# Service qui envoie des notifications "nouveau message"
biff = no

# Desactive la commande SMTP VRFY. Arrête certaine technique pour avoir des adresses email
disable_vrfy_command = yes

# Impose au client SMTP de démarrer la session SMTP par une commande Helo (ou ehlo)
smtpd_helo_required = yes

# Avec le courier local ça ajoute .NDD aux adresses incomplètes (seulement le nom d'hote)
append_dot_mydomain = no

# Le nom de la machine du système de messagerie
# Par défaut c'est host.domain.tld mais on peut mettre un reverse dns
myhostname = DOMAINNAME (Not reverse DNS)

# Le domaine utilisé par defaut pour poster les message local
myorigin = REVERSE_DNS

# Liste des domaines pour lequel le serveur doit accepter le courrier
mydestination = REVERSE_DNS, localhost.localdomain, localhost

# Pour effectuer des livraisons de courrier avec un relay (ici non)
relayhost =

# Liste des réseaux locaux autorisés
mynetworks = 127.0.0.0/8, IP_PUBLIQUE_SERVEUR

# Taille des boîtes au lettre (0 = illimité)
mailbox_size_limit = 0

# Séparateur entre le nom d'utilisateur et les extensions d'adresses
recipient_delimiter = +

# Interfaces réseaux à écouter (ici toutes)
inet_interfaces = all

# Gestion des boites mails virtuelle
# Contient les fichiers qui permettent de relier postfix  mysql
virtual_alias_maps = mysql:/etc/postfix/mysql-virtual_aliases.cf,mysql:/etc/postfix/mysql-virtual_aliases_comptes.cf
virtual_mailbox_domains = mysql:/etc/postfix/mysql-virtual_domaines.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql-virtual_comptes.cf

# Le dossier ou seront contenu les mails (=home de l'user vmail)
virtual_mailbox_base = /var/spool/vmail/

# L'id du groupe et de l'utilisateur vmail créé précédement
virtual_uid_maps = static:5000
virtual_gid_maps = static:5000

# Créer un dossier par comte email
virtual_create_maildirsize = yes

# A activer si vous souhaitez ajouter des quotas
virtual_mailbox_extended = yes

# Impose les limites au niveau des mails, dans notre cas aucune
virtual_mailbox_limit_maps = mysql:/etc/postfix/mysql-virtual_quotas.cf

# Ajouter une limite sur la taille des messages pour les boites virtuelles
virtual_mailbox_limit_override = yes
virtual_maildir_limit_message = "La boite mail de votre destinataire est pleine, merci de reessayez plus tard."
virtual_overquota_bounce = yes

# adresses d'expedition
smtpd_sender_restrictions =
        permit_mynetworks,
        warn_if_reject reject_unverified_sender

# adresses de destination
smtpd_recipient_restrictions =
        permit_mynetworks,
        reject_unauth_destination,
        reject_non_fqdn_recipient

# client
smtpd_client_restrictions =
        permit_mynetworks

Modification des droits sur les fichiers de configuration

root@serveur:~# chmod 640 /etc/postfix/mysql-virtual_*.cf
root@serveur:~# chgrp postfix /etc/postfix/mysql-virtual_*.cf

Restart postfix

root@serveur:~# /etc/init.d/postfix restart 

Insertion d'un nouveau domaine dans labase de donnees

Selectionner la table domaineset inserer un nouveau domaine Ex: "romanet.fr" et mettre l'etat a "1".

Insertion d'un nouvel utilisateur

Une fois la base de donnees postfixselectionnee (normalement c'est deja le cas), il faut executer le code SQL suivant:

    INSERT INTO `comptes`(`email`, `password`, `quota`, `etat`, `imap`, `pop3`) VALUES ('test@romanet.fr', ENCRYPT('motdepasse'), '0', '1', '1', '1');

Test par Telnet (Creation des repertoires mail par la meme occasion)

Executer la commande suivante:

root@serveur:~# telnet 127.0.0.1 25

Puis dans Telnet executer les commandes suivantes:

ehlo romanet.fr
mail from:<peuimporte@domaine.tld>
rcpt to:<test@romanet.fr> (l'email doit figurer dans la table comptes)
data (Puis ecrire le body du mail, ensuite faire Enter et terminer par ".")
quit (Pour sortir de Telnet)

Installation de Courier

root@serveur:~# apt-get install courier-base courier-authdaemon courier-authlib-mysql courier-imap courier-pop

Configuration de Courier

Editer /etc/courier/authdaemonrc

root@serveur:~# vim /etc/courier/authdaemonrc

Modifier la ligne: authmodulelist = authpam -> authmodulelist = authmysql

Editer /etc/courier/authmysqlrc

root@serveur:~# vim /etc/courier/authmysqlrc

Modifier:

         `MYSQL_USERNAME`
         `MYSQL_PASSWORD`
         `MYSQL_DATABASE` -> postfix
         `MYSQL_USER_TABLE` -> comptes
         `MYSQL_CRYPT_PWFIELD` -> password
         `MYSQL_UID_FIELD` -> 5000
         `MYSQL_GID_FIELD` -> 5000
         `MYSQL_LOGIN_FIELD` -> email
         `MYSQL_HOME_FIELD` -> "/var/spool/vmail"

Commenter: MYSQL_NAME_FIELD

Ajouter: MYSQL_MAILDIR_FIELD -> CONCAT(SUBSTRING_INDEX(email,'@',-1),'/',SUBSTRING_INDEX(email,'@',1),'/')

Redemarrage des services

root@serveur:~# /etc/init.d/courier-authdaemon restart
root@serveur:~# /etc/init.d/courier-pop restart
root@serveur:~# /etc/init.d/courier-imap restart

Telecharger la derniere version de Roundcube

Se rendre ici pour telecharger roundcube. Creer un VirtualHost sur le serveur Web et l'associer a Roundcube.

Base de donnees Roundcube

Creer une base de donnees roundcube ajouter un utilisateur (roundcube par exemple) et generer un mot de passe (a conserver pour la suite de l'installation.)

Creer les tables necessaires au bon fonctionnement de Roundcube avec la commande suivante:

root@serveur:~# mysql -u root -p roundcube < /var/www/domaine.tld/roundcube/SQL/mysql.initial.sql

Configuration de Roundcube

Se rendre a l'adresse ou Roundcube est accessible, (par exemple https://mail.romanet.fr/) et rajouter installer a la fin de l'url. Ce qui donnerait par exemple: https://mail.romanet.fr/installer