Configuration de Postfix et Dovecot sur Ubuntu

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