GNU/Linux >> Znalost Linux >  >> Linux

Jak vytvořit plně vybavený poštovní server pomocí pošty

Postal je bezplatný a otevřený zdrojový kompletní poštovní server pro odesílání a přijímání e-mailů. Je napsán v Ruby a JavaScriptu. Poštu si můžete snadno nainstalovat na svůj vlastní server. Pomáhá vám také při poskytování správných informací DNS potřebných k omezení spamových e-mailů. Poštu používá mnoho organizací k každodennímu odesílání a přijímání pošty.

V tomto tutoriálu nainstalujeme poštovní poštovní server na Ubuntu 17.04.

Předpoklad

  • Minimální server Ubuntu 17.04. Doporučeno 8 GB RAM.
  • Oprávnění uživatele root. Tato příručka je napsána jako uživatel root, pokud jste přihlášeni jako uživatel sudo, spusťte sudo -i.
  • název domény směřující k vašemu serveru.

Aktualizovat základní systém

Před instalací jakéhokoli balíčku se doporučuje aktualizovat balíčky a úložiště pomocí následujícího příkazu.

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

Jakmile je váš systém aktualizován, pokračujte v instalaci Ruby.

Instalovat Ruby

Poštovní je napsán v Ruby, proto je nutné nainstalovat do systému Ruby 2.3 nebo vyšší. V tomto tutoriálu nainstalujeme nejnovější verzi Ruby pomocí RVM. Spusťte následující příkaz a přidejte klíč GPG RVM na svůj server.

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

Nyní nainstalujte RVM pomocí následujícího příkazu.

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

Chcete-li okamžitě použít RVM, budete muset spustit následující příkaz.

source /etc/profile.d/rvm.sh

Nyní načtěte seznam Ruby pomocí následujícího příkazu.

rvm list known

Uvidíte následující výstup:

# 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

Nyní nainstalujte nejnovější verzi Ruby ze seznamu pomocí následujícího příkazu.

rvm install 2.4

Použijte verzi Ruby pomocí následujícího příkazu.

rvm use 2.4

Verzi Ruby můžete ověřit pomocí následujícího příkazu.

ruby -v

Pokud je Ruby úspěšně nainstalována, měli byste vidět následující výstup.

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

Nainstalovat Ruby Gems

Chcete-li spustit Postel na svém serveru, budete muset na svůj server nainstalovat bundler a procodile. bundler je správce závislostí pro aplikace Ruby gem. procodile je nástroj pro řízení procesů pro aplikace Ruby. Nainstalujte obě aplikace pomocí následujících příkazů.

gem install bundler
gem install procodile

Instalovat databázový server MariaDB

MariaDB je fork databázového serveru MySQL. MySQL je software pro správu relačních databází používaný k ukládání dat v tabulkovém formátu. Chcete-li nainstalovat MariaDB na váš server, spusťte:

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

Spuštěním následujících příkazů spusťte MariaDB a povolte její spuštění při spouštění.

systemctl start mariadb
systemctl enable mariadb

Nyní spusťte následující příkazy k zabezpečení instalace MariaDB.

mysql_secure_installation

Výše uvedený příkaz spustí skript pro zabezpečení nové instalace MariaDB. Skript se zeptá na stávající heslo uživatele root, právě jsme nainstalovali MariaDB, heslo root není nastaveno, stačí stisknout enter a pokračovat dále.

Skript se vás zeptá, zda chcete nastavit heslo uživatele root pro vaši instalaci MariaDB, zvolte y a nastavte silné heslo pro instalaci. Většina otázek je samovysvětlujících a na všechny otázky byste měli odpovědět ano nebo y.

Nastavení databáze pro poštovní službu

Pro vytvoření databáze pro Postal se budeme muset nejprve přihlásit do příkazového řádku MySQL. Pro totéž spusťte následující příkaz.

mysql -u root -p

Výše uvedený příkaz se přihlásí do prostředí MySQL uživatele root a vyzve uživatele root k zadání hesla. Zadejte heslo pro přihlášení. Nyní spusťte následující dotaz k vytvoření nové databáze pro vaši poštovní instalaci.

CREATE DATABASE postal CHARSET utf8mb4 COLLATE utf8mb4_unicode_ci;

Výše uvedený dotaz vytvoří novou databázi s názvem poštovní. Ujistěte se, že na konci každého dotazu používáte středník, protože dotaz vždy končí středníkem.

Nyní poskytněte uživateli vaší databáze všechna oprávnění k databázi, kterou jste vytvořili. Spusťte následující příkaz.

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

Nahraďte StrongPassword velmi silným a bezpečným heslem.

Databáze bude automaticky zapsána poštou, ale k tomu budeme muset uživatelům poštovních služeb poskytnout příslušná oprávnění. Spuštěním následujícího příkazu poskytnete oprávnění všem uživatelům, kteří začínají na postal-.

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

Nyní spusťte následující příkaz, abyste okamžitě použili změny oprávnění k databázi.

FLUSH PRIVILEGES;

Ukončete výzvu MySQL pomocí následujícího příkazu.

EXIT;

Instalovat RabbitMQ

RabbitMQ je napsán v jazyce Erlang, v tomto tutoriálu nainstalujeme nejnovější verzi Erlang na server. Nainstalujte Erlang pomocí následujícího příkazu.

apt -y install erlang

Importujte klíč GPG spuštěním:

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

Nyní přidejte úložiště RabbitMQ spuštěním následujícího příkazu:

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

Aktualizujte index úložiště spuštěním následujícího příkazu.

apt update

Nyní můžete nainstalovat RabbitMQ spuštěním následujícího příkazu.

apt -y install rabbitmq-server

RabbitMQ je nyní nainstalován ve vašem systému.

Nastavení RabbitMQ

Proces serveru RabbitMQ můžete spustit spuštěním následujícího příkazu.

systemctl start rabbitmq-server

Chcete-li automaticky spustit RabbitMQ při spouštění, spusťte následující příkaz.

systemctl enable rabbitmq-server

Nyní spusťte následující příkaz k vytvoření virtuálního hostitele pro poštovní na serveru RabbitMQ.

rabbitmqctl add_vhost /postal

Nyní přidejte uživatele RabbitMQ pro Postal spuštěním následujícího příkazu.

rabbitmqctl add_user postal StrongPassword

Replace StrongPassword je velmi silné heslo.

Nyní nastavte příslušné oprávnění na virtuálním hostiteli RabbitMQ uživateli RabbitMQ.

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

Instalovat Git a Node.js

K načtení instalačního balíčku a několika závislostí bude použit Git. Spusťte následující příkaz a nainstalujte Git do svého systému.

apt -y install git

Zda je Git úspěšně nainstalován, můžete zkontrolovat pomocí následujícího příkazu.

git --version

Měli byste dostat následující výstup.

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

Node.js bude použit ke kompilaci JavaScriptové knihovny. Nainstalujte software pomocí následujícího příkazu.

apt -y install nodejs

Můžete zkontrolovat, zda je Node.js úspěšně nainstalován, spuštěním následujícího příkazu.

nodejs -v

Měli byste dostat následující výstup.

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

Nyní, když máme připraveny všechny závislosti, můžete nainstalovat Postal.

Instalovat poštovní

Pošta by měla běžet jako vlastní izolovaný uživatel. Spuštěním následujícího příkazu vytvořte nového uživatele.

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

Výše uvedený příkaz vytvoří nového uživatele s uživatelským jménem postal a domovský adresář je nastaven na /opt/postal.

Umožněte Ruby naslouchat privilegovaným portům spuštěním následujícího příkazu.

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

Nyní, když je vše připraveno, stáhněte si nejnovější poštovní archiv a pomocí následujícího příkazu jej rozbalte jako uživatel poštovního serveru.

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

Nyní vytvořte symbolický odkaz na binární soubor Postal spuštěním následujícího příkazu.

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

Nyní můžete komunikovat se svým poštovním serverem z libovolného adresáře. Pro spuštění dalších příkazů se budete muset přihlásit do shellu jako poštovní uživatel.

su - postal

Nyní budete muset nainstalovat všechny rubínové závislosti potřebné ke spuštění aplikace.

postal bundle /opt/postal/vendor/bundle

Po instalaci závislostí budete muset vygenerovat výchozí konfigurační soubory.

postal initialize-config

Výše uvedený příkaz vygeneruje požadovanou konfiguraci pro vaši poštovní instalaci včetně různých klíčů a certifikátů. Tím se také vygeneruje výchozí konfigurační soubor postal.yml. Měli byste dostat následující výstup.

[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

Nyní budete muset nakonfigurovat několik možností v konfiguraci postal.yml.

nano /opt/postal/config/postal.yml

Najděte následující řádek:

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

Změňte název hostitele na svůj skutečný název domény. Dále najděte následující řádky.

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

Změňte uživatelské jméno, heslo a název databáze podle vámi vytvořené databáze. Dále najděte tyto řádky:

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

Změňte výše uvedenou konfiguraci podle vhost a uživatele vytvořeného pro RabbitMQ. Dále vyhledejte konfigurace 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

Změňte výše uvedené domény za skutečné domény, které chcete používat s poštovním serverem.

Uložte soubor a ukončete editor. Nyní inicializujte databázi a další prostředky spuštěním:

postal initialize

Vytvořte uživatele poštovního správce spuštěním následujícího příkazu.

postal make-user

Výše uvedený příkaz vás požádá o e-mailovou adresu, uživatelské jméno a heslo. Výše uvedený příkaz vygeneruje následující výstup.

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

Nastavení příkazového řádku Postal je nyní dokončeno, můžete spustit server pomocí následujícího příkazu.

postal start

Chcete-li zkontrolovat, zda jsou služby spuštěny správně, spusťte následující příkaz.

postal status

Měli byste dostat následující výstup.

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

Chcete-li zastavit Postal, můžete vždy spustit následující příkaz.

postal stop

Konfigurace Nginx jako reverzního proxy

Z bezpečnostních důvodů by poštovní webové rozhraní a API měly být za jakýmkoli produkčním webovým serverem, jako je Apache nebo Nginx. V tomto tutoriálu nainstalujeme a nakonfigurujeme Nginx jako reverzní proxy.

Nainstalujte webový server Nginx spuštěním následujícího příkazu.

apt -y install nginx

Pro přístup k Nginx se doporučuje používat SSL. Můžete použít certifikát s vlastním podpisem nebo bezplatný certifikát SSL Let’s Encrypt nebo komerční certifikát. V tomto tutoriálu použijeme bezplatné SSL Let’s Encrypt.

Nainstalujte klienta Let’s Encrypt také známého jako certbot spuštěním následujícího příkazu.

apt -y install certbot

Po dokončení instalace spusťte následující příkaz a získejte certifikáty od certifikační autority Let’s Encrypt. Ujistěte se, že název domény směřuje k vašemu serveru, protože certbot před poskytnutím certifikátů zkontroluje autoritu domény. Nahraďte mail.example.com svým skutečným názvem domény.

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

Jakmile budou certifikáty vygenerovány, budou uloženy v /etc/letsencrypt/live/mail.example.com.

Let’s Encrypt SSL vyprší za 90 dní, proto doporučujeme nastavit automatické obnovování certifikátů. Spuštěním následujícího příkazu otevřete soubor crontab.

crontab -e

Zadejte následující řádek do souboru crontab.

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

Výše uvedená úloha cron se automaticky spustí každé pondělí v 1:30 a pokud vyprší platnost vašich certifikátů, automaticky je obnoví.

Nyní vytvořte nový blok serveru pro svůj web spuštěním následujícího příkazu.

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

Naplňte soubor následujícím obsahem.

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

Uložte soubor a ukončete editor. Nyní restartujte webový server nginx spuštěním.

systemctl restart nginx

Chcete-li povolit automatické spouštění nginx při spouštění, spusťte následující příkaz.

systemctl enable nginx

Nyní můžete přistupovat ke službě Postal na procházením následující webové stránky prostřednictvím svého oblíbeného webového prohlížeče.

https://mail.example.com

Konfigurace pošty

Jakmile projdete výše uvedenou stránku, uvidíte následující rozhraní.


Zadejte e-mailovou adresu a heslo uživatele, které jste vytvořili dříve. Jakmile se přihlásíte, budete požádáni o vytvoření nové organizace.

Uveďte název organizace. Můžete si vybrat, zda použijete automaticky generovaný krátký název, nebo jej můžete zadat sami. Krátké názvy se používají jako uživatelské jméno při ověřování na serveru SMTP. Měl by obsahovat pouze písmena, čísla a pomlčku.


Jakmile je organizace vytvořena, budete požádáni o vytvoření nového poštovního serveru.


Uveďte název, krátký název a režim e-mailového serveru. V živém režimu jsou všechny e-maily směrovány a doručovány normálně, ale ve vývojovém režimu jsou viditelné pouze ve webovém rozhraní.


Jakmile přidáte poštovní server, budete muset na poštovní server přidat novou doménu. Klikněte na Domény a vytvořte nový název domény.

Jakmile přidáte název domény, budete muset nakonfigurovat DNS pro doménu. Budete muset přidat dva záznamy TXT pro SPF a DKIM. Budete také muset přidat záznam CNAME a záznam MX pro zpáteční cestu a doručení pošty. Jakmile nakonfigurujete DNS, klikněte na Zkontrolovat správnost mých záznamů pro ověření konfigurace DNS.

Nyní budete muset vytvořit přihlašovací údaje SMTP pro odesílání a přijímání e-mailů.

Vyberte typ SMTP nebo API. Zadejte jméno pro přihlašovací údaje SMTP a vyberte, jak chcete s e-mailovou adresou nakládat.

Po dokončení se můžete vrátit k Přehledu a zobrazí se informace potřebné k odeslání nebo přijetí e-mailové adresy.

Závěr

V tomto tutoriálu jsme úspěšně nastavili plně vybavený poštovní server pomocí Postal na Ubuntu 17.04. K odesílání a přijímání e-mailů vaší organizace můžete použít poštovní server.


Linux
  1. Jak nainstalovat DKIM na server Ubuntu

  2. Jak SSH na server pomocí jiného serveru?

  3. Jak nainstalovat CVS a vytvořit úložiště CVS na serveru Linux

  1. Jak nainstalovat SQL Server na Windows 10

  2. Jak nainstalovat poštovní server Postfix na RHEL 8 / CentOS 8

  3. Jak nainstalovat Rundeck na server Debian 8 (Jessie).

  1. Jak vytvořit LAMP server na CentOS 7

  2. Jak vytvořit komplexní poštovní server na Ubuntu

  3. Jak nainstalovat Ruby On Rails v Linuxu