209 lines
6.2 KiB
Markdown
209 lines
6.2 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 = 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
|
|
~~~~ |