Mailtrain adalah aplikasi buletin self-hosted open source yang ditulis di Node.js. Ini menggunakan Nodemailer library Node.js yang sangat populer untuk mengirim email. Ini menawarkan otomatisasi dan analitik yang luar biasa tanpa biaya sama sekali. Anda dapat dengan mudah membuat atau mengimpor daftar email dari sejuta alamat email menggunakan impor file CSV. Ini juga mendukung bidang dan formulir khusus. Ini memberikan otomatisasi melalui pemicu, yang dapat mengirim pesan tertentu ke pengguna tertentu saat tindakan dipicu. Anda dapat menggunakan penyedia email mana pun untuk mengirim buletin yang mendukung protokol SMTP bersama dengan dukungan untuk Amazon SES, ZoneMTA, SendGrid, dan Mailgun, dll. Ini menyediakan beberapa editor WYSIWYG untuk membuat template cantik untuk buletin.
Dalam tutorial ini, kita akan menginstal Mailtrain bersama dengan semua dependensi yang diperlukan pada CentOS 7. Kami juga akan menyiapkan Nginx sebagai proxy terbalik untuk melayani aplikasi pada port HTTP standar.
Persyaratan
Metabase membutuhkan setidaknya 1GB RAM. Semua dependensi yang diperlukan akan diinstal selama tutorial. Anda akan memerlukan instalasi minimal CentOS 7 dengan akses root di atasnya. Jika Anda login sebagai pengguna non-root, Anda dapat menjalankan sudo -i untuk beralih ke pengguna root.
Perbarui Sistem Basis
Sebelum menginstal paket apa pun, Anda disarankan untuk memperbarui paket dan repositori menggunakan perintah berikut.
yum -y update
Instal Node.js
Node.js diperlukan oleh Mailtrain karena dibuat menggunakan Nodemailer. Node.js adalah runtime JavaScript yang sangat populer dan Nodemailer adalah modul untuk aplikasi Node.js untuk mengirim email.
Tambahkan repositori Node.js 8.x:
curl --silent --location https://rpm.nodesource.com/setup_8.x | sudo bash -
Instal Node.js.
yum -y install nodejs
Instal MariaDB
Untuk menyimpan database Mailtrain kita perlu menginstal MariaDB. MariaDB adalah fork dari MySQL
Instal repositori MariaDB ke dalam sistem Anda.
nano /etc/yum.repos.d/mariadb.repo
Tambahkan baris berikut ke file.
[mariadb] name = MariaDB baseurl = http://yum.mariadb.org/10.2/centos7-amd64 gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB gpgcheck=1
Sekarang instal MariaDB dengan menjalankan.
yum -y install mariadb-server mariadb
Untuk memulai MariaDB dan mengaktifkannya untuk memulai saat boot menggunakan perintah berikut.
systemctl start mariadb
systemctl enable mariadb
Sekarang jalankan perintah berikut untuk mengamankan instalasi MySQL atau MariaDB Anda.
mysql_secure_installation
Ini akan menjalankan skrip kecil yang meminta Anda untuk memberikan kata sandi root untuk MariaDB. Karena kami baru saja menginstal MariaDB, kata sandi root tidak disetel, cukup tekan enter untuk melanjutkan. Ini akan menanyakan apakah Anda ingin mengatur kata sandi root untuk instalasi MariaDB Anda, pilih y dan atur kata sandi yang kuat untuk instalasi. Ini juga akan meminta Anda untuk menghapus database pengujian dan pengguna anonim. Sebagian besar pertanyaan sudah cukup jelas dan Anda harus menjawab ya atau y untuk semua pertanyaan.
Mailtrain memerlukan dua pengguna database untuk bekerja, satu untuk mengelola database Mailtrain dan satu lagi untuk menghasilkan laporan pekerja.
Untuk membuat database kita harus login ke baris perintah MySQL terlebih dahulu. Jalankan perintah berikut untuk hal yang sama.
mysql -u root -p
Ini akan meminta Anda untuk memasukkan kata sandi, berikan kata sandi root MySQL yang telah Anda atur sebelumnya. Sekarang jalankan kueri berikut untuk membuat database baru untuk instalasi Mailtrain Anda.
CREATE DATABASE mailtrain CHARACTER SET utf8 COLLATE utf8_general_ci;
Query di atas akan membuat database bernama mailtrain. Pastikan Anda menggunakan titik koma di akhir setiap kueri karena kueri selalu diakhiri dengan titik koma. Setelah database dibuat, Anda dapat membuat pengguna baru dan memberikan semua izin kepada pengguna untuk database tersebut. Menggunakan pengguna root tidak disarankan untuk database. Untuk membuat pengguna database baru, jalankan kueri berikut.
CREATE USER 'mailtrain'@'localhost' IDENTIFIED BY 'StrongPassword';
Kueri di atas akan membuat pengguna dengan nama pengguna mailtrain. Anda dapat menggunakan nama pengguna pilihan apa pun alih-alih mailtrain. Ganti StrongPassword dengan kata sandi yang kuat. Sekarang berikan hak istimewa yang sesuai untuk pengguna database Anda atas database yang telah Anda buat. Jalankan perintah berikut.
GRANT ALL PRIVILEGES ON mailtrain.* TO 'mailtrain'@'localhost';
Sekarang buat pengguna baru untuk Mailtrain RO.
CREATE USER 'mailtrain_ro'@'localhost' IDENTIFIED BY 'StrongROPassword';
Berikan akses baca ke pengguna RO melalui database Mailtrain.
GRANT SELECT ON mailtrain.* TO 'mailtrain_ro'@'localhost';
Sekarang jalankan perintah berikut untuk segera menerapkan perubahan pada hak istimewa database.
FLUSH PRIVILEGES;
Keluar dari perintah MySQL menggunakan perintah keluar.
EXIT;
Instal Dependensi
Mailtrain membutuhkan lebih sedikit ketergantungan untuk bekerja. Instal dependensi dengan menjalankan:
yum -y install ImageMagick git python redis bind-utils gcc-c++ make
ImageMagick adalah alat untuk memproses gambar Bitmap dan Git akan digunakan untuk mengkloning repositori proyek aplikasi. Redis adalah aplikasi cache sesi yang sangat populer dan Python, bind-utils, gcc-c++ dan make akan digunakan untuk mengkompilasi file aplikasi.
Mulai Redis dan aktifkan untuk memulai secara otomatis:
systemctl start redis
systemctl enable redis
Unduh dan Instal Mailtrain
Kloning file instalasi Mailtrain menggunakan Git.
git clone git://github.com/Mailtrain-org/mailtrain.git /opt/mailtrain
Buat pengguna Mailtrain baru untuk menjalankan daemon Mailtrain. Ini akan memastikan bahwa Mailtrain berjalan di lingkungan yang terisolasi.
adduser mailtrain -d /opt/mailtrain
Perintah di atas akan membuat mailtrain pengguna baru dan /opt/mailtrain akan digunakan sebagai direktori home.
Beralih ke direktori Mailtrain dengan menjalankan:
cd /opt/mailtrain
Sebelum melangkah lebih jauh, Anda harus membuat string acak yang akan digunakan untuk mengenkripsi data sesi. Untuk menghasilkan string acak, Anda dapat menggunakan utilitas pwgen.
Jalankan yum -y install pwgen untuk menginstal utilitas pwgen. Jalankan pwgen -1 64 untuk menghasilkan string dengan panjang 64 karakter. Anda akan melihat:
[[email protected] mailtrain]# pwgen -1 64 Poy0aeLalie5uew7eenanootehohLudiuleac5aigaekah1amokumeeg5aiG2ied
Buat file konfigurasi baru production.toml. Konfigurasi yang disediakan dalam file ini menggantikan file konfigurasi default default.toml. Kita tidak boleh mengubah file konfigurasi default. Buat file production.toml baru untuk menyimpan konfigurasi utama.
nano config/production.toml
Isi file dengan konfigurasi berikut.
language="en" user="mailtrain" group="mailtrain" rouser="nobody" rogroup="nobody" [log] level="error" [www] host="localhost" port="3000" secret="RandomString" remember=604800 proxy=true tmpdir="/tmp" [mysql] user="mailtrain" password="StrongPassword" database="mailtrain" port=3306 charset="utf8" [redis] enabled=true [queue] processes=5 [reports] enabled=true
Konfigurasi di atas memungkinkan Mailtrain berjalan sebagai pengguna mailtrain dan pengguna Mailtrain Reports Worker dijalankan sebagai pengguna bukan siapa-siapa. Selanjutnya, ia mengonfigurasi server bawaan untuk mendengarkan localhost pada port 3000. Kami akan menyiapkan Nginx sebagai proxy terbalik sehingga antarmuka web Mailtrain dapat diakses melalui port HTTP standar.
Ganti RandomString in secret=dengan string acak yang dihasilkan di atas. Setel proxy ke true karena kami akan menjalankan server bawaan Mailtrain di belakang proxy Nginx.
Tetapkan nama pengguna, kata sandi, dan nama basis data dari basis data yang telah Anda buat untuk menyimpan data Mailtrain.
Juga, buat file baru untuk menyimpan konfigurasi produksi Laporan Pekerja.
nano workers/reports/config/production.toml
Isi file dengan konfigurasi berikut.
[log] level="error" [mysql] host="localhost" user="mailtrain_ro" password="StrongROPassword" database="mailtrain" port=3306 charset="utf8" timezone="local"
Sekarang turunkan dependensi Node.js yang diperlukan dan instal perangkat lunaknya:
npm install --production
Setelah aplikasi terinstal, Anda dapat langsung memulainya menggunakan:
NODE_ENV=production npm start
Jika server sedang berjalan, maka Anda akan melihat output berikut.
[[email protected] mailtrain]# NODE_ENV=production npm start > [email protected] start /opt/mailtrain > node index.js info Using local auth
Tetapi alih-alih memulai aplikasi secara langsung, kami akan menggunakan layanan systemd. Hentikan eksekusi dengan menekan ctrl + C.
Berikan kepemilikan file kepada pengguna Mailtrain dan hapus semua izin konfigurasi dari pengguna non-root sistem lainnya:
chown -R mailtrain:mailtrain /opt/mailtrain
chmod o-rwx /opt/mailtrain/config
Menyiapkan Layanan Systemd
Buat file layanan Systemd baru. Menggunakan Systemd alih-alih perintah langsung untuk menjalankan server akan memastikan bahwa server dimulai secara otomatis saat gagal dan reboot. Itu membuat pengelolaan layanan menjadi sangat mudah.
nano /etc/systemd/system/mailtrain.service
Isi file dengan konfigurasi berikut.
[Unit] Description=Mailtrain Server Requires=mariadb.service After=syslog.target network.target [Service] user=mailtrain group=mailtrain Environment="NODE_ENV=production" WorkingDirectory=/opt/mailtrain ExecStart=/usr/bin/node index.js Type=simple Restart=always RestartSec=10 StandardOutput=syslog StandardError=syslog SyslogIdentifier=mailtrain [Install] WantedBy=multi-user.target
Mulai Mailtrain dan aktifkan untuk memulai secara otomatis saat boot:
systemctl enable mailtrain
systemctl start mailtrain
Untuk memeriksa status layanan, jalankan:
systemctl status mailtrain
Anda akan melihat bahwa layanan berjalan secara aktif.
[[email protected] ~]# systemctl status mailtrain ? mailtrain.service - Mailtrain Server Loaded: loaded (/etc/systemd/system/mailtrain.service; enabled; vendor preset: disabled) Active: active (running) since Mon 2017-10-09 11:15:40 UTC; 9s ago Main PID: 18092 (mailtrain) CGroup: /system.slice/mailtrain.service ??18092 mailtrain ??18105 /usr/bin/node /opt/mailtrain/services/executor.js ??18112 /usr/bin/node /opt/mailtrain/services/sender.js ??18117 /usr/bin/node /opt/mailtrain/services/sender.js ??18125 /usr/bin/node /opt/mailtrain/services/sender.js ??18131 /usr/bin/node /opt/mailtrain/services/sender.js ??18136 /usr/bin/node /opt/mailtrain/services/sender.js Oct 09 11:15:40 liptan-pc systemd[1]: Started Mailtrain Server. Oct 09 11:15:40 liptan-pc systemd[1]: Starting Mailtrain Server... Oct 09 11:15:44 liptan-pc mailtrain[18092]: info Using local auth
Setup Logrotate
Logrotate adalah utilitas yang sangat berguna untuk menyegarkan log yang sudah usang. Ketika sebuah layanan berjalan terus menerus, itu menghasilkan sejumlah besar log. File yang berisi log menghabiskan banyak ruang disk. Logrotate menghapus log lama secara berkala sehingga entri log dapat diganti dengan log baru.
Buat file konfigurasi logrotate baru:
nano /etc/logrotate.d/mailtrain
Isi file dengan konfigurasi berikut:
/var/log/mailtrain.log { daily rotate 12 compress delaycompress missingok notifempty copytruncate nomail }
Siapkan Nginx sebagai Proksi Terbalik
Kami telah mengonfigurasi antarmuka web bawaan Mailtrain untuk mendengarkan localhost pada port 3000, karena penting untuk menjalankan server web produksi untuk menyajikan situs web kepada pengguna. Dalam tutorial ini, kita akan menggunakan Nginx sebagai reverse proxy sehingga aplikasi dapat diakses melalui port HTTP standar. Instal server web Nginx:
yum -y install nginx
Buat host virtual baru untuk file blok server untuk Nginx:
nano /etc/nginx/conf.d/mailtrain.conf
Isi file dengan:
server { listen 80; listen [::]:80; server_name news.example.com www.news.example.com ; access_log /var/log/nginx/mailtrain.log; location / { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header HOST $http_host; proxy_set_header X-NginX-Proxy true; proxy_pass http://127.0.0.1:3000; proxy_redirect off; } }
Mulai ulang server web Nginx dan aktifkan untuk memulai secara otomatis saat boot:
systemctl restart nginx
systemctl enable nginx
Konfigurasi Firewall dan SELinux
Jika Anda menjalankan firewall di server Anda, Anda perlu mengonfigurasi firewall untuk menetapkan pengecualian untuk layanan HTTP. Izinkan proxy terbalik Nginx untuk terhubung dari luar jaringan.
firewall-cmd --zone=public --permanent --add-service=http
firewall-cmd --reload
Jika Anda telah mengaktifkan SELinux di sistem Anda, maka Anda perlu menambahkan beberapa pengecualian dalam kebijakan SELinux.
Untuk memeriksa apakah SELinux diaktifkan, jalankan:
getenforce
Jika Anda telah mengaktifkan SELinux, jalankan:
setsebool -P httpd_can_network_connect 1
Mengakses Antarmuka Web
Instalasi Mailtrain sekarang selesai. Sekarang Anda dapat mengakses server Mailtrain di http://news.example.com. Anda akan melihat antarmuka berikut.
Klik tombol login dan login menggunakan username admin dan password test.
Jelajahi Akun bagian dasbor dan perbarui alamat email dan kata sandi. Sangat penting untuk memperbarui kata sandi sesegera mungkin.
Selain itu, penting untuk memperbarui pengaturan sebelum Anda dapat menggunakan Mailtrain.
Perbarui URL Situs dan email Admin. Anda juga dapat memberikan ID pelacakan Google Analytics untuk melacak wawasan melalui Google analytics. Anda dapat meletakkan beberapa kode HTML yang akan ditampilkan di beranda server Anda.
Tetapkan default kampanye, seperti nama Sander Anda, Alamat default, Default dari nama, email dan URL, dll. Saat mengirim email, jika opsi ini tidak dikonfigurasi, maka default akan digunakan.
Terakhir, konfigurasi yang paling penting adalah menyediakan kredensial server email. Anda dapat menggunakan server SMTP atau Amazon SES (Layanan Email Sederhana). Jika Anda menggunakan SMTP, berikan nama host server email, port, nama pengguna, dan kata sandi server SMTP Anda. Jika Anda menggunakan Amazon SES, berikan kunci API dan kredensial lainnya.
Anda juga dapat mengatur server SMTP Anda sendiri. cukup ikuti salah satu panduan ini:
- Cara Membuat Server Surat Berfitur Lengkap menggunakan Pos
- Bangun Mail Server Berfitur Lengkap Di CentOS 6 Dengan Postfix, Dovecot, PostgreSQL
- Menyiapkan Server Email Menggunakan Exim4, Clamav, Dovecot, SpamAssassin Dan Banyak Lagi Di Debian
Anda memiliki server Mailtrain yang berfungsi penuh terinstal di server CentOS 7 Anda sekarang. Buat daftar pertama Anda dan mulailah mengirim buletin ke pelanggan. Anda dapat membuat template interaktif menggunakan editor WYSIWYG dan mengirim email menggunakan kampanye. Mailtrain juga menyediakan laporan email yang dikirim dan dibuka. Anda dapat menggunakan tab Otomatisasi untuk membuat pemicu yang mengirim email saat beberapa tindakan tertentu dilakukan. Anda juga dapat mengatur enkripsi GPG. Jika daftar memiliki bidang khusus untuk kumpulan Kunci Publik GPG, maka pelanggan dapat mengunggah kunci publik GPG mereka untuk menerima pesan terenkripsi dari daftar.