Mail_Server_Install/MailServerInstall.md
2019-11-11 15:40:57 +01:00

209 lines
6.1 KiB
Markdown

# Installation Serveur Mail
## Installation de Postfix
```console
root@serveur:~# apt-get install postfix-mysql
```
### Verification du contenu de master.cf
```console
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:
```console
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:
~~~~sql
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`
```text
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`
```text
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`
```text
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`
```text
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`
```text
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`
```console
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`
```console
root@serveur:~# vim /etc/postfix/main.cf
```
~~~~ini
# 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 = 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
~~~~