GNU/Linux >> Linux Esercitazione >  >> Linux

Come creare un server di posta completo utilizzando Postal

Postal è un server di posta completo gratuito e open source per l'invio e la ricezione di e-mail. È scritto in Ruby e JavaScript. Puoi installare facilmente Postal sul tuo server. Ti aiuta anche a fornire le informazioni DNS corrette necessarie per ridurre le e-mail di spam. Il servizio postale viene utilizzato da molte organizzazioni per inviare e ricevere posta su base giornaliera.

In questo tutorial, installeremo Postal Mail Server su Ubuntu 17.04.

Prerequisito

  • Server Ubuntu 17.04 minimo. Consigliati 8 GB di RAM.
  • Privilegi di root. Questa guida è scritta come utente root, se hai effettuato l'accesso come utente sudo, esegui sudo -i.
  • un nome di dominio puntato verso il tuo server.

Aggiorna sistema di base

Prima di installare qualsiasi pacchetto si consiglia di aggiornare i pacchetti e il repository utilizzando il comando seguente.

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

Una volta aggiornato il tuo sistema, procedi ulteriormente con l'installazione di Ruby.

Installa Ruby

Postal è scritto in Ruby, quindi è necessario installare Ruby 2.3 o versioni successive sul tuo sistema. In questo tutorial, installeremo l'ultima versione di Ruby usando RVM. Esegui il comando seguente per aggiungere la chiave GPG di RVM sul tuo server.

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

Ora installa RVM usando il seguente comando.

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

Per utilizzare RVM immediatamente, dovrai eseguire il comando seguente.

source /etc/profile.d/rvm.sh

Ora prendi l'elenco di Ruby usando il seguente comando.

rvm list known

Vedrai il seguente output:

# 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

Ora installa l'ultima versione di Ruby nell'elenco usando il seguente comando.

rvm install 2.4

Usa la versione Ruby usando il seguente comando.

rvm use 2.4

Puoi verificare la versione di Ruby usando il seguente comando.

ruby -v

Dovresti vedere il seguente output se Ruby è stato installato correttamente.

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

Installa Ruby Gems

Per eseguire Postel sul tuo server, dovrai installare bundler e procodile sul tuo server. bundler è un gestore delle dipendenze per le applicazioni gem di Ruby. procodile è uno strumento di gestione dei processi per le applicazioni Ruby. Installa entrambe le applicazioni utilizzando i seguenti comandi.

gem install bundler
gem install procodile

Installa il server database MariaDB

MariaDB è un fork del server di database MySQL. MySQL è un software di sistema di gestione di database relazionali utilizzato per archiviare i dati in formato tabellare. Per installare MariaDB sul tuo server, esegui:

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

Esegui i seguenti comandi per avviare MariaDB e consentirne l'avvio all'avvio.

systemctl start mariadb
systemctl enable mariadb

Ora esegui i seguenti comandi per proteggere la tua installazione di MariaDB.

mysql_secure_installation

Il comando precedente eseguirà uno script per proteggere la nuova installazione di MariaDB. Lo script chiederà la password dell'utente root esistente, abbiamo appena installato MariaDB, la password di root non è impostata, basta premere invio per procedere oltre.

Lo script ti chiederà se desideri impostare una password di root per l'installazione di MariaDB, scegli y e imposta una password complessa per l'installazione. La maggior parte delle domande è autoesplicativa e dovresti rispondere sì o y a tutte le domande.

Impostazione database per posta

Per creare un database per Postal, dovremo prima accedere alla riga di comando di MySQL. Esegui il seguente comando per lo stesso.

mysql -u root -p

Il comando precedente accederà alla shell MySQL dell'utente root, richiederà la password dell'utente root. Fornisci la password per accedere. Ora esegui la seguente query per creare un nuovo database per la tua installazione di Postal.

CREATE DATABASE postal CHARSET utf8mb4 COLLATE utf8mb4_unicode_ci;

La query precedente creerà un nuovo database denominato postale. Assicurati di utilizzare il punto e virgola alla fine di ogni query poiché la query termina sempre con un punto e virgola.

Ora fornisci tutti i privilegi all'utente del tuo database sul database che hai creato. Esegui il comando seguente.

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

Sostituisci StrongPassword con una password molto forte e sicura.

Il database verrà scritto automaticamente da Postal, ma per questo dovremo fornire le autorizzazioni appropriate agli utenti di Postal. Esegui il comando seguente per fornire privilegi a tutti gli utenti che iniziano con postale-.

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

Ora esegui il comando seguente per applicare immediatamente le modifiche ai privilegi del database.

FLUSH PRIVILEGES;

Esci dal prompt di MySQL usando il seguente comando.

EXIT;

Installa RabbitMQ

RabbitMQ è scritto in lingua Erlang, in questo tutorial installeremo l'ultima versione di Erlang nel server. Installa Erlang usando il seguente comando.

apt -y install erlang

Importa la chiave GPG eseguendo:

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

Ora aggiungi il repository RabbitMQ eseguendo il seguente comando:

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

Aggiorna l'indice del repository eseguendo il comando seguente.

apt update

Ora puoi installare RabbitMQ eseguendo il seguente comando.

apt -y install rabbitmq-server

RabbitMQ è ora installato sul tuo sistema.

Imposta RabbitMQ

Puoi avviare il processo del server RabbitMQ eseguendo il comando seguente.

systemctl start rabbitmq-server

Per avviare automaticamente RabbitMQ all'avvio, esegui il comando seguente.

systemctl enable rabbitmq-server

Ora esegui il comando seguente per creare un host virtuale per Postal nel server RabbitMQ.

rabbitmqctl add_vhost /postal

Ora aggiungi un utente RabbitMQ per Postal eseguendo il comando seguente.

rabbitmqctl add_user postal StrongPassword

Sostituisci StrongPassword è una password molto forte.

Ora imposta l'autorizzazione appropriata sull'host virtuale RabbitMQ sull'utente RabbitMQ.

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

Installa Git e Node.js

Git verrà utilizzato per recuperare il pacchetto di installazione e alcune dipendenze. Esegui il comando seguente per installare Git sul tuo sistema.

apt -y install git

Puoi verificare se Git è stato installato correttamente controllando la versione usando il comando seguente.

git --version

Dovresti ottenere il seguente output.

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

Node.js verrà utilizzato per compilare la libreria JavaScript. Installa il software utilizzando il comando seguente.

apt -y install nodejs

Puoi verificare se Node.js è stato installato correttamente eseguendo il comando seguente.

nodejs -v

Dovresti ottenere il seguente output.

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

Ora che abbiamo tutte le dipendenze pronte, puoi installare il Postal.

Installa Postal

Postal dovrebbe essere eseguito come utente isolato. Esegui il comando seguente per creare un nuovo utente.

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

Il comando precedente creerà un nuovo utente con nome utente postale e la directory home sarà impostata su /opt/postal.

Consenti a Ruby di ascoltare le porte privilegiate eseguendo il comando seguente.

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

Ora che tutto è pronto, scarica l'ultimo archivio Postale ed estrai l'archivio come Utente Postale utilizzando il seguente comando.

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

Ora crea un collegamento simbolico al file binario di Postal eseguendo il comando seguente.

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

Ora puoi interagire con il tuo server postale da qualsiasi directory. Per eseguire i prossimi comandi dovrai accedere alla shell come utente postale.

su - postal

Ora dovrai installare tutte le dipendenze Ruby necessarie per eseguire l'applicazione.

postal bundle /opt/postal/vendor/bundle

Una volta installate le dipendenze, dovrai generare i file di configurazione predefiniti.

postal initialize-config

Il comando precedente genererà la configurazione richiesta per l'installazione di Postal, comprese varie chiavi e certificati. Questo genererà anche il file di configurazione postal.yml predefinito. Dovresti ottenere il seguente output.

[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

Ora dovrai configurare alcune opzioni nella configurazione di postal.yml.

nano /opt/postal/config/postal.yml

Trova la seguente riga:

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

Cambia il nome host con il tuo nome di dominio effettivo. Inoltre, trova le seguenti righe.

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

Modifica il nome utente, la password e il nome del database in base al database che hai creato. Inoltre, trova queste righe:

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

Modifica la configurazione sopra in base al vhost e all'utente creati per RabbitMQ. Quindi, trova le configurazioni 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

Cambia i domini sopra con i domini effettivi che desideri utilizzare con il server di posta.

Salva il file ed esci dall'editor. Ora, inizializza il database e altre risorse eseguendo:

postal initialize

Crea l'utente amministratore postale eseguendo il comando seguente.

postal make-user

Il comando sopra ti chiederà l'indirizzo email, il nome utente e la password. Il comando precedente genererà il seguente output.

[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 configurazione della riga di comando di Postal è ora terminata, puoi avviare il server utilizzando il seguente comando.

postal start

Per verificare se i servizi sono stati avviati correttamente, eseguire il comando seguente.

postal status

Dovresti ottenere il seguente output.

[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:-

Per interrompere Postal, puoi sempre eseguire il seguente comando.

postal stop

Configurazione di Nginx come proxy inverso

Per motivi di sicurezza, l'interfaccia Web e l'API di Postal dovrebbero essere dietro qualsiasi server Web di produzione come Apache o Nginx. In questo tutorial installeremo e configureremo Nginx come proxy inverso.

Installa il server web Nginx eseguendo il comando seguente.

apt -y install nginx

Si consiglia di utilizzare SSL per accedere a Nginx. Puoi utilizzare un certificato autofirmato o un certificato SSL gratuito Let's Encrypt o un certificato commerciale. In questo tutorial, utilizzeremo Let's Encrypt SSL gratuito.

Installa il client Let's Encrypt noto anche come certbot eseguendo il comando seguente.

apt -y install certbot

Al termine dell'installazione, eseguire il comando seguente per ottenere i certificati dall'autorità di certificazione Let's Encrypt. Assicurati che il nome di dominio sia puntato verso il tuo server poiché certbot verificherà l'autorità di dominio prima di fornire i certificati. Sostituisci mail.example.com con il tuo nome di dominio effettivo.

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

Una volta generati, i certificati verranno archiviati in /etc/letsencrypt/live/mail.example.com.

Let's Encrypt SSL scade tra 90 giorni, quindi ti consigliamo di impostare un rinnovo automatico per i tuoi certificati. Esegui il comando seguente per aprire il file crontab.

crontab -e

Inserisci la seguente riga nel file crontab.

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

Il processo cron di cui sopra verrà eseguito automaticamente ogni lunedì all'01:30 e se i certificati stanno per scadere, li rinnoverà automaticamente.

Ora crea un nuovo blocco server per il tuo sito web eseguendo il comando seguente.

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

Popolare il file con il seguente contenuto.

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;
    }
}

Salva il file ed esci dall'editor. Ora riavvia il server web nginx eseguendo.

systemctl restart nginx

Per consentire a nginx di avviarsi automaticamente all'avvio, esegui il comando seguente.

systemctl enable nginx

Ora puoi accedere a Postal su navigando nel seguente sito web tramite il tuo browser web preferito.

https://mail.example.com

Configurazione postale

Dopo aver navigato nel sito sopra, vedrai la seguente interfaccia.


Inserisci l'indirizzo email e la password dell'utente che hai creato in precedenza. Una volta effettuato l'accesso, ti verrà chiesto di creare una nuova organizzazione.

Fornire il nome dell'organizzazione. Puoi scegliere di utilizzare il nome breve generato automaticamente oppure puoi specificarne uno tu stesso. I nomi brevi vengono utilizzati come nome utente durante l'autenticazione con il server SMTP. Dovrebbe contenere solo lettere, numeri e trattino.


Una volta creata l'organizzazione, ti verrà chiesto di creare un nuovo server di posta.


Fornire il nome, il nome breve e la modalità del server di posta elettronica. In modalità Live, tutte le email vengono instradate e consegnate normalmente, ma in modalità sviluppo sono visibili solo nell'interfaccia web.


Una volta aggiunto il server di posta, dovrai aggiungere un nuovo dominio nel server di posta. Fai clic su Domini scheda e crea un nuovo nome di dominio.

Dopo aver aggiunto il nome di dominio, dovrai configurare il DNS per il dominio. Dovrai aggiungere due record TXT per SPF e DKIM. Dovrai anche aggiungere un record CNAME e un record MX per il percorso di ritorno e la consegna della posta. Dopo aver configurato il DNS, fai clic su Verifica che i miei record siano corretti pulsante per verificare la configurazione DNS.

Ora dovrai creare le credenziali SMTP per l'invio e la ricezione di email.

Scegli il tipo come SMTP o API. Fornisci il nome per le credenziali SMTP, scegli come desideri gestire l'indirizzo email.

Una volta terminato, puoi tornare a Panoramica scheda e vedrai le informazioni necessarie per inviare o ricevere l'indirizzo email.

Conclusione

In questo tutorial, abbiamo configurato con successo un server di posta completo utilizzando Postal su Ubuntu 17.04. Puoi utilizzare il server di posta per inviare e ricevere le email della tua organizzazione.


Linux
  1. Come installare SQL Server su Windows 10

  2. Come installare il server di posta Postfix su RHEL 8 / CentOS 8

  3. Come installare DKIM sul server Ubuntu

  4. Come eseguire Ssh su un server utilizzando un altro server??

  5. Come installare CVS e creare un repository CVS su server Linux

Come installare il server FTP su Ubuntu?

Come installare Nginx su Ubuntu 14.04

Come installare LEMP utilizzando l'applicazione One-Click di Atlantic.Net

Come installare LAMP utilizzando l'installazione con un clic di Atlantic.Net

Come configurare un server di posta completo con Postfix, Dovecot e Roundcube su Ubuntu 18.04

Come creare un proxy HTTP utilizzando Squid su CentOS 8