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.