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.