GNU/Linux >> Belajar Linux >  >> Linux

Cara Membuat Server Surat Berfitur Lengkap menggunakan Pos

Postal adalah server surat lengkap sumber terbuka dan gratis untuk mengirim dan menerima email. Itu ditulis dalam Ruby dan JavaScript. Anda dapat dengan mudah menginstal Postal di server Anda sendiri. Ini juga membantu Anda dalam memberikan informasi DNS yang benar yang diperlukan untuk mengurangi email spam. Pos digunakan oleh banyak organisasi untuk mengirim dan menerima email setiap hari.

Dalam tutorial ini, kita akan menginstal Postal Mail Server di Ubuntu 17.04.

Prasyarat

  • Server minimal Ubuntu 17.04. RAM 8 GB disarankan.
  • Hak istimewa root. Panduan ini ditulis sebagai pengguna root, jika Anda login sebagai pengguna sudo, jalankan sudo -i.
  • nama domain yang mengarah ke server Anda.

Perbarui Sistem Basis

Sebelum menginstal paket apa pun, Anda disarankan untuk memperbarui paket dan repositori menggunakan perintah berikut.

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

Setelah sistem Anda diperbarui, lanjutkan lebih jauh untuk menginstal Ruby.

Instal Ruby

Postal ditulis dalam Ruby, oleh karena itu diperlukan untuk menginstal Ruby 2.3 atau lebih tinggi pada sistem Anda. Dalam tutorial ini, kita akan menginstal Ruby versi terbaru menggunakan RVM. Jalankan perintah berikut untuk menambahkan kunci GPG RVM di server Anda.

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

Sekarang instal RVM menggunakan perintah berikut.

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

Untuk segera menggunakan RVM, Anda harus menjalankan perintah berikut.

source /etc/profile.d/rvm.sh

Sekarang ambil daftar Ruby menggunakan perintah berikut.

rvm list known

Anda akan melihat output berikut:

# 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

Sekarang instal versi terbaru Ruby dalam daftar menggunakan perintah berikut.

rvm install 2.4

Gunakan versi Ruby menggunakan perintah berikut.

rvm use 2.4

Anda dapat memverifikasi versi Ruby menggunakan perintah berikut.

ruby -v

Anda akan melihat output berikut jika Ruby berhasil diinstal.

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

Instal Permata Ruby

Untuk menjalankan Postel di server Anda, Anda perlu menginstal bundler dan procodile di server Anda. bundler adalah manajer ketergantungan untuk aplikasi permata Ruby. procodile adalah alat manajemen proses untuk aplikasi Ruby. Instal kedua aplikasi menggunakan perintah berikut.

gem install bundler
gem install procodile

Instal Server Database MariaDB

MariaDB adalah cabang dari server database MySQL. MySQL adalah perangkat lunak sistem manajemen basis data relasional yang digunakan untuk menyimpan data dalam format tabel. Untuk menginstal MariaDB di server Anda, jalankan:

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

Jalankan perintah berikut untuk memulai MariaDB dan mengaktifkannya untuk memulai saat boot.

systemctl start mariadb
systemctl enable mariadb

Sekarang jalankan perintah berikut untuk mengamankan instalasi MariaDB Anda.

mysql_secure_installation

Perintah di atas akan menjalankan skrip untuk mengamankan instalasi MariaDB baru. Script akan menanyakan password user root yang ada, kita baru saja menginstal MariaDB, password root belum diset, tekan enter saja untuk melanjutkan.

Script akan menanyakan apakah Anda ingin mengatur kata sandi root untuk instalasi MariaDB Anda, pilih y dan atur kata sandi yang kuat untuk instalasi. Sebagian besar pertanyaan sudah cukup jelas dan Anda harus menjawab ya atau y untuk semua pertanyaan.

Siapkan Basis Data untuk Pos

Untuk membuat database untuk Postal, kita harus login ke baris perintah MySQL terlebih dahulu. Jalankan perintah berikut untuk hal yang sama.

mysql -u root -p

Perintah di atas akan masuk ke shell MySQL dari pengguna root, itu akan meminta kata sandi pengguna root. Berikan kata sandi untuk masuk. Sekarang jalankan kueri berikut untuk membuat database baru untuk instalasi Pos Anda.

CREATE DATABASE postal CHARSET utf8mb4 COLLATE utf8mb4_unicode_ci;

Query di atas akan membuat database baru bernama postal. Pastikan Anda menggunakan titik koma di akhir setiap kueri karena kueri selalu diakhiri dengan titik koma.

Sekarang berikan semua hak istimewa kepada pengguna basis data Anda atas basis data yang telah Anda buat. Jalankan perintah berikut.

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

Ganti StrongPassword dengan kata sandi yang sangat kuat dan aman.

Basis data akan secara otomatis ditulis oleh Postal, tetapi untuk itu, kami perlu memberikan izin yang sesuai kepada pengguna Postal. Jalankan perintah berikut untuk memberikan hak istimewa kepada semua pengguna yang dimulai dengan postal-.

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

Sekarang jalankan perintah berikut untuk segera menerapkan perubahan pada hak istimewa database.

FLUSH PRIVILEGES;

Keluar dari prompt MySQL menggunakan perintah berikut.

EXIT;

Instal RabbitMQ

RabbitMQ ditulis dalam Bahasa Erlang, dalam tutorial ini kita akan menginstal versi terbaru dari Erlang ke server. Instal Erlang menggunakan perintah berikut.

apt -y install erlang

Impor kunci GPG dengan menjalankan:

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

Sekarang tambahkan repositori RabbitMQ dengan menjalankan perintah berikut:

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

Perbarui indeks repositori dengan menjalankan perintah berikut.

apt update

Sekarang Anda dapat menginstal RabbitMQ dengan menjalankan perintah berikut.

apt -y install rabbitmq-server

RabbitMQ sekarang terinstal di sistem Anda.

Setup RabbitMQ

Anda dapat memulai proses server RabbitMQ dengan menjalankan perintah berikut.

systemctl start rabbitmq-server

Untuk memulai RabbitMQ secara otomatis saat boot, jalankan perintah berikut.

systemctl enable rabbitmq-server

Sekarang jalankan perintah berikut untuk membuat virtual host untuk Postal di server RabbitMQ.

rabbitmqctl add_vhost /postal

Sekarang tambahkan pengguna RabbitMQ untuk Postal dengan menjalankan perintah berikut.

rabbitmqctl add_user postal StrongPassword

Ganti StrongPassword dengan kata sandi yang sangat kuat.

Sekarang atur izin yang sesuai pada host virtual RabbitMQ ke pengguna RabbitMQ.

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

Instal Git dan Node.js

Git akan digunakan untuk mengambil paket penginstal dan beberapa dependensi. Jalankan perintah berikut untuk menginstal Git di sistem Anda.

apt -y install git

Anda dapat memeriksa apakah Git berhasil diinstal dengan memeriksa versi menggunakan perintah berikut.

git --version

Anda harus mendapatkan output berikut.

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

Node.js akan digunakan untuk mengkompilasi pustaka JavaScript. Instal perangkat lunak menggunakan perintah berikut.

apt -y install nodejs

Anda dapat memeriksa apakah Node.js berhasil diinstal dengan menjalankan perintah berikut.

nodejs -v

Anda harus mendapatkan output berikut.

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

Sekarang setelah semua dependensi siap, Anda dapat menginstal Postal.

Instal Pos

Postal harus dijalankan sebagai penggunanya sendiri yang terisolasi. Jalankan perintah berikut untuk membuat pengguna baru.

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

Perintah di atas akan membuat pengguna baru dengan username postal dan direktori home disetel ke /opt/postal.

Izinkan Ruby untuk mendengarkan port yang diistimewakan dengan menjalankan perintah berikut.

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

Sekarang semuanya sudah siap, unduh arsip Postal terbaru dan ekstrak arsip sebagai pengguna Postal menggunakan perintah berikut.

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

Sekarang buat tautan simbolis ke file biner Postal dengan menjalankan perintah berikut.

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

Sekarang Anda dapat berinteraksi dengan server Pos Anda dari direktori mana pun. Untuk menjalankan perintah berikutnya, Anda harus masuk ke shell sebagai pengguna pos.

su - postal

Sekarang Anda perlu menginstal semua dependensi ruby ​​​​yang diperlukan untuk menjalankan aplikasi.

postal bundle /opt/postal/vendor/bundle

Setelah dependensi diinstal, Anda perlu membuat file konfigurasi default.

postal initialize-config

Perintah di atas akan menghasilkan konfigurasi yang diperlukan untuk instalasi Postal Anda termasuk berbagai kunci dan sertifikat. Ini juga akan menghasilkan file konfigurasi postal.yml default. Anda harus mendapatkan output berikut.

[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

Sekarang Anda perlu mengonfigurasi beberapa opsi dalam konfigurasi postal.yml.

nano /opt/postal/config/postal.yml

Temukan baris berikut:

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

Ubah nama host menjadi nama domain Anda yang sebenarnya. Selanjutnya, temukan baris berikut.

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

Ubah username, password dan nama database sesuai dengan database yang telah Anda buat. Selanjutnya, temukan baris berikut:

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

Ubah konfigurasi di atas sesuai dengan vhost dan pengguna yang dibuat untuk RabbitMQ. Selanjutnya, temukan konfigurasi 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

Ubah domain di atas dengan domain sebenarnya yang ingin Anda gunakan dengan server email.

Simpan file dan keluar dari editor. Sekarang, Inisialisasi database dan aset lainnya dengan menjalankan:

postal initialize

Buat pengguna Administrator Pos dengan menjalankan perintah berikut.

postal make-user

Perintah di atas akan menanyakan alamat email, nama pengguna, dan kata sandi Anda. Perintah di atas akan menghasilkan output berikut.

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

Setup baris perintah Postal sekarang selesai, Anda dapat memulai server menggunakan perintah berikut.

postal start

Untuk memeriksa apakah layanan dimulai dengan benar, jalankan perintah berikut.

postal status

Anda harus mendapatkan output berikut.

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

Untuk menghentikan Postal, Anda selalu dapat menjalankan perintah berikut.

postal stop

Mengonfigurasi Nginx sebagai Proxy Terbalik

Untuk alasan keamanan, antarmuka web Pos dan API harus berada di belakang server web produksi apa pun seperti Apache atau Nginx. Dalam tutorial ini, kita akan menginstal dan mengkonfigurasi Nginx sebagai proxy terbalik.

Instal server web Nginx dengan menjalankan perintah berikut.

apt -y install nginx

Disarankan untuk menggunakan SSL untuk mengakses Nginx. Anda dapat menggunakan sertifikat yang ditandatangani sendiri atau Let's Encrypt sertifikat SSL gratis atau sertifikat komersial. Dalam tutorial ini, kita akan menggunakan Let's Encrypt SSL gratis.

Instal klien Let's Encrypt juga dikenal sebagai certbot dengan menjalankan perintah berikut.

apt -y install certbot

Setelah penginstalan selesai, jalankan perintah berikut untuk mendapatkan sertifikat dari otoritas sertifikat Let's Encrypt. Pastikan nama domain diarahkan ke server Anda karena certbot akan memeriksa otoritas domain sebelum memberikan sertifikat. Ganti mail.example.com dengan nama domain Anda yang sebenarnya.

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

Setelah sertifikat dibuat, mereka akan disimpan di /etc/letsencrypt/live/mail.example.com.

Let's Encrypt SSL kedaluwarsa dalam 90 hari, jadi disarankan untuk mengatur pembaruan otomatis untuk sertifikat Anda. Jalankan perintah berikut untuk membuka file crontab Anda.

crontab -e

Masukkan baris berikut ke dalam file crontab.

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

Pekerjaan cron di atas akan berjalan secara otomatis setiap hari Senin pukul 01.30 dan jika sertifikat Anda akan kedaluwarsa, sertifikat akan diperpanjang secara otomatis.

Sekarang buat blok server baru untuk situs web Anda dengan menjalankan perintah berikut.

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

Isi file dengan konten berikut.

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

Simpan file dan keluar dari editor. Sekarang restart server web nginx dengan menjalankan.

systemctl restart nginx

Untuk mengaktifkan nginx agar mulai otomatis saat boot, jalankan perintah berikut.

systemctl enable nginx

Sekarang Anda dapat mengakses Postal dengan menjelajahi situs web berikut melalui browser web favorit Anda.

https://mail.example.com

Mengonfigurasi Pos

Setelah Anda menelusuri situs di atas, Anda akan melihat antarmuka berikut.


Masukkan alamat email dan kata sandi pengguna yang telah Anda buat sebelumnya. Setelah Anda masuk, Anda akan diminta untuk membuat organisasi baru.

Berikan nama organisasi. Anda dapat memilih untuk menggunakan nama pendek yang dibuat secara otomatis, atau Anda dapat menentukannya sendiri. Nama pendek digunakan sebagai nama pengguna saat mengautentikasi dengan server SMTP. Seharusnya hanya berisi huruf, angka, dan tanda hubung.


Setelah organisasi dibuat, Anda akan diminta untuk membuat server email baru.


Berikan nama, nama pendek, dan mode server email. Dalam mode Live, semua email dirutekan dan dikirim secara normal tetapi dalam mode pengembangan, email hanya terlihat di antarmuka web.


Setelah Anda menambahkan server email, Anda perlu menambahkan domain baru di server email. Klik Domain tab dan buat nama domain baru.

Setelah Anda menambahkan nama domain, Anda perlu mengonfigurasi DNS untuk domain tersebut. Anda perlu menambahkan dua data TXT untuk SPF dan DKIM. Anda juga perlu menambahkan data CNAME dan data MX untuk jalur pengembalian dan pengiriman email. Setelah Anda mengonfigurasi DNS, klik Periksa data saya sudah benar untuk memverifikasi konfigurasi DNS.

Sekarang Anda perlu membuat kredensial SMTP untuk mengirim dan menerima email.

Pilih jenis sebagai SMTP atau API. Berikan nama untuk kredensial SMTP, pilih bagaimana Anda ingin menangani alamat email.

Setelah selesai, Anda dapat kembali ke Ringkasan tab dan Anda akan melihat informasi yang diperlukan untuk mengirim atau menerima alamat email.

Kesimpulan

Dalam tutorial ini, kami telah berhasil menyiapkan server email berfitur lengkap menggunakan Postal di Ubuntu 17.04. Anda dapat menggunakan server email untuk mengirim dan menerima email organisasi Anda.


Linux
  1. Cara menginstal DKIM di server Ubuntu

  2. Bagaimana Cara Ssh Ke Server Menggunakan Server Lain??

  3. Cara Menginstal CVS dan Membuat Repositori CVS di Server Linux

  1. Cara Menginstal SQL Server di Windows 10

  2. Cara menginstal server email postfix di RHEL 8 / CentOS 8

  3. Cara menginstal Rundeck di server Debian 8 (Jessie)

  1. Cara membuat server LAMP di CentOS 7

  2. Cara Membuat Server Surat Komprehensif di Ubuntu

  3. Cara Menginstal Ruby On Rails Di Linux