De nombreux utilisateurs Ubuntu utilisent le système non seulement pour leurs besoins personnels. Cette approche est pleinement justifiée car sur les systèmes Linux, il est beaucoup plus pratique de programmer, de créer des serveurs et des sites Web. L'une des commodités est la création d'un serveur de messagerie. Pour les débutants, cette tâche semblera terriblement difficile, mais si vous savez comment installer et configurer le serveur de messagerie pour Ubuntu, la tâche ne vous semblera pas si difficile.
Comment configurer un serveur de messagerie basé sur Ubuntu.
Un peu de théorie
Avant des instructions spécifiques et la fermentation du code ne peut pas se passer d'une fraction de matériel théorique. Il est important de comprendre ce qu'est un serveur de messagerie et son fonctionnement.
En termes simples, un serveur de messagerie configuré est un facteur qui reçoit une «lettre» d'un client de messagerie et la transmet à un autre. En cela, en principe, toute l’essence du travail de ce logiciel. Le serveur de messagerie est nécessaire non seulement pour l'envoi de courrier électronique. Sur les sites, il est responsable de l’enregistrement des utilisateurs, de la soumission de formulaires et d’autres actions importantes, sans quoi le site deviendrait comme un livre, que vous ne pouvez regarder qu’en tournant les pages, mais il est difficile de faire quelque chose.
Les serveurs de messagerie sous Linux sont très différents de ceux de Windows et d’autres systèmes. Sous Windows, il s’agit d’un programme fermé prêt à l’emploi qui ne peut que commencer à être utilisé. Les distributions Linux requièrent également un réglage automatique de tous les composants. Et le serveur finira par consister en non pas un programme, mais plusieurs. Nous utiliserons Postfix en combinaison avec Dovecot et MySQL.
Pourquoi Postfix?
Il existe plusieurs clients de messagerie sur Ubuntu, mais nous avons quand même choisi celui-ci. Configurer Posfix sur Ubuntu est beaucoup plus simple que le même SendMail, ce qui est important pour un utilisateur novice. En combinaison avec Dovecot, Postfix est capable de faire tout ce qui est généralement requis des serveurs de messagerie.
Postfix est directement l'agent de transfert de courrier lui-même. Il jouera un rôle majeur dans toute la soumission. Il s'agit d'un programme open source que de nombreux serveurs et sites Web utilisent par défaut. Dovecot est un agent de distribution de courrier. Son rôle principal est d'assurer la sécurité du serveur. MySQL est un système de gestion de base de données idéal pour tous les sites. Il est nécessaire pour gérer les informations que nous recevons des utilisateurs de notre serveur.
Donc, avec la partie théorique est terminée. Maintenant, cela vaut la peine d'aller pratiquer.
Créer un serveur de messagerie
Que doit-on configurer avant d'installer le serveur de messagerie?
- MySQL;
- Zone DNS, vous devez avoir un nom personnel FDQN. Ensuite, nous allons utiliser namehost.
L'installation
Installez le programme:
apt-get installer postfix postfix-mysql dovecot-core dovecot-imapd dovecot-lmtpd dovecot-mysql
Lorsque la fenêtre de configuration de Postfix apparaît, nous devrons sélectionner le «site Internet».
Ci-dessous, il vous sera demandé de saisir un nom de domaine, utilisez "primer.ru".
Configuration de MySQL
Maintenant, nous devons configurer trois tables pour les données dans MySQL: pour les domaines, les utilisateurs et pour les alias - alias ou autres boîtes aux lettres d'utilisateurs. Ici, nous ne discuterons pas en détail de la configuration de la base de données MySQL.
Appelons la base de données examplemail. Créez une base de données avec le nom suivant:
mysqladmin -p create servermail
Connectez-vous à MySQL:
mysql -u root –p
Puis entrez le mot de passe. Si tout est fait correctement, il y aura une entrée dans le terminal:
mysql>
Créez un nouvel utilisateur spécifiquement pour vous connecter au réseau:
mysql> GRANT SELECT ON exemple: * TO 'usermail'@'127.0.0.1' IDENTIFIED BY 'mot de passe';
Maintenant, redémarrez MySQL pour vous assurer que toutes les modifications sont appliquées avec succès.
Nous utilisons notre base de données pour créer des tables basées sur celle-ci:
mysql> USE exemple-mail;
Créez une table pour les domaines:
CREATE TABLE `virtual_domains` (
`id` INT NOT NULL AUTO_INCREMENT,
`name` VARCHAR (50) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE = InnoDB DEFAULT CHARSET = utf8;
Créez une table pour les utilisateurs:
CREATE TABLE `virtual_users` (
`id` INT NOT NULL AUTO_INCREMENT,
`domain_id` INT NOT NULL,
`password` VARCHAR (106) NOT NULL,
`email` VARCHAR (120) NOT NULL,
PRIMARY KEY (`id`),
CLE UNIQUE `email` (` email`),
FOREIGN KEY (ID_domaine) REFERENCES virtual_domains (id) ON DELETE CASCADE
) ENGINE = InnoDB DEFAULT CHARSET = utf8;
Ici, comme vous pouvez le voir, email et mot de passe ajoutés. Et chaque utilisateur est lié au domaine.
Enfin, créez une table pour les pseudonymes:
CREATE TABLE `virtual_aliases` (
`id` INT NOT NULL AUTO_INCREMENT,
`domain_id` INT NOT NULL,
`source` varchar (100) NOT NULL,
`destination` varchar (100) NOT NULL,
PRIMARY KEY (`id`),
FOREIGN KEY (ID_domaine) REFERENCES virtual_domains (id) ON DELETE CASCADE
) ENGINE = InnoDB DEFAULT CHARSET = utf8;
Nous avons correctement configuré MySQL et créé trois tables nécessaires. Maintenant, vous devez gérer les domaines et les emails.
Domaines, adresses e-mail et alias
Ajoutons notre domaine à la table avec les domaines. FDQN doit être entré ici:
INSERT INTO `exemple_exemple``. Domaines_virtuels`
(`id`, ` name`)
VALEURS
('1', 'example.com'),
('2', 'namehost.example.com');
Ajoutez des données sur l'adresse e-mail à la table des utilisateurs:
INSERT INTO `exemple_explemail`.``virtual_users`
(`id`, ` id_domaine`, `mot de passe`, ` email`)
VALEURS
('1', '1', ENCRYPT ('firstpassword', CONCAT ('$ 6 $', SUBSTRING (SHA (RAND ()), -16))), ' '),
('2', '1', ENCRYPT ('secondpassword', CONCAT ('$ 6 $', SUBSTRING (SHA (RAND ()), -16))), ' ');
Ajoutez maintenant les informations à la dernière table:
INSERT INTO `exemple_exemple``. Alias_virtual`
(`id`, ` id_domaine`, `source`, ` destination`)
VALEURS
('1', '1', ' ', ' ');
Fermer MySQL:
mysql> exit
Configuration de Postfix
Passer directement aux paramètres Postfix. Nous avons besoin du client de messagerie pour envoyer des messages au nom des utilisateurs entrés dans la base de données et gérer la connexion SMTP. Pour commencer, nous allons créer une sauvegarde du fichier de configuration, auquel cas il était possible de revenir aux paramètres par défaut:
cp /etc/postfix/main.cf /etc/postfix/main.cf.orig
Ouvrez maintenant le fichier de configuration:
nano /etc/postfix/main.cf
Au lieu de nano, vous pouvez utiliser n’importe quel éditeur de texte de votre choix.
Nous allons commenter les paramètres TLS et en ajouter d'autres. SSL gratuit est utilisé ici:
# Paramètres TLS
# smtpd_tls_cert_file = / etc / ssl / certs / ssl-cert-snakeoil.pem
# smtpd_tls_key_file = / etc / ssl / private / ssl-cert-snakeoil.key
# smtpd_use_tls = yes
#smtpd_tls_session_cache_database = btree: $ {répertoire_données} / smtpd_scache
#smtp_tls_session_cache_database = btree: $ {répertoire_données} / smtp_scache
smtpd_tls_cert_file = / etc / ssl / certs / dovecot.pem
smtpd_tls_key_file = / etc / ssl / private / dovecot.pem
smtpd_use_tls = yes
smtpd_tls_auth_only = yes
Après cela, nous ajouterons quelques paramètres supplémentaires:
smtpd_sasl_type = pigeonnier
smtpd_sasl_path = private / auth
smtpd_sasl_auth_enable = yes
smtpd_recipient_restrictions =
permit_sasl_authenticated,
permit_mynetworks
rejeter_unauth_destination
Nous devons également commenter les paramètres de mydestination et les changer en localhost:
#mydestination = exemple.com, nomhôte.exemple.com, localhost.exemple.com, localhost
mydestination = localhost
Le paramètre myhostname doit contenir notre nom de domaine:
myhostname = namehost.example.com
Ajoutez maintenant une ligne pour envoyer des messages à tous les domaines listés dans la table MySQL:
virtual_transport = lmtp: unix: private / dovecot-lmtp
Ajoutez trois paramètres supplémentaires pour que Postfix puisse se connecter aux tables MySQL:
virtual_mailbox_domains = mysql: /etc/postfix/mysql-virtual-mailbox-domains.cf
virtual_mailbox_maps = mysql: /etc/postfix/mysql-virtual-mailbox-maps.cf
virtual_alias_maps = mysql: /etc/postfix/mysql-virtual-alias-maps.cf
Configurer les fichiers MySQL et Postfix
Créer un fichier
mysql-virtual-mailbox-domains.cf
Ajoutez-y ces valeurs:
utilisateur = utilisateur
mot de passe = mailpassword
hôtes = 127.0.0.1
nombase = exempleplemail
query = SELECT 1 FROM virtual_domains WHERE nom = '% s'
Redémarrez Postfix:
service postfix restart
Domaine de test pour Postfix:
postmap -q exemple.com mysql: /etc/postfix/mysql-virtual-mailbox-domains.cf
Créez un autre fichier:
nano /etc/postfix/mysql-virtual-mailbox-maps.cf
utilisateur = utilisateur
mot de passe = mailpassword
hôtes = 127.0.0.1
nombase = exempleplemail
query = SELECT 1 FROM virtual_users WHERE email = '% s'
Redémarrez Postfix:
service postfix restart
Ensuite, vérifiez à nouveau Postfix:
postmap -q mysql: /etc/postfix/mysql-virtual-mailbox-maps.cf
Si cela est fait correctement, devrait être affiché
Créez le dernier fichier pour les alias:
nano /etc/postfix/mysql-virtual-alias-maps.cf
utilisateur = utilisateur
mot de passe = mailpassword
hôtes = 127.0.0.1
nombase = exempleplemail
query = SELECT destination FROM virtual_aliases WHERE source = '% s'
Redémarrer:
service postfix restart
Dernière fois que nous testons:
postmap -q mysql: /etc/postfix/mysql-virtual-alias-maps.cf
Configuration Dovecot
Nous faisons des sauvegardes pour sept fichiers qui seront modifiés:
cp /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.orig
Ceci est un exemple de commande. Entrez six autres valeurs identiques pour ces fichiers:
/etc/dovecot/conf.d/10-mail.conf
/etc/dovecot/conf.d/10-auth.conf
/etc/dovecot/dovecot-sql.conf.ext
/etc/dovecot/conf.d/10-master.conf
/etc/dovecot/conf.d/10-ssl.conf
Ouvrez le premier fichier:
nano /etc/dovecot/dovecot.conf
Vérifiez si ce paramètre est commenté:
! include conf.d / *. conf
Entrez:
! include_try /usr/share/dovecot/protocols.d/*.protocol
protocole = imap lmtp
Au lieu de:
! include_try /usr/share/dovecot/protocols.d/*.protocol ligne
Editez le fichier suivant:
nano /etc/dovecot/conf.d/10-mail.conf
Recherchez la ligne emplacement_mail, supprimez le commentaire et définissez le paramètre suivant:
emplacement_mail = rép_mail: / var / mail / vhosts /% d /% n
Recherchez mail_privileged_group, mettez-la ici:
mail_privileged_group = mail
Nous vérifions l'accès. Entrez la commande:
ls -ld / var / mail
L'accès devrait ressembler à ceci:
drwxrwsr-x 3 root vmail 4096 24 janvier 21:23 / var / mail
Créez un dossier pour chaque domaine enregistré:
mkdir -p /var/mail/vhosts/example.com
Créez un utilisateur et un groupe avec l'ID 5000:
groupadd -g 5000 vmail
useradd -g vmail -u 5000 vmail -d / var / mail
Changez le propriétaire en utilisateur VMail:
chown -R vmail: vmail / var / mail
Editez le fichier suivant:
nano /etc/dovecot/conf.d/10-auth.conf
Décommentez le texte d'authentification et ajoutez la ligne:
disable_plaintext_auth = yes
Modifiez le paramètre suivant:
auth_mechanisms = identifiant simple
Commentant cette ligne:
#! include auth-system.conf.ext
Ajoutez une autorisation MySQL, commentez la ligne:
! include auth-sql.conf.ext
Créez un fichier avec des données pour l'authentification:
nano /etc/dovecot/conf.d/auth-sql.conf.ext
Entrez les informations suivantes:
passdb {
pilote = sql
args = /etc/dovecot/dovecot-sql.conf.ext
}
userdb {
pilote = statique
args = uid = vmail gid = vmail home = / var / mail / vhosts /% d /% n
}
Editez le fichier suivant:
nano /etc/dovecot/dovecot-sql.conf.ext
Définissez le paramètre MySQL et commentez:
driver = mysql
Décommentez et entrez:
connect = host = 127.0.0.1 dbname = utilisateur du serveur mail = mot de passe utilisateur = mot de passe mail
Recherchez la ligne default_pass_scheme, supprimez la mise en commentaire et entrez le paramètre:
default_pass_scheme = SHA512-CRYPT
Décommentez et introduisez un nouveau paramètre:
password_query = SELECT email en tant qu'utilisateur, mot de passe FROM virtual_users WHERE email = '% u';
Changer le propriétaire:
chown -R vmail: pigeonnier / etc / dovecot
chmod -R o-rwx / etc / dovecot
Ouvrez et éditez le fichier:
nano /etc/dovecot/conf.d/10-master.conf
Décommentez et entrez le paramètre:
service imap-login {
inet_listener imap {
port = 0
}
Entrez:
service lmtp {
unix_listener / var / spool / postfix / private / dovecot-lmtp {
mode = 0600
utilisateur = postfix
groupe = postfix
}
#inet_listener lmtp {
# Évitez de rendre LMTP visible pour Internet
#adresse =
#port =
#}
}
Changez la configuration suivante:
service auth {
unix_listener / var / spool / postfix / private / auth {
mode = 0666
utilisateur = postfix
groupe = postfix
}
unix_listener auth-userdb {
mode = 0600
utilisateur = vmail
#group =
}
#unix_listener / var / spool / postfix / private / auth {
# mode = 0666
#}
utilisateur = pigeonnier
}
Changez la dernière configuration dans ce fichier:
service auth-worker {
# Processus de travail d'authentification
# / etc / shadow. Si ce n'est pas nécessaire
# $ default_internal_user.
utilisateur = vmail
}
Nous avons donc finalement mis en place un serveur de messagerie sur Ubuntu. Et vous pouvez également y ajouter une configuration SSL ou utiliser celle par défaut. Pour vous protéger contre le spam, vous pouvez configurer Spam Assassin afin qu’il fonctionne avec notre serveur.
Utilisez le client de messagerie standard pour entrer ces informations:
- Nom d'utilisateur:
- Mot de passe: email1
- IMAP: exemple.com
- SMTP: exemple.com