8.5 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.cfhosts = 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.cfhosts = 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.cfhosts = 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.cfhosts = 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.cfhosts = 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