Site icon agungprasetyo blog's

Alternatif Sistem Pengiriman Email di Eprints via Gmail SMTP Menggunakan MSMTP

Salah satu fitur penting di Eprints adalah email, dimana sistem Eprints  harus dapat mengirim dan menerima email secara otomatis. Hal ini tentunya tidak menjadi masalah ketika server Eprints kita memiliki server email sendiri atau ada server email terpisah yang sebelumnya sudah berjalan untuk kebutuhan lembaga/institusi yang bersangkutan.

Nah, masalahnya…tidak semua lembaga/institusi yang menginstall Eprints memiliki server email sendiri. Oleh karena itu, kali ini saya akan berbagi informasi tentang alternatif sistem email di Eprints menggunakan Gmail SMTP menggunakan MSMTP.

Menggunakan MSMTP dan Gmail Sebagai MTA

MTA adalah Mail Transport Agent, salah satu tugasnya adalah mengirim email ke tujuan yang kita tentukan. Jika kita hanya ingin mengirim email saja, kenapa tidak kita gunakan MTA terbesar yang sudah ada? Yap benar, Gmail dari Google. Kalau diatas dijelaskan bahwa Eprints harus dapat mengirim dan menerima email, menerima disini dimaksudkan adalah Eprints menerima email kemudian meneruskannya ke email admin.

Langkah pertama adalah instalasi msmtp dan beberapa pendukungnya.

$ sudo apt-get install msmtp ca-certificates msmtp-mta
Reading package lists... Done
Building dependency tree
Reading state information... Done
ca-certificates is already the newest version.
The following extra packages will be installed:
  libgsasl7 libntlm0
The following packages will be REMOVED:
  nullmailer
The following NEW packages will be installed:
  libgsasl7 libntlm0 msmtp msmtp-mta
0 upgraded, 4 newly installed, 1 to remove and 2 not upgraded.
Need to get 269 kB of archives.
After this operation, 817 kB of additional disk space will be used.
Do you want to continue [Y/n]? Y
...
...
Fetched 269 kB in 4s (55.5 kB/s)
Preconfiguring packages ...
(Reading database ... 219938 files and directories currently installed.)
Removing nullmailer ...
 * Stopping mail-transfer-agent:                                                                                                                                 [ OK ]
Processing triggers for ureadahead ...
Processing triggers for man-db ...
Selecting previously unselected package libntlm0.
(Reading database ... 219905 files and directories currently installed.)
Unpacking libntlm0 (from .../libntlm0_1.2-1_i386.deb) ...
Selecting previously unselected package libgsasl7.
Unpacking libgsasl7 (from .../libgsasl7_1.6.1-1_i386.deb) ...
Selecting previously unselected package msmtp.
Unpacking msmtp (from .../msmtp_1.4.26-1_i386.deb) ...
Selecting previously unselected package msmtp-mta.
Unpacking msmtp-mta (from .../msmtp-mta_1.4.26-1_all.deb) ...
Processing triggers for man-db ...
Processing triggers for install-info ...
Setting up libntlm0 (1.2-1) ...
Setting up libgsasl7 (1.6.1-1) ...
Setting up msmtp (1.4.26-1) ...
Setting up msmtp-mta (1.4.26-1) ...
Processing triggers for libc-bin ...
ldconfig deferred processing now taking place

Setelah proses instalasi selesai, kita akan melakukan pengecekan ke smtp Gmail dan port alternatif yaitu 587. Hasil outputnya akan mirip seperti berikut :

$ msmtp --serverinfo --host=smtp.gmail.com --tls=on --tls-certcheck=off --port=587
SMTP server at smtp.gmail.com (sc-in-f109.1e100.net [74.125.68.109]), port 587:
    smtp.gmail.com ESMTP x6sm12030583pbt.3 - gsmtp
TLS certificate information:
    Owner:
        Common Name: smtp.gmail.com
        Organization: Google Inc
        Locality: Mountain View
        State or Province: California
        Country: US
    Issuer:
        Common Name: Google Internet Authority G2
        Organization: Google Inc
        Country: US
    Validity:
        Activation time: Wed 18 Feb 2015 05:19:56 PM WIB
        Expiration time: Thu 31 Dec 2015 07:00:00 AM WIB
    Fingerprints:
        SHA1: D3:7C:82:FC:D0:5F:8F:D7:DA:A2:59:8C:42:D7:B2:9F:C1:9F:7E:60
        MD5:  5A:01:9E:79:12:D4:BF:B1:68:79:ED:FA:9E:CD:C0:F5
Capabilities:
    SIZE 35882577:
        Maximum message size is 35882577 bytes = 34.22 MiB
    PIPELINING:
        Support for command grouping for faster transmission
    STARTTLS:
        Support for TLS encryption via the STARTTLS command
    AUTH:
        Supported authentication methods:
        PLAIN LOGIN

Untuk mengetahui lokasi file konfigurasi, bisa dilihat dengan menggunakan perintah –version.

$ msmtp --version
...
System configuration file name: /etc/msmtprc
User configuration file name: /home/prazetyo/.msmtprc
...

Jika file konfigurasi /etc/msmtprc belum ada, maka buat terlebih dahulu

$ sudo pico /etc/msmtprc

Di bawah ini saya mencoba satu account dan menggunakan port alternatif 587. Untuk info lebih detil, klik manual MSMTP.

# Set defaults.
defaults
# Enable atau disable enkripsi TLS/SSL.
auth on
tls on
tls_trust_file /etc/ssl/certs/ca-certificates.crt

# Akun Gmail/Google Apps 
account gmail
host smtp.gmail.com
port 587
from userkamu@gmail.com
user userkamu@gmail.com
password passwordmu
logfile /var/log/msmtp.log

# Default akun yang dipakai
account default : gmail

Karena file ini berisi password dalam plain text, maka kita harus batasi hak aksesnya. Saya memanfaatkan grup mail yang sudah bawaan dari default instalasi Ubuntu. Kita juga buat sekalian file untuk log dari msmtp yang berada di /var/log/msmtp.log

$ sudo chgrp mail /etc/msmtprc
$ sudo chown 0600 /etc/msmtprc
$ sudo touch /var/log/msmtp.log 
$ sudo chown syslog:adm /var/log/msmtp.log 
$ sudo chmod 660 /var/log/msmtp.log

Jangan lupa, kita lakukan symlink msmtp dengan sendmail. Jika memang ada keterangan “file exists”, itu tidak masalah.

$ ln -s /usr/bin/msmtp /usr/sbin/sendmail
ln: failed to create symbolic link `/usr/sbin/sendmail': File exists
$ sudo ln -s /usr/bin/msmtp /usr/bin/sendmail
$ sudo ln -s /usr/bin/msmtp /usr/lib/sendmail
ln: failed to create symbolic link `/usr/lib/sendmail': File exists

Menghubungkan MSMTP ke Eprints

Dari akun eprints, buka file berikut dan lakukan perubahan pada baris ke 15 dengan memberi komen (#) dan ganti dengan konfigurasi yg baru.

$ pico archives/sir2014/cfg/cfg.d/email.pl

# If you want to override the way eprints sends email, you can
# set the send_email config option to be a function to use
# instead.
#
# The function will have to take the following paramaters.
# $repository, $langid, $name, $address, $subject, $body, $sig, $replyto, $replytoname
# repository   string   utf8   utf8      utf8      DOM    DOM   string    utf8
#

# $c->{send_email} = \&EPrints::Email::send_mail_via_sendmail;
# $c->{send_email} = \&some_function;

# Uses the smtp_server specified in SystemSettings
#$c->{send_email} = \&EPrints::Email::send_mail_via_smtp;
$c->{send_email} = \&EPrints::Email::send_mail_via_sendmail;

# If you want to import legacy data which is excempt from the normal
# validation methods, then uncomment this function and make it return
# true for eprints which are not to be validated.
# $c->{skip_validation} = sub {
#       my( $eprint ) = @_;
#
#       return 0;
#};

Kalau sudah, lakukan restart server apache anda. Kemudian login pada Eprints sebagai Admin atau menggunakan user yang mempunyai hak akses setara Admin. Klik Admin > klik tab System Tools > klik Send Test Email. Lalu masukkan alamat email tujuan dan klik Send.


Sistem email belum terkonfigurasi


Sistem email sudah terkonfigurasi dengan benar

Cek email yang tadi dibuat sebagai contoh, seharusnya ada email dengan subyek “Test Email”.

Sampai sini, semua proses sudah selesai. Saya berharap panduan/tutorial ini bisa bermanfaat bagi siapa saja yang mungkin mengalami hal yang sama seperti saya.

Tips :

Jika menggunakan Gmail, terkadang perlu untuk mengaktifkan "Less Secure Apps" di Settings > Security.
Atau bisa juga Anda login ke akun Gmail, lalu klik https://www.google.com/settings/u/2/security/lesssecureapps > pilih Turn On

Sumber :

http://devblog.virtage.com/2013/05/email-sending-from-ubuntu-server-via-google-apps-smtp-with-msmtp/
http://blog.joeb454.com/2014/02/configuring-msmtp-on-ubuntu-server-12-04/
https://wiki.archlinux.org/index.php/Msmtp
Exit mobile version