Si të krijoni një server të postës plotësisht të veçuar duke përdorur Postar


Postal është një server i plotë poste falas dhe me burim të hapur për dërgimin dhe marrjen e emaileve. Është shkruar në Ruby dhe JavaScript. Ju mund ta instaloni lehtësisht Postal në serverin tuaj. Gjithashtu ju ndihmon në sigurimin e informacionit të saktë DNS të kërkuar për të reduktuar emailet e padëshiruara. Posta përdoret nga shumë organizata për të dërguar dhe marrë postë në baza ditore.

Në këtë tutorial, ne do të instalojmë Serverin Postar Postar në Ubuntu 17.04.

Kusht paraprak

  • Serveri minimal Ubuntu 17.04. Rekomandohet 8 GB RAM.
  • Privilegjet e rrënjës. Ky udhëzues është shkruar si përdoruesi rrënjë, nëse jeni regjistruar si përdorues sudo, ekzekutoni sudo -i.
  • një emër domaini i drejtuar drejt serverit tuaj.

Përditëso sistemin bazë

Përpara se të instaloni ndonjë paketë, rekomandohet që të përditësoni paketat dhe depon duke përdorur komandën e mëposhtme.

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

Pasi sistemi juaj të përditësohet, vazhdoni më tej për të instaluar Ruby.

Instaloni Ruby

Posta është shkruar në Ruby, prandaj kërkohet të instaloni Ruby 2.3 ose më të ri në sistemin tuaj. Në këtë tutorial, ne do të instalojmë versionin më të fundit të Ruby duke përdorur RVM. Ekzekutoni komandën e mëposhtme për të shtuar çelësin GPG të RVM në serverin tuaj.

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

Tani instaloni RVM duke përdorur komandën e mëposhtme.

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

Për të përdorur menjëherë RVM, do t'ju duhet të ekzekutoni komandën e mëposhtme.

source /etc/profile.d/rvm.sh

Tani merrni listën e Ruby duke përdorur komandën e mëposhtme.

rvm list known

Do të shihni daljen e mëposhtme:

# 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

Tani instaloni versionin më të fundit të Ruby në listë duke përdorur komandën e mëposhtme.

rvm install 2.4

Përdorni versionin Ruby duke përdorur komandën e mëposhtme.

rvm use 2.4

Ju mund të verifikoni versionin e Ruby duke përdorur komandën e mëposhtme.

ruby -v

Ju duhet të shihni daljen e mëposhtme nëse Ruby është instaluar me sukses.

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

Instaloni Ruby Gems

Për të ekzekutuar Postel në serverin tuaj, do t'ju duhet të instaloni bundler dhe procodile në serverin tuaj. bundler është një menaxher varësie për aplikacionet e gurëve të çmuar Ruby. procodile është një mjet i menaxhimit të procesit për aplikacionet Ruby. Instaloni të dy aplikacionet duke përdorur komandat e mëposhtme.

gem install bundler
gem install procodile

Instaloni serverin e bazës së të dhënave MariaDB

MariaDB është një fork i serverit të bazës së të dhënave MySQL. MySQL është një softuer i sistemit të menaxhimit të bazës së të dhënave relacionale që përdoret për të ruajtur të dhënat në format tabelare. Për të instaluar MariaDB në serverin tuaj, ekzekutoni:

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

Ekzekutoni komandat e mëposhtme për të nisur MariaDB dhe aktivizoni atë të fillojë në kohën e nisjes.

systemctl start mariadb
systemctl enable mariadb

Tani ekzekutoni komandat e mëposhtme për të siguruar instalimin tuaj MariaDB.

mysql_secure_installation

Komanda e mësipërme do të ekzekutojë një skript për të siguruar instalimin e ri të MariaDB. Skripti do të kërkojë fjalëkalimin ekzistues të përdoruesit rrënjë, ne sapo kemi instaluar MariaDB, fjalëkalimi rrënjë nuk është vendosur, thjesht shtypni enter për të vazhduar më tej.

Skripti do t'ju pyesë nëse dëshironi të vendosni një fjalëkalim rrënjësor për instalimin tuaj të MariaDB, zgjidhni y dhe vendosni një fjalëkalim të fortë për instalimin. Shumica e pyetjeve janë vetë-shpjeguese dhe ju duhet t'i përgjigjeni po ose y të gjitha pyetjeve.

Konfiguro bazën e të dhënave për postë

Për të krijuar një bazë të dhënash për Postar, do të na duhet fillimisht të identifikohemi në linjën e komandës MySQL. Ekzekutoni komandën e mëposhtme për të njëjtën gjë.

mysql -u root -p

Komanda e mësipërme do të hyjë në guaskën MySQL të përdoruesit rrënjë, ajo do të kërkojë fjalëkalimin e përdoruesit rrënjë. Jepni fjalëkalimin për t'u identifikuar. Tani drejtoni pyetjen e mëposhtme për të krijuar një bazë të dhënash të re për instalimin tuaj Postar.

CREATE DATABASE postal CHARSET utf8mb4 COLLATE utf8mb4_unicode_ci;

Pyetja e mësipërme do të krijojë një bazë të dhënash të re me emrin postal. Sigurohuni që të përdorni pikëpresje në fund të çdo pyetjeje pasi pyetja përfundon gjithmonë me pikëpresje.

Tani jepni të gjitha privilegjet për përdoruesit e bazës së të dhënave mbi bazën e të dhënave që keni krijuar. Ekzekutoni komandën e mëposhtme.

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

Zëvendësoni StrongPassword me një fjalëkalim shumë të fortë dhe të sigurt.

Baza e të dhënave do të shkruhet automatikisht nga Postal, por për këtë, ne do të duhet të ofrojmë lejet e duhura për përdoruesit e Postës. Ekzekutoni komandën e mëposhtme për t'u dhënë privilegj të gjithë përdoruesve që fillojnë me postal-.

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

Tani ekzekutoni komandën e mëposhtme për të aplikuar menjëherë ndryshimet në privilegjet e bazës së të dhënave.

FLUSH PRIVILEGES;

Dilni nga prompt MySQL duke përdorur komandën e mëposhtme.

EXIT;

Instaloni RabbitMQ

RabbitMQ është shkruar në gjuhën Erlang, në këtë tutorial ne do të instalojmë versionin më të fundit të Erlang në server. Instaloni Erlang duke përdorur komandën e mëposhtme.

apt -y install erlang

Importoni çelësin GPG duke ekzekutuar:

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

Tani shtoni depon e RabbitMQ duke ekzekutuar komandën e mëposhtme:

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

Përditësoni indeksin e depove duke ekzekutuar komandën e mëposhtme.

apt update

Tani mund të instaloni RabbitMQ duke ekzekutuar komandën e mëposhtme.

apt -y install rabbitmq-server

RabbitMQ tani është instaluar në sistemin tuaj.

Konfiguro RabbitMQ

Ju mund të filloni procesin e serverit RabbitMQ duke ekzekutuar komandën e mëposhtme.

systemctl start rabbitmq-server

Për të nisur automatikisht RabbitMQ në kohën e nisjes, ekzekutoni komandën e mëposhtme.

systemctl enable rabbitmq-server

Tani ekzekutoni komandën e mëposhtme për të krijuar një host virtual për Postal në serverin RabbitMQ.

rabbitmqctl add_vhost /postal

Tani shtoni një përdorues RabbitMQ për Postal duke ekzekutuar komandën e mëposhtme.

rabbitmqctl add_user postal StrongPassword

Replace StrongPassword është një fjalëkalim shumë i fortë.

Tani vendosni lejen e duhur për hostin virtual të RabbitMQ për përdoruesin e RabbitMQ.

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

Instaloni Git dhe Node.js

Git do të përdoret për të tërhequr paketën e instaluesit dhe disa varësi. Ekzekutoni komandën e mëposhtme për të instaluar Git në sistemin tuaj.

apt -y install git

Mund të kontrolloni nëse Git është instaluar me sukses duke kontrolluar versionin duke përdorur komandën e mëposhtme.

git --version

Ju duhet të merrni rezultatin e mëposhtëm.

:~# git --version
git version 2.11.0

Node.js do të përdoret për të përpiluar bibliotekën JavaScript. Instaloni softuerin duke përdorur komandën e mëposhtme.

apt -y install nodejs

Mund të kontrolloni nëse Node.js është instaluar me sukses duke ekzekutuar komandën e mëposhtme.

nodejs -v

Ju duhet të merrni rezultatin e mëposhtëm.

:~# nodejs -v
v4.7.2

Tani që i kemi gati të gjitha varësitë, mund të instaloni Postarin.

Instaloni Postar

Posta duhet të funksionojë si përdorues i vet i izoluar. Ekzekutoni komandën e mëposhtme për të krijuar një përdorues të ri.

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

Komanda e mësipërme do të krijojë një përdorues të ri me emrin e përdoruesit postal dhe direktoria kryesore vendoset në /opt/postal.

Lejo Ruby të dëgjojë portet e privilegjuara duke ekzekutuar komandën e mëposhtme.

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

Tani që gjithçka është gati, shkarkoni arkivin më të fundit Postar dhe nxirrni arkivin si përdorues Postar duke përdorur komandën e mëposhtme.

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

Tani krijoni një lidhje simbolike me skedarin binar Postar duke ekzekutuar komandën e mëposhtme.

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

Tani mund të ndërveproni me serverin tuaj Postar nga çdo drejtori. Për ekzekutimin e komandave të ardhshme, do t'ju duhet të identifikoheni në shell si përdorues postar.

su - postal

Tani do t'ju duhet të instaloni të gjitha varësitë rubin që kërkohen për të ekzekutuar aplikacionin.

postal bundle /opt/postal/vendor/bundle

Pasi të jenë instaluar varësitë, do t'ju duhet të gjeneroni skedarët e konfigurimit të paracaktuar.

postal initialize-config

Komanda e mësipërme do të gjenerojë konfigurimin e kërkuar për instalimin tuaj Postar, duke përfshirë çelësa dhe certifikata të ndryshme. Kjo do të gjenerojë gjithashtu skedarin e paracaktuar të konfigurimit postal.yml. Ju duhet të merrni rezultatin e mëposhtëm.

:~$ 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

Tani do t'ju duhet të konfiguroni disa opsione në konfigurimin postal.yml.

nano /opt/postal/config/postal.yml

Gjeni rreshtin e mëposhtëm:

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

Ndryshoni emrin e hostit në emrin tuaj aktual të domenit. Më tej, gjeni rreshtat e mëposhtëm.

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

Ndryshoni emrin e përdoruesit, fjalëkalimin dhe emrin e bazës së të dhënave sipas bazës së të dhënave që keni krijuar. Më tej, gjeni këto rreshta:

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

Ndryshoni konfigurimin e mësipërm sipas vhost-it dhe përdoruesit të krijuar për RabbitMQ. Më pas, gjeni konfigurimet 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

Ndryshoni domenet e mësipërme me domenet aktuale që dëshironi të përdorni me serverin e postës.

Ruani skedarin dhe dilni nga redaktori. Tani, inicializoni bazën e të dhënave dhe asetet e tjera duke ekzekutuar:

postal initialize

Krijoni përdoruesin e Administratorit Postar duke ekzekutuar komandën e mëposhtme.

postal make-user

Komanda e mësipërme do t'ju kërkojë adresën e emailit, emrin e përdoruesit dhe fjalëkalimin. Komanda e mësipërme do të gjenerojë daljen e mëposhtme.

:~$ 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      : 
First Name          : Liptan
Last Name           : Biswas
Initial Password:   : **************

User has been created with e-mail address 

Konfigurimi i linjës së komandës së Postal tani ka përfunduar, ju mund të filloni serverin duke përdorur komandën e mëposhtme.

postal start

Për të kontrolluar nëse shërbimet janë nisur siç duhet, ekzekutoni komandën e mëposhtme.

postal status

Ju duhet të merrni rezultatin e mëposhtëm.

:~$ 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:-

Për të ndaluar Postën, gjithmonë mund të ekzekutoni komandën e mëposhtme.

postal stop

Konfigurimi i Nginx si përfaqësues i kundërt

Për arsye sigurie, ndërfaqja e uebit Postar dhe API duhet të jenë pas çdo serveri në internet të prodhimit si Apache ose Nginx. Në këtë tutorial, ne do të instalojmë dhe konfigurojmë Nginx si një përfaqësues të kundërt.

Instaloni serverin në internet Nginx duke ekzekutuar komandën e mëposhtme.

apt -y install nginx

Rekomandohet të përdorni SSL për të hyrë në Nginx. Mund të përdorni ose një certifikatë të vetë-nënshkruar ose Let's Encrypt certifikatë SSL falas ose një certifikatë komerciale. Në këtë tutorial, ne do të përdorim Let's Encrypt SSL falas.

Instaloni klientin Let's Encrypt i njohur gjithashtu si certbot duke ekzekutuar komandën e mëposhtme.

apt -y install certbot

Pasi të përfundojë instalimi, ekzekutoni komandën e mëposhtme për të marrë certifikata nga autoriteti i certifikatës Let's Encrypt. Sigurohuni që emri i domenit të jetë i drejtuar drejt serverit tuaj pasi certbot do të kontrollojë autoritetin e domenit përpara se të sigurojë certifikatat. Zëvendësoni mail.example.com me emrin tuaj aktual të domenit.

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

Pasi të krijohen certifikatat, ato do të ruhen në /etc/letsencrypt/live/mail.example.com.

Let's Encrypt SSL skadon në 90 ditë, kështu që rekomandohet të vendosni një rinovim automatik për certifikatat tuaja. Drejtoni komandën e mëposhtme për të hapur skedarin tuaj crontab.

crontab -e

Futni rreshtin e mëposhtëm në skedarin crontab.

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

Puna e mësipërme e cron do të funksionojë automatikisht çdo të hënë në orën 1:30 të mëngjesit dhe nëse certifikatat tuaja duhet të skadojnë, ajo do t'i rinovojë ato automatikisht.

Tani krijoni një bllok të ri serveri për faqen tuaj të internetit duke ekzekutuar komandën e mëposhtme.

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

Plotësoni skedarin me përmbajtjen e mëposhtme.

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

Ruani skedarin dhe dilni nga redaktori. Tani rinisni serverin në internet nginx duke ekzekutuar.

systemctl restart nginx

Për të mundësuar që nginx të fillojë automatikisht në kohën e nisjes, ekzekutoni komandën e mëposhtme.

systemctl enable nginx

Tani mund të hyni në Postar duke shfletuar faqen e mëposhtme të internetit përmes shfletuesit tuaj të preferuar të internetit.

https://mail.example.com

Po konfiguron Postën

Pasi të shfletoni faqen e mësipërme, do të shihni ndërfaqen e mëposhtme.


Futni adresën e emailit dhe fjalëkalimin e përdoruesit që keni krijuar më parë. Pasi të jeni regjistruar, do t'ju kërkohet të krijoni një organizatë të re.

Jepni emrin e organizatës. Ju mund të zgjidhni të përdorni emrin e shkurtër të gjeneruar automatikisht, ose mund ta specifikoni vetë një. Emrat e shkurtër përdoren si emër përdoruesi gjatë vërtetimit me serverin SMTP. Ai duhet të përmbajë vetëm shkronja, numra dhe vizë.


Pasi të krijohet organizata, do t'ju kërkohet të krijoni një server të ri postar.


Jepni emrin, emrin e shkurtër dhe mënyrën e serverit të postës elektronike. Në modalitetin Live, të gjitha emailet drejtohen dhe dorëzohen normalisht, por në modalitetin e zhvillimit, ato janë të dukshme vetëm në ndërfaqen e uebit.


Pasi të keni shtuar serverin e postës, do t'ju duhet të shtoni një domen të ri në serverin e postës. Klikoni në skedën Domains dhe krijoni një emër të ri domeni.

Pasi të keni shtuar emrin e domenit, do t'ju duhet të konfiguroni DNS për domenin. Ju do të duhet të shtoni dy regjistrime TXT për SPF dhe DKIM. Do t'ju duhet gjithashtu të shtoni një rekord CNAME dhe rekord MX për rrugën e kthimit dhe dërgimin e postës. Pasi të keni konfiguruar DNS, klikoni në butonin Kontrollo të dhënat e mia janë të sakta për të verifikuar konfigurimin e DNS.

Tani do t'ju duhet të krijoni një kredenciale SMTP për dërgimin dhe marrjen e emaileve.

Zgjidhni llojin si SMTP ose API. Jepni emrin për kredencialet SMTP, zgjidhni se si dëshironi të trajtoni adresën e emailit.

Pasi të keni mbaruar, mund të ktheheni te skeda Përmbledhje dhe do të shihni informacionin e nevojshëm për të dërguar ose marrë adresën e emailit.

konkluzioni

Në këtë tutorial, ne kemi konfiguruar me sukses një server të plotë postar të paraqitur duke përdorur Postal në Ubuntu 17.04. Ju mund të përdorni serverin e postës për të dërguar dhe marrë emailet e organizatës suaj.