GNU/Linux >> Tutoriels Linux >  >> Linux

Comment créer un serveur de messagerie complet à l'aide de Postal

Postal est un serveur de messagerie complet gratuit et open source pour l'envoi et la réception d'e-mails. Il est écrit en Ruby et JavaScript. Vous pouvez facilement installer Postal sur votre propre serveur. Il vous aide également à fournir les informations DNS correctes nécessaires pour réduire les spams. La poste est utilisée par de nombreuses organisations pour envoyer et recevoir des e-mails au quotidien.

Dans ce tutoriel, nous allons installer Postal Mail Server sur Ubuntu 17.04.

Prérequis

  • Serveur Ubuntu 17.04 minimal. 8 Go de RAM recommandés.
  • Privilèges root. Ce guide est écrit en tant qu'utilisateur root, si vous êtes connecté en tant qu'utilisateur sudo, exécutez sudo -i.
  • un nom de domaine pointant vers votre serveur.

Mettre à jour le système de base

Avant d'installer un package, il est recommandé de mettre à jour les packages et le référentiel à l'aide de la commande suivante.

apt update && apt -y upgrade
shutdown -r now

Une fois votre système mis à jour, poursuivez l'installation de Ruby.

Installer Ruby

Postal est écrit en Ruby, il est donc nécessaire d'installer Ruby 2.3 ou supérieur sur votre système. Dans ce tutoriel, nous allons installer la dernière version de Ruby en utilisant RVM. Exécutez la commande suivante pour ajouter la clé GPG de RVM sur votre serveur.

gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3

Installez maintenant RVM en utilisant la commande suivante.

curl -sSL https://get.rvm.io | bash -s stable

Pour utiliser RVM immédiatement, vous devrez exécuter la commande suivante.

source /etc/profile.d/rvm.sh

Récupérez maintenant la liste de Ruby en utilisant la commande suivante.

rvm list known

Vous verrez la sortie suivante :

# MRI Rubies
[ruby-]1.8.6[-p420]
[ruby-]1.8.7[-head] # security released on head
[ruby-]1.9.1[-p431]
[ruby-]1.9.2[-p330]
[ruby-]1.9.3[-p551]
[ruby-]2.0.0[-p648]
[ruby-]2.1[.10]
[ruby-]2.2[.6]
[ruby-]2.3[.3]
[ruby-]2.4[.0]
ruby-head

Installez maintenant la dernière version de Ruby dans la liste à l'aide de la commande suivante.

rvm install 2.4

Utilisez la version Ruby à l'aide de la commande suivante.

rvm use 2.4

Vous pouvez vérifier la version de Ruby en utilisant la commande suivante.

ruby -v

Vous devriez voir la sortie suivante si Ruby est installé avec succès.

[email protected]:~# ruby -v
ruby 2.4.0p0 (2016-12-24 revision 57164) [x86_64-linux]

Installer Ruby Gems

Pour exécuter Postel sur votre serveur, vous devrez installer bundler et procodile sur votre serveur. bundler est un gestionnaire de dépendances pour les applications ruby ​​gem. procodile est un outil de gestion de processus pour les applications Ruby. Installez les deux applications à l'aide des commandes suivantes.

gem install bundler
gem install procodile

Installer le serveur de base de données MariaDB

MariaDB est un fork du serveur de base de données MySQL. MySQL est un logiciel de système de gestion de base de données relationnelle utilisé pour stocker des données sous forme de tableau. Pour installer MariaDB sur votre serveur, exécutez :

apt -y install mariadb-client mariadb-server libmysqlclient-dev

Exécutez les commandes suivantes pour démarrer MariaDB et lui permettre de démarrer au démarrage.

systemctl start mariadb
systemctl enable mariadb

Exécutez maintenant les commandes suivantes pour sécuriser votre installation MariaDB.

mysql_secure_installation

La commande ci-dessus exécutera un script pour sécuriser la nouvelle installation de MariaDB. Le script demandera le mot de passe de l'utilisateur root existant, nous venons d'installer MariaDB, le mot de passe root n'est pas défini, appuyez simplement sur Entrée pour continuer.

Le script vous demandera si vous souhaitez définir un mot de passe root pour votre installation MariaDB, choisissez y et définissez un mot de passe fort pour l'installation. La plupart des questions sont explicites et vous devez répondre oui ou y à toutes les questions.

Configurer la base de données pour la poste

Pour créer une base de données pour Postal, nous devrons d'abord nous connecter à la ligne de commande MySQL. Exécutez la commande suivante pour le même.

mysql -u root -p

La commande ci-dessus se connectera au shell MySQL de l'utilisateur root, il demandera le mot de passe de l'utilisateur root. Fournissez le mot de passe pour vous connecter. Exécutez maintenant la requête suivante pour créer une nouvelle base de données pour votre installation Postal.

CREATE DATABASE postal CHARSET utf8mb4 COLLATE utf8mb4_unicode_ci;

La requête ci-dessus créera une nouvelle base de données nommée postal. Assurez-vous d'utiliser un point-virgule à la fin de chaque requête car la requête se termine toujours par un point-virgule.

Fournissez maintenant tous les privilèges à votre utilisateur de base de données sur la base de données que vous avez créée. Exécutez la commande suivante.

GRANT ALL ON `postal`.* TO `postal`@`127.0.0.1` IDENTIFIED BY "StrongPassword";

Remplacez StrongPassword par un mot de passe très fort et sécurisé.

La base de données sera automatiquement écrite par Postal, mais pour cela, nous devrons fournir les autorisations appropriées aux utilisateurs de Postal. Exécutez la commande suivante pour accorder des privilèges à tous les utilisateurs qui commencent par postal-.

GRANT ALL PRIVILEGES ON `postal-%` . * to `postal`@`127.0.0.1`  IDENTIFIED BY "StrongPassword";

Exécutez maintenant la commande suivante pour appliquer immédiatement les modifications sur les privilèges de la base de données.

FLUSH PRIVILEGES;

Quittez l'invite MySQL à l'aide de la commande suivante.

EXIT;

Installer RabbitMQ

RabbitMQ est écrit en langage Erlang, dans ce tutoriel, nous allons installer la dernière version d'Erlang sur le serveur. Installez Erlang en utilisant la commande suivante.

apt -y install erlang

Importez la clé GPG en exécutant :

curl -sL https://www.rabbitmq.com/rabbitmq-release-signing-key.asc | sudo apt-key add -

Ajoutez maintenant le référentiel RabbitMQ en exécutant la commande suivante :

add-apt-repository 'deb http://www.rabbitmq.com/debian/ testing main'

Mettez à jour l'index du référentiel en exécutant la commande suivante.

apt update

Vous pouvez maintenant installer RabbitMQ en exécutant la commande suivante.

apt -y install rabbitmq-server

RabbitMQ est maintenant installé sur votre système.

Configurer RabbitMQ

Vous pouvez démarrer le processus du serveur RabbitMQ en exécutant la commande suivante.

systemctl start rabbitmq-server

Pour démarrer automatiquement RabbitMQ au démarrage, exécutez la commande suivante.

systemctl enable rabbitmq-server

Exécutez maintenant la commande suivante pour créer un hôte virtuel pour Postal dans le serveur RabbitMQ.

rabbitmqctl add_vhost /postal

Ajoutez maintenant un utilisateur RabbitMQ pour Postal en exécutant la commande suivante.

rabbitmqctl add_user postal StrongPassword

Remplacer StrongPassword est un mot de passe très fort.

Définissez maintenant l'autorisation appropriée sur l'hôte virtuel RabbitMQ pour l'utilisateur RabbitMQ.

rabbitmqctl set_permissions -p /postal postal ".*" ".*" ".*"

Installer Git et Node.js

Git sera utilisé pour récupérer le package d'installation et quelques dépendances. Exécutez la commande suivante pour installer Git sur votre système.

apt -y install git

Vous pouvez vérifier si Git est installé avec succès en vérifiant la version à l'aide de la commande suivante.

git --version

Vous devriez obtenir la sortie suivante.

[email protected]:~# git --version
git version 2.11.0

Node.js sera utilisé pour compiler la bibliothèque JavaScript. Installez le logiciel à l'aide de la commande suivante.

apt -y install nodejs

Vous pouvez vérifier si Node.js est installé avec succès en exécutant la commande suivante.

nodejs -v

Vous devriez obtenir la sortie suivante.

[email protected]:~# nodejs -v
v4.7.2

Maintenant que toutes les dépendances sont prêtes, vous pouvez installer Postal.

Installer Postal

Postal doit fonctionner comme son propre utilisateur isolé. Exécutez la commande suivante pour créer un nouvel utilisateur.

useradd -r -m -d /opt/postal -s /bin/bash postal

La commande ci-dessus créera un nouvel utilisateur avec le nom d'utilisateur postal et le répertoire personnel est défini sur /opt/postal.

Autorisez Ruby à écouter les ports privilégiés en exécutant la commande suivante.

setcap 'cap_net_bind_service=+ep' /usr/local/rvm/rubies/ruby-2.4.0/bin/ruby

Maintenant que tout est prêt, téléchargez la dernière archive postale et extrayez-la en tant qu'utilisateur postal à l'aide de la commande suivante.

wget https://postal.atech.media/packages/stable/latest.tgz -O - | sudo -u postal tar zxpv -C /opt/postal

Créez maintenant un lien symbolique vers le fichier binaire Postal en exécutant la commande suivante.

ln -s /opt/postal/bin/postal /usr/bin/postal

Vous pouvez maintenant interagir avec votre serveur postal à partir de n'importe quel répertoire. Pour exécuter les commandes suivantes, vous devrez vous connecter au shell en tant qu'utilisateur postal.

su - postal

Vous devrez maintenant installer toutes les dépendances ruby ​​nécessaires pour exécuter l'application.

postal bundle /opt/postal/vendor/bundle

Une fois les dépendances installées, vous devrez générer les fichiers de configuration par défaut.

postal initialize-config

La commande ci-dessus générera la configuration requise pour votre installation Postal, y compris diverses clés et certificats. Cela générera également le fichier de configuration postal.yml par défaut. Vous devriez obtenir la sortie suivante.

[email protected]:~$ postal initialize-config
Created example config file at /opt/postal/config/postal.yml
Created new private key for Let's Encrypt
Created new signing key for DKIM & HTTP requests
Created new private key for default fast server TLS connections
Created new self signed certificate for default fast server TLS connections

Vous devrez maintenant configurer quelques options dans la configuration de postal.yml.

nano /opt/postal/config/postal.yml

Recherchez la ligne suivante :

web:
  # The host that the management interface will be available on
  host: postal.example.com

Remplacez le nom d'hôte par votre nom de domaine réel. Plus loin, trouvez les lignes suivantes.

main_db:
  # Specify the connection details for your MySQL database
  host: 127.0.0.1
  username: postal
  password: p0stalpassw0rd
  database: postal

message_db:
  # Specify the connection details for your MySQL server that will be house the
  # message databases for mail servers.
  host: 127.0.0.1
  username: postal
  password: p0stalpassw0rd
  prefix: postal

Modifiez le nom d'utilisateur, le mot de passe et le nom de la base de données en fonction de la base de données que vous avez créée. Plus loin, trouvez ces lignes :

rabbitmq:
  # Specify the connection details for your RabbitMQ server.
  host: 127.0.0.1
  username: postal
  password: StrongPassword
  vhost: /postal

Modifiez la configuration ci-dessus en fonction du vhost et de l'utilisateur créés pour RabbitMQ. Ensuite, recherchez les configurations DNS.

dns:
  # Specifies the DNS record that you have configured. Refer to the documentation at
  # https://github.com/atech/postal/wiki/Domains-&-DNS-Configuration for further
  # information about these.
  mx_records:
    - mx.postal.example.com
  smtp_server_hostname: postal.example.com
  spf_include: spf.postal.example.com
  return_path: rp.postal.example.com
  route_domain: routes.postal.example.com
  track_domain: track.postal.example.com

Remplacez les domaines ci-dessus par les domaines réels que vous souhaitez utiliser avec le serveur de messagerie.

Enregistrez le fichier et quittez l'éditeur. Maintenant, initialisez la base de données et les autres ressources en exécutant :

postal initialize

Créez l'utilisateur Postal Administrator en exécutant la commande suivante.

postal make-user

La commande ci-dessus vous demandera l'adresse e-mail, le nom d'utilisateur et le mot de passe. La commande ci-dessus générera la sortie suivante.

[email protected]:~$ postal make-user
Postal User Creator
Enter the information required to create a new Postal user.
This tool is usually only used to create your initial admin user.

E-Mail Address      : [email protected]
First Name          : Liptan
Last Name           : Biswas
Initial Password:   : **************

User has been created with e-mail address [email protected]

La configuration de la ligne de commande de Postal est maintenant terminée, vous pouvez démarrer le serveur à l'aide de la commande suivante.

postal start

Pour vérifier si les services sont démarrés correctement, exécutez la commande suivante.

postal status

Vous devriez obtenir la sortie suivante.

[email protected]:~$ postal status
Procodile Version   1.0.17
Application Root    /opt/postal
Supervisor PID      5319
Started             2017-07-21 07:26:19 +0000

|| web
|| Quantity            1
|| Command             bundle exec puma -C config/puma.rb
|| Respawning          5 every 3600 seconds
|| Restart mode        usr1
|| Log path            none specified
|| Address/Port        none
|| => web.1            Running      07:26        pid:5325     respawns:0      port:-        tag:-

|| worker
|| Quantity            1
|| Command             bundle exec ruby script/worker.rb
|| Respawning          5 every 3600 seconds
|| Restart mode        start-term
|| Log path            none specified
|| Address/Port        none
|| => worker.1         Running      07:26        pid:5327     respawns:0      port:-        tag:-

|| cron
|| Quantity            1
|| Command             bundle exec rake postal:cron
|| Respawning          5 every 3600 seconds
|| Restart mode        term-start
|| Log path            none specified
|| Address/Port        none
|| => cron.1           Running      07:26        pid:5329     respawns:0      port:-        tag:-

|| smtp
|| Quantity            1
|| Command             bundle exec rake postal:smtp_server
|| Respawning          5 every 3600 seconds
|| Restart mode        usr1
|| Log path            none specified
|| Address/Port        none
|| => smtp.1           Running      07:26        pid:5332     respawns:0      port:-        tag:-

|| requeuer
|| Quantity            1
|| Command             bundle exec rake postal:requeuer
|| Respawning          5 every 3600 seconds
|| Restart mode        term-start
|| Log path            none specified
|| Address/Port        none
|| => requeuer.1       Running      07:26        pid:5334     respawns:0      port:-        tag:-

Pour arrêter Postal, vous pouvez toujours exécuter la commande suivante.

postal stop

Configuration de Nginx en tant que proxy inverse

Pour des raisons de sécurité, l'interface Web et l'API Postal doivent être derrière tout serveur Web de production tel qu'Apache ou Nginx. Dans ce tutoriel, nous allons installer et configurer Nginx en tant que proxy inverse.

Installez le serveur Web Nginx en exécutant la commande suivante.

apt -y install nginx

Il est recommandé d'utiliser SSL pour accéder à Nginx. Vous pouvez soit utiliser un certificat auto-signé, soit un certificat SSL gratuit Let's Encrypt, soit un certificat commercial. Dans ce didacticiel, nous utiliserons le SSL gratuit de Let's Encrypt.

Installez le client Let's Encrypt, également connu sous le nom de certbot, en exécutant la commande suivante.

apt -y install certbot

Une fois l'installation terminée, exécutez la commande suivante pour obtenir des certificats de l'autorité de certification Let's Encrypt. Assurez-vous que le nom de domaine pointe vers votre serveur car certbot vérifiera l'autorité de domaine avant de fournir les certificats. Remplacez mail.example.com par votre nom de domaine réel.

certbot certonly --standalone -d mail.example.com

Une fois les certificats générés, ils seront stockés dans /etc/letsencrypt/live/mail.example.com.

Let's Encrypt SSL expire dans 90 jours, il est donc recommandé de définir un renouvellement automatique pour vos certificats. Exécutez la commande suivante pour ouvrir votre fichier crontab.

crontab -e

Entrez la ligne suivante dans le fichier crontab.

30 1 * * 1 /usr/bin/certbot renew >> /var/log/le-renew.log

La tâche cron ci-dessus s'exécutera automatiquement tous les lundis à 1h30 et si vos certificats arrivent à expiration, elle les renouvellera automatiquement.

Créez maintenant un nouveau bloc de serveur pour votre site Web en exécutant la commande suivante.

nano /etc/nginx/conf.d/mail.example.com.conf

Remplissez le fichier avec le contenu suivant.

server {
    listen [::]:80;
    listen 0.0.0.0:80;
    server_name mail.example.com;
    return 301 https://$host$request_uri;
}

server {
    listen [::]:443 ssl;
    listen 0.0.0.0:443 ssl;
    root /opt/postal/public;
    server_name mail.example.com;
    ssl_certificate      /etc/letsencrypt/live/mail.example.com/fullchain.pem;
    ssl_certificate_key  /etc/letsencrypt/live/mail.example.com/privkey.pem;
    ssl_protocols TLSv1.2 TLSv1.1 TLSv1;
    ssl_prefer_server_ciphers on;
    ssl_ciphers EECDH+ECDSA+AESGCM:EECDH+aRSA+AESGCM:EECDH+ECDSA+SHA512:EECDH+ECDSA+SHA384:EECDH+ECDSA+SHA256:ECDH+AESGCM:ECDH+AES256:DH+AESGCM:DH+AES256:RSA+AESGCM:!aNULL:!eNULL:!LOW:!RC4:!3DES:!MD5:!EXP:!PSK:!SRP:!DSS;

    location / {
       client_max_body_size 50M;
       try_files $uri $uri/index.html $uri.html @puma;
    }

    location /assets {
       add_header Cache-Control max-age=3600;
    }

    location @puma {
        proxy_set_header X-Real-IP  $remote_addr;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto https;
        proxy_pass http://127.0.0.1:5000;
    }
}

Enregistrez le fichier et quittez l'éditeur. Maintenant, redémarrez le serveur Web nginx en exécutant.

systemctl restart nginx

Pour permettre à nginx de démarrer automatiquement au démarrage, exécutez la commande suivante.

systemctl enable nginx

Vous pouvez maintenant accéder à Postal sur en naviguant sur le site Web suivant via votre navigateur Web préféré.

https://mail.example.com

Configuration de la poste

Une fois que vous aurez parcouru le site ci-dessus, vous verrez l'interface suivante.


Entrez l'adresse e-mail et le mot de passe de l'utilisateur que vous avez créé précédemment. Une fois connecté, il vous sera demandé de créer une nouvelle organisation.

Indiquez le nom de l'organisation. Vous pouvez choisir d'utiliser le nom abrégé généré automatiquement ou vous pouvez en spécifier un vous-même. Les noms courts sont utilisés comme nom d'utilisateur lors de l'authentification avec le serveur SMTP. Il ne doit contenir que des lettres, des chiffres et un trait d'union.


Une fois l'organisation créée, il vous sera demandé de créer un nouveau serveur de messagerie.


Fournissez le nom, le nom abrégé et le mode du serveur de messagerie. En mode Live, tous les e-mails sont acheminés et livrés normalement mais en mode développement, ils ne sont visibles que dans l'interface Web.


Une fois que vous avez ajouté le serveur de messagerie, vous devrez ajouter un nouveau domaine dans le serveur de messagerie. Cliquez sur Domaines et créez un nouveau nom de domaine.

Une fois que vous avez ajouté le nom de domaine, vous devrez configurer le DNS pour le domaine. Vous devrez ajouter deux enregistrements TXT pour SPF et DKIM. Vous devrez également ajouter un enregistrement CNAME et un enregistrement MX pour le chemin de retour et la livraison du courrier. Une fois que vous avez configuré le DNS, cliquez sur Vérifier que mes enregistrements sont corrects bouton pour vérifier la configuration DNS.

Vous devez maintenant créer des informations d'identification SMTP pour envoyer et recevoir des e-mails.

Choisissez le type SMTP ou API. Indiquez le nom des informations d'identification SMTP, choisissez comment vous souhaitez gérer l'adresse e-mail.

Une fois terminé, vous pouvez revenir à Aperçu et vous verrez les informations nécessaires pour envoyer ou recevoir l'adresse e-mail.

Conclusion

Dans ce didacticiel, nous avons configuré avec succès un serveur de messagerie complet à l'aide de Postal sur Ubuntu 17.04. Vous pouvez utiliser le serveur de messagerie pour envoyer et recevoir les e-mails de votre organisation.


Linux
  1. Comment installer SQL Server sur Windows 10

  2. Comment installer le serveur de messagerie postfix sur RHEL 8 / CentOS 8

  3. Comment installer DKIM sur le serveur Ubuntu

  4. Comment Ssh vers un serveur en utilisant un autre serveur ? ?

  5. Comment installer CVS et créer un référentiel CVS sur un serveur Linux

Comment installer le serveur FTP sur Ubuntu ?

Comment installer Nginx sur Ubuntu 14.04

Comment installer LEMP à l'aide de l'application One-Click d'Atlantic.Net

Comment installer LAMP à l'aide de l'installation en un clic d'Atlantic.Net

Comment configurer un serveur de messagerie complet avec Postfix, Dovecot et Roundcube sur Ubuntu 18.04

Comment créer un proxy HTTP à l'aide de Squid sur CentOS 8