GNU/Linux >> Belajar Linux >  >> Ubuntu

Instal Aplikasi Newsletter Self-Hosted Mailtrain di Ubuntu 16.04 Server

Tutorial ini akan menunjukkan cara menginstal Mailtrain di server Ubuntu 16.04. Mailtrain adalah aplikasi buletin self-hosted sumber terbuka, alternatif untuk penyedia layanan email komersial seperti Mailchimp. Anda dapat menggunakan Mailtrain untuk mengirim email ke pelanggan email Anda melalui server email Anda sendiri atau dengan menggunakan layanan relai SMTP (Mailjet, SendGrid, AmazonSES, Mailgun, dll).

Mailtrain dirilis di bawah persyaratan lisensi GPL v3.0, dibangun di atas Node.js dan MySQL/MariaDB. Versi terbaru adalah v1.24.1, dirilis pada 28 September 2018. Fitur Mailtrain adalah sebagai berikut:

  • Ini memungkinkan Anda mengelola milis besar dengan mudah (seperti 1 juta pelanggan).
  • Anda dapat menambahkan pelanggan secara manual, melalui API, atau mengimpor dari file CSV.
  • Mendukung bidang khusus (bidang teks, angka, tarik-turun atau kotak centang), tag gabungan, dan formulir khusus.
  • Segmentasi daftar.
  • Kampanye RSS:buat buletin otomatis dari umpan RSS dan kirimkan ke pelanggan.
  • Pelanggan dapat mengunggah kunci publik GPG mereka dan Mailtrain akan mengenkripsi buletin untuk mereka.
  • Memungkinkan Anda memeriksa statistik klik individual untuk setiap tautan.
  • Editor template email dan editor kode HTML tingkat lanjut.
  • Otomasi:kirim email tertentu saat pengguna mengaktifkan pemicu yang telah Anda tentukan sebelumnya.
  • Anda dapat membuat daftar email terbuka (memungkinkan langganan publik) dan daftar email tertutup (pelanggan ditambahkan ke daftar oleh admin).

Prasyarat Instalasi Mailtrain di Server Ubuntu 16.04

Untuk menjalankan Mailtrain, Anda memerlukan server dengan setidaknya 1GB RAM. Anda dapat mengklik tautan khusus ini untuk mendapatkan kredit gratis $100 di DigitalOcean. (Hanya untuk pengguna baru). Jika Anda sudah menjadi pengguna DigitalOcean, Anda dapat mengklik tautan khusus ini untuk mendapatkan kredit gratis senilai $50 di Vultr (hanya untuk pengguna baru). Setelah Anda memiliki akun di DigitalOcean atau Vultr, instal Ubuntu 16.04 di server Anda dan ikuti petunjuk di bawah.

Anda juga harus memiliki nama domain. Saya mendaftarkan nama domain saya dari NameCheap karena harganya murah dan mereka memberikan perlindungan privasi whois secara gratis.

Langkah 1:Instal Server Database MariaDB

Data pelanggan Anda akan disimpan dalam database. Mailtrain mendukung MySQL dan MariaDB. MariaDB adalah pengganti drop-in untuk MySQL. Ini dikembangkan oleh mantan anggota tim MySQL yang khawatir bahwa Oracle mungkin mengubah MySQL menjadi produk sumber tertutup. Jadi mari kita instal server database MariaDB.

Masukkan perintah berikut untuk menginstalnya di Ubuntu 16.04.

sudo apt install mariadb-server mariadb-client

Setelah terinstal, server MariaDB akan otomatis menatap. Gunakan systemctl untuk memeriksa statusnya.

systemctl status mysql

Contoh keluaran:

● mariadb.service - server database MariaDB 10.1.34 Dimuat:dimuat (/lib/systemd/system/mariadb.service; diaktifkan; preset vendor:diaktifkan) Aktif:aktif (berjalan) sejak Sat 2018-09-08 11 :13:27 UTC; 21 detik yang lalu Dokumen:man:mysqld(8) https://mariadb.com/kb/en/library/systemd/ PID Utama:3473 (mysqld) Status:"Menerima permintaan SQL Anda sekarang..." Tugas:27 (batas :505) CGroup:/system.slice/mariadb.service 3473 /usr/sbin/mysqld

Jika tidak berjalan, mulai dengan perintah ini:

sudo systemctl start mysql

Untuk mengaktifkan MariaDB agar secara otomatis memulai pada waktu boot sistem, jalankan

sudo systemctl aktifkan mysql

Sekarang jalankan skrip keamanan pasca instalasi.

sudo mysql_secure_installation

Saat diminta untuk memasukkan kata sandi root MariaDB, tekan tombol Enter karena kata sandi root belum disetel. Kemudian masukkan y untuk mengatur kata sandi root untuk server MariaDB.

Selanjutnya, Anda dapat menekan Enter untuk menjawab semua pertanyaan yang tersisa, yang akan menghapus pengguna anonim, menonaktifkan login root jarak jauh, dan menghapus database pengujian. Langkah ini merupakan persyaratan dasar untuk keamanan database MariaDB. (Perhatikan bahwa huruf Y dikapitalisasi, yang berarti itu adalah jawaban default.)

Langkah 2:Buat Database dan Pengguna untuk Mailtrain

Sekarang kita perlu masuk ke konsol MariaDB dan membuat database dan pengguna untuk Mailtrain. Secara default, paket MaraiDB di Ubuntu menggunakan unix_socket untuk mengautentikasi login pengguna, yang pada dasarnya berarti Anda dapat menggunakan nama pengguna dan kata sandi OS untuk masuk ke konsol MariaDB. Jadi Anda dapat menjalankan perintah berikut untuk login tanpa memberikan kata sandi root MariaDB.

sudo mysql -u root

Buat database untuk Mailtrain menggunakan perintah berikut. Saya menamakannya mailtrain , tetapi Anda dapat menggunakan nama apa pun yang Anda suka. (Jangan tinggalkan titik koma.)

membuat database mailtrain;

Kemudian masukkan perintah di bawah ini untuk membuat pengguna database untuk Mailtrain dan memberikan semua hak istimewa database mailtrain kepada pengguna. Ganti mtuser dan your-password dengan nama pengguna dan kata sandi pilihan Anda.

berikan semua hak istimewa di mailtrain.* ke mtuser@localhost yang diidentifikasi oleh 'mtuser_password';

Selanjutnya, buat pengguna dengan akses hanya baca ke database mailtrain. Saya menamai pengguna ini mt_readonly .

berikan pilihan pada mailtrain.* KE mt_readonly@localhost diidentifikasi oleh 'mt_readonly_password';

Bersihkan tabel hak istimewa agar perubahan diterapkan, lalu keluar dari konsol MariaDB.

hak flush;keluar;

Langkah 3:Instal Node.js

Mailtrain dibuat di Node.js, yang merupakan lingkungan run-time JavaScript yang menerjemahkan kode JavaScript yang dapat dibaca manusia menjadi kode mesin. Jadi kita perlu menginstal Node.js di Ubuntu 16.04 untuk menjalankan Mailtrain. Mailtrain membutuhkan Node.js 7+. Tutorial ini akan menginstal rilis LTS Node.js (V8.x) saat ini dari repositori NodeSource.

curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -sudo apt install -y nodejs

nodejs package berisi biner npm (Node.js package manager), jadi tidak perlu menginstalnya secara terpisah. Untuk memeriksa versi Node.js dan npm Anda, jalankan

simpul -vnpm -v

Keluaran:

Untuk mengkompilasi dan menginstal add-on asli dari npm, Anda juga perlu menginstal alat bantu:

sudo apt install -y build-essential

Langkah 4:Jalankan Mailtrain

Pergi ke /var/www/ dan ambil file Mailtrain dari Github.

cd /var/www/sudo git clone https://github.com/Mailtrain-org/mailtrain.git

Impor data SQL awal ke database kereta surat dengan menggunakan perintah berikut. Anda harus memasukkan kata sandi mtuser .

mysql -u mtuser -p mailtrain  

Buat file konfigurasi production.toml.

sudo nano /var/www/mailtrain/config/production.toml

Dalam file ini, Anda dapat menambahkan konfigurasi yang menggantikan konfigurasi default di /var/www/mailtrain/config/default.toml mengajukan. Kita hanya perlu menambahkan konfigurasi berikut.

user="mailtrain"group="mailtrain"[log]level="error"[www]secret="Ganti ini dengan beberapa karakter acak"[mysql]user="mtuser"password="mtuser_password"[antrian] proses=5

Simpan dan tutup file. Kemudian buat mailtrain pengguna dan grup untuk menjalankan daemon mailtrain. Perhatikan bahwa kami tidak perlu membuat sandi untuk pengguna ini, jadi kami membuat pengguna sistem, bukan pengguna biasa.

sudo adduser --system --group mailtrain

Buat file konfigurasi untuk pekerja laporan.

sudo nano /var/www/mailtrain/workers/reports/config/production.toml

Tambahkan konfigurasi berikut. Pekerja laporan ini akan memiliki akses hanya baca ke database mailtrain.

[log]level="error"[mysql]user="mt_readonly"password="mt_readonly_password"

Simpan dan tutup file. Kemudian ubah izin /var/www/mailtrain/ .

sudo chown mailtrain:mailtrain /var/www/mailtrain/ -Rsudo chmod o-rwx /var/www/mailtrain/config/

Dan instal paket simpul yang diperlukan.

cd /var/www/mailtrainsudo npm install --no-progress --production --unsafe-perm=true

Salin file unit layanan systemd ke /etc/systemd/system/ direktori.

sudo cp /var/www/mailtrain/setup/mailtrain.service /etc/systemd/system/

Buka file ini.

sudo nano /etc/systemd/system/mailtrain.service

Karena kami mengunduh Mailtrain ke /var/www/mailtrain/ direktori, jadi ubah direktori kerja dari /opt/mailtrain ke /var/www/mailtrain . Simpan dan tutup file ini. Kemudian mulai mailtrain.service .

sudo systemctl start mailtrain.service

Aktifkan mulai otomatis pada waktu boot sistem.

sudo systemctl aktifkan mailtrain.service

Periksa statusnya. Pastikan itu berjalan. Jika output mengatakan aktivasi (auto-restart), maka tunggu beberapa saat hingga Mailtrain memulai.

sudo systemctl status mailtrain.service

Setelah Mailtrain berjalan, Anda dapat mengakses antarmuka web Mailtrain melalui port 3000.

ip-server-Anda:3000

Menyiapkan Proksi Terbalik dan Mengaktifkan HTTPS

Sebelum menggunakan antarmuka web Mailtrain, letakkan di belakang Nginx lalu aktifkan HTTPS. Instal server web Nginx di Ubuntu 16.04 dengan:

sudo apt install nginx

Sekarang Anda dapat menyalin contoh mailtrain-nginx.conf file ke /etc/nginx/conf.d/ direktori.

sudo cp /var/www/mailtrain/setup/mailtrain-nginx.conf /etc/nginx/conf.d/

Buka file ini.

sudo nano /etc/nginx/conf.d/mailtrain-nginx.conf

Temukan baris berikut.

nama_server mailtrain.org www.mailtrain.org;

Ubah nilai server_name parameter ke nama domain Anda sendiri seperti newsletter.your-domain.com . Jangan lupa untuk membuat catatan A untuk sub-domain ini.

buletin nama_server.linuxbabe.com;

Simpan dan tutup file. Kemudian uji konfigurasi Nginx.

sudo nginx -t

Jika pengujian berhasil, muat ulang Nginx agar perubahan diterapkan.

sudo systemctl reload nginx

Anda sekarang seharusnya dapat mengakses antarmuka web Mailtrain melalui subdomain Anda: newsletter.your-domain.com .

Sekarang edit /var/www/mailtrain/config/production.toml berkas.

sudo nano /var/www/mailtrain/config/production.toml

Dalam [www] , tambahkan dua baris berikut untuk menunjukkan bahwa mailtrain berada di belakang proxy Nginx dan membuatnya hanya mendengarkan di alamat host lokal.

host="127.0.0.1"proxy=true

Simpan dan tutup file. Kemudian mulai ulang Mailtrain agar perubahan diterapkan.

sudo systemctl restart mailtrain

Mengaktifkan HTTPS Dengan Let's Encrypt

Instal klien Let's Encrypt (certbot) di server Ubuntu 16.04 Anda.

sudo apt install software-properties-commonsudo add-apt-repository ppa:certbot/certbotsudo apt updatesudo apt install certbot python3-certbot-nginx

Kemudian Anda dapat menggunakan plugin Nginx untuk mendapatkan dan menginstal sertifikat TLS secara otomatis dengan menjalankan perintah berikut.

sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email your-email-address -d newsletter.domain-anda.com

Sekarang Anda dapat mengakses antarmuka web Mailtrain melalui nama domain dan koneksi HTTPS yang aman.

Masuk dengan nama pengguna admin dan sandi test . Kemudian ubah alamat email dan kata sandi akun Anda. Buka settings halaman untuk mengubah konfigurasi default. Anda harus mengubah alamat layanan dari http://localhost:3000/ ke subdomain Anda (https://newsletter.your-domain.com ).

Catatan:Akun admin adalah sasaran empuk para peretas. Untuk keamanan terbaik, Anda disarankan untuk mengubah nama pengguna dari admin untuk sesuatu yang lain. Antarmuka web Mailtrain tidak menyediakan opsi seperti itu, tetapi Anda dapat mengubah nama pengguna di database MariaDB menggunakan perintah SQL.

Di Mailer Settings , Anda dapat menggunakan SMTP jika memiliki server email sendiri atau menggunakan Amazon SES. Sebenarnya, Anda juga dapat menggunakan layanan relai SMTP lainnya di SMTP tab. Pada tangkapan layar di bawah, saya menggunakan server email saya sendiri. Email akan dikirimkan pada port 587 dengan enkripsi STARTTLS.

Simpan pengaturan Anda. Kemudian Anda dapat membuat daftar untuk menguji fungsionalitas Mailtrain.

Cara Menangani Pesan Bounce di Mailtrain

Cepat atau lambat, daftar email Anda akan berisi alamat yang tidak dapat Anda kirimi email. Misalnya, ketika pelanggan yang menggunakan alamat email perusahaan keluar dari perusahaan, alamat email tersebut akan dihapus. Jadi server email Anda akan menerima pesan pentalan yang mengatakan bahwa email tidak dapat dikirim.

Jika Anda menggunakan layanan relai SMTP untuk mengirim email, mereka akan menangani pesan pentalan untuk Anda. Jika Anda menggunakan server email Anda sendiri untuk mengirim email, maka Anda perlu menangani pesan pentalan di Mailtrain. Mailtrain menawarkan dua cara untuk menangani pesan yang terpental.

  • melalui VERP
  • melalui log Postfix

Saya pribadi menggunakan metode VERP, karena banyak digunakan di komunitas email dan juga karena metode kedua menyebabkan penggunaan CPU yang tinggi di server saya.

Penanganan Pantulan VERP

Dengan VERP (jalur pengembalian amplop variabel), pengelola daftar email Anda menggunakan alamat amplop unik untuk setiap pelanggan. Untuk mengaktifkan VERP, edit production.toml berkas.

sudo nano /var/www/mailtrain/config/production.toml

Jika host Mailtrain Anda tidak menjalankan server SMTP, tambahkan teks berikut.

[verp]enabled=trueport=25disablesenderheader=true

Jika server Mailtrain Anda menjalankan server SMTP seperti Postfix, tambahkan teks berikut. Server penanganan pentalan akan mendengarkan 127.0.0.1:2525 .

[verp] diaktifkan=true port=2525 host="127.0.0.1"disablesenderheader=true

Simpan dan tutup file. Kemudian mulai ulang Mailtrain agar perubahan diterapkan.

sudo systemctl restart mailtrain

Di antarmuka web Mailtrain, buka Settings -> VERP Bounce Handlding . Centang Use VERP to catch bounces . Simpan setelan Anda.

Selanjutnya, Anda perlu membuat data MX untuk nama host server (bounces.your-domain.com ), lalu tambahkan A record untuk nama host ini, yang mengarah ke host Mailtrain Anda, sehingga pesan pentalan dapat dikirim ke host Mailtrain Anda. Setiap pelanggan dalam daftar Anda akan memiliki alamat amplop unik seperti [email protected] .

Perhatikan bahwa jika Anda menerapkan data DMARC untuk nama domain Anda, maka penyelarasan SPF harus disetel ke mode santai. Jika disetel ke mode ketat, buletin Anda bisa gagal dalam pemeriksaan DMARC.

Jika server penanganan bouncing Mailtrain mendengarkan pada port 2525 dari 127.0.0.1 dan server SMTP Postfix mendengarkan pada port 25 dari alamat IP publik, maka Anda perlu mengatur peta transport sehingga Postfix dapat menyampaikan pesan bouncing ke Mailtrain. Buat file peta transportasi.

sudo nano /etc/postfix/transport

Tambahkan baris berikut ke file ini. Ini memberitahu Postfix untuk menyampaikan email dengan alamat seperti [email protected] ke server penanganan bouncing Mailtrain.

bounces.domain-anda.com smtp:[127.0.0.1]:2525

Simpan dan tutup file. Kemudian buat file indeks.

sudo postmap /etc/postfix/transport

Edit file konfigurasi utama Postfix.

sudo nano /etc/postfix/main.cf

Tambahkan baris berikut ke file.

transport_maps =hash:/etc/postfix/transport

Simpan dan tutup file. Kemudian restart Postfix agar perubahan diterapkan.

sudo systemctl restart postfix

Cron Job untuk Membersihkan Alamat Email yang Tidak Berlangganan Secara Otomatis

Anda dapat secara manual menghapus alamat email yang tidak berlangganan di panel admin berbasis web Mailtrain, tetapi jauh lebih efisien untuk menghapusnya menggunakan perintah MySQL/MariaDB, lalu Anda cukup membuat tugas Cron untuk mengotomatiskan tugas ini.

Pertama, login ke server database MySQL/MariaDB.

sudo mysql -u root

Kemudian sambungkan ke database kereta surat.

gunakan kereta surat;

Info pelanggan disimpan di subscription tabel. Jika Anda memiliki beberapa milis, maka Anda akan memiliki beberapa subscription tabel. Anda dapat membuat daftar semua tabel ini menggunakan perintah SQL berikut.

tampilkan tabel seperti 'subscription%';

Keluaran di server saya.

+-------------------------------------+| Tables_in_mailtrain (berlangganan%) |+------------------------------------------------+| langganan || langganan__1 || berlangganan__2 |+------------------------------------------------+

Meja pertama adalah meja kosong. Saya memiliki dua daftar di Mailtrain. Mereka disimpan di subscription__1 dan subscription__2 meja. Alamat email langganan memiliki kode status yang disetel ke 1 . Alamat email yang berhenti berlangganan memiliki kode status yang disetel ke 2 . Jadi, untuk menghapus alamat email yang tidak berlangganan, Anda dapat menjalankan perintah SQL berikut.

HAPUS DARI langganan__1 di mana status ='2';HAPUS DARI langganan__2 di mana status ='2';

Untuk keluar dari server database MySQL/MariaDB, jalankan

keluar;

Sekarang buka file crontab pengguna root.

sudo crontab -e

Tambahkan dua baris berikut.

# Hapus alamat email yang tidak berlangganan dari milis daily@daily /usr/bin/mysql -u root mailtrain -Bse "DELETE FROM subscription__1 where status ='2';DELETE FROM subscription__2 where status ='2';" 

Simpan dan tutup file. Dan selesai.

Menangani Pendaftaran Berbahaya

Ada orang yang tidak ada hubungannya selain menggunakan alamat email palsu untuk mendaftar ke daftar email Anda, jadi email konfirmasi pendaftaran akan dikirim ke alamat email palsu dan Anda mungkin mendapatkan laporan email yang tidak terkirim di kotak masuk Anda.

Anda dapat menggunakan email web Anda seperti roundcube untuk membuat filter, yang secara otomatis menghapus pesan email semacam ini. Pada tangkapan layar berikut, Anda dapat melihat saya membuat filter yang secara otomatis menghapus pesan jika

  • Subjek berisi “Surat Tidak Terkirim Dikembalikan ke Pengirim“
  • Laporan pesan yang tidak terkirim dikirim ke alamat saya.
  • Isi berisi “Harap Konfirmasi Berlangganan”. (Karena email konfirmasi pendaftaran berisi frasa ini.)


Ubuntu
  1. Instal server SSH Ubuntu 22.04

  2. Instal MariaDB 10.1 Stabil di Ubuntu 14.04

  3. Cara Menginstal MariaDB di Ubuntu 22.04

  1. Cara Menginstal MariaDB di Ubuntu 18.04

  2. Cara Menginstal MariaDB di Ubuntu 20.04

  3. Cara Menginstal Perangkat Lunak Buletin Mailtrain di Ubuntu 18.04

  1. Cara Menginstal Server PowerDNS dan Admin PowerDNS di Ubuntu 20.04

  2. Cara Menginstal MariaDB di Ubuntu 18.04 / Ubuntu 16.04

  3. Instal WordPress + Apache, MariaDB, dan HHVM di Ubuntu 16.04