Mutt & Gmail¶
Program pembaca email seperti Thunderbird atau Evolution memang bagus, tetapi terkadang terasa berat. Jika Anda terbiasa bekerja terutama dengan CLI, mungkin ada baiknya mempelajari cara memasang dan mengonfigurasi Mutt, klien email baris perintah: itulah yang akan kita lakukan dalam tutorial ini.
Dalam tutorial ini Anda akan mempelajari:
Cara menginstal Mutt
Cara mengonfigurasi Mutt agar dapat digunakan dengan akun Gmail
Cara menyimpan informasi sensitif dalam berkas terenkripsi dan mengambilnya dari konfigurasi utama Mutt
Cara mengatur beberapa makro untuk beralih antar direktori kotak surat dengan mudah
Persyaratan dan konvensi perangkat lunak yang digunakan
Kategori. |
Requirements, Convetions or Software Version Used |
|---|---|
System. |
Distribution-independent |
Software. |
Mutt, gpg to encrypt sensitive information |
Other. |
Diasumsikan Anda memiliki pengaturan gpg yang berfungsi dengan pasangan kunci pribadi |
Conventions |
# – perintah-perintah linux yang akan dijalankan dengan hak akses root, baik secara langsung sebagai pengguna root maupun dengan menggunakan perintah sudo. |
. |
$ – perintah-perintah linux yang akan dijalankan sebagai pengguna biasa tanpa hak akses. |
Instalasi¶
Mutt tersedia secara default di repositori resmi semua distribusi Linux utama, sehingga kita dapat dengan mudah menginstalnya menggunakan pengelola paket favorit kita. Pada keluarga distribusi Fedora, kita dapat menggunakan dnf:
$ sudo dnf install mutt
Pada Debian dan turunannya kita dapat menggunakan apt:
$ sudo apt install mutt
Mutt juga tersedia di repositori tambahan Archlinux. Untuk menginstalnya, kita bisa menggunakan pacman:
$ sudo pacman -S mutt
Setelah terinstal, kita dapat melanjutkan dan mengonfigurasi aplikasi. Dalam tutorial ini, kita akan menyetelnya agar berfungsi dengan akun Gmail.
Struktur direktori MUTT¶
~
└── .mutt/
├── cache/
│ ├── headers/
│ └── bodies/
├── certificates
├── account.gmail
├── account.work
└── muttrc
Basic configuration¶
Kita dapat memilih di antara banyak jalur untuk membuat berkas konfigurasi Mutt, namun yang paling umum adalah ~/.muttrc dan ~/.config/mutt/muttrc; dalam tutorial ini kita akan menggunakan yang pertama. Berikut beberapa direktif yang mungkin ingin kita gunakan di dalamnya:
set ssl_force_tls = yes
set abort_nosubject = no
set mail_check = 60
set timeout = 10
set sort = "reverse-date-received"
set signature = "~/.mutt/signature"
set copy = no
Mari kita luangkan waktu untuk menjelaskan apa arti variabel yang kita tetapkan di atas, dan bagaimana variabel tersebut mengubah perilaku Mutt.
Force tls connection¶
Versi Mutt yang kami instal seharusnya dikompilasi dengan dukungan TLS: ini diperlukan untuk mengaktifkan komunikasi terenkripsi dengan server jarak jauh. Untuk memverifikasinya, kita dapat menjalankan perintah berikut:
$ mutt -v | grep tls
Sebagai hasil dari perintah di atas, kita akan melihat --with-gnutls di antara opsi konfigurasi yang ditandai sebagai kecocokan. Jika mutt dikonfigurasi dengan opsi ini, kita dapat menggunakan set ssl_force_tls ke "yes" agar Mutt mewajibkan semua koneksi dengan server jarak jauh dienkripsi. Mutt akan mencoba menggunakan enkripsi bahkan ketika berkomunikasi dengan server yang tidak secara resmi mendukungnya, dan akan membatalkan koneksi jika tidak berhasil.
Abort if a message contains no subject¶
Melalui abort_nosubject, kita dapat mengatur bagaimana Mutt akan berperilaku ketika sebuah pesan ditulis tetapi tidak ada subjek yang diberikan pada prompt subjek. Opsi default untuk ini adalah ask-yes, yang berarti akan diminta untuk mengonfirmasi apakah kita benar-benar ingin mengirim pesan tersebut, dengan opsi "yes" sebagai default. Dalam kasus ini, kita menggunakan no sebagai nilai, sehingga pesan tanpa subjek akan terkirim tanpa perlu konfirmasi.
Check for new emails¶
Mutt memperbarui status semua direktori setiap kali masukan diterima dari papan ketik. Biasanya, kita ingin mendapatkan notifikasi email baru bahkan saat tidak digunakan, tanpa perlu menekan tombol. Variabel yang mengatur perilaku ini adalah timeout. Variabel ini menggunakan nilai dalam detik yang merupakan waktu maksimum untuk menunggu masukan dari pengguna. Jika tidak ada masukan pengguna yang diterima selama jangka waktu yang ditentukan, operasi pembaruan tetap dilakukan. Nilai default untuk variabel ini adalah 600 detik, jadi jika tidak ada masukan yang diberikan, kita akan menerima pembaruan setiap 10 menit. Nilai default ini terlalu tinggi, jadi kita menggunakan 10.
Seperti yang telah kami sebutkan, setiap kali input pengguna diterima, mutt akan mencari pembaruan; pada aktivitas keyboard yang tinggi, hal ini akan menyebabkan terlalu banyak operasi akses, oleh karena itu kami ingin membatasi frekuensi ini. Untuk menyelesaikan tugas ini, kami dapat menggunakan variabel mail_check. Seperti halnya timeout, variabel ini menerima nilai numerik, yang diinterpretasikan sebagai waktu minimum dalam detik antara dua pemindaian. Nilai default untuk variabel ini adalah 5, sehingga mutt akan mencari email baru setiap 5 detik meskipun tombol ditekan sangat sering. Kami ingin meningkatkan nilai variabel ini, terutama jika menggunakan beberapa kotak surat, untuk menghindari kemungkinan perlambatan: 60 seharusnya merupakan nilai yang wajar.
Tetapkan urutan sortir email di halaman indeks¶
Secara default, email di menu "indeks" (tempat daftar pesan ditampilkan) diurutkan berdasarkan tanggal dalam urutan menaik, sehingga email yang lebih baru akan ditampilkan di bagian bawah. Untuk mengubah cara pengurutan email, kita dapat menggunakan dan mengatur nilai variabel sort_order. Dalam kasus ini, kita menggunakan reverse-data-received agar email yang lebih baru muncul di bagian atas daftar. Parameter lain dapat digunakan sebagai faktor pengurutan, misalnya subjek dan sizw.
Menambahkan tanda tangan ke email keluar¶
Jika kita ingin menambahkan tanda tangan tertentu ke email keluar, kita dapat mengatur dan menggunakan variabel tanda tangan (signature). Dengan variabel ini, kita menentukan jalur berkas yang berisi tanda tangan. Jika nama berkas diakhiri dengan | (tanda pipa), itu akan ditafsirkan sebagai perintah shell yang keluarannya harus digunakan sebagai tanda tangan. Dalam kasus ini, kita hanya menggunakan jalur berkas yang sudah ada: ~/.mutt/signature.
Simpan salinan pesan keluar¶
Secara default, di Mutt, variabel copy diatur ke 'yes', sehingga salinan pesan keluar disimpan untuk referensi nanti dalam berkas yang ditentukan melalui variabel record, yang secara default adalah ~/sent. Karena kita mengonfigurasi Mutt agar berfungsi dengan Gmail, yang memiliki fungsi ini bawaan (email keluar disimpan di folder "[Gmail]/Sent Mail" jarak jauh), kita ingin mengatur copy ke false. Jika tidak, email terkirim juga akan disimpan secara lokal, di lokasi yang kita lihat di atas ($record).
Mengonfigurasi Mutt agar berfungsi dengan Gmail¶
Sejauh ini, kita telah melihat dan mengatur beberapa opsi dasar dan penting. Sekarang kita akan melihat cara mengonfigurasi Mutt agar berfungsi dengan akun Gmail.
Membuat kata sandi khusus aplikasi untuk Mutt¶
Jika kita menggunakan autentikasi dua faktor Google, agar dapat mengakses akun Gmail kita dari Mutt, kita perlu membuat app-specific-password, karena Google mewajibkannya untuk aplikasi yang tidak menggunakan Oauth2 sebagai metode autentikasi. Untuk membuat kata sandi khusus aplikasi, cukup buka alamat ini, autentikasi diri Anda, dan ikuti petunjuk untuk membuat kata sandi: kita akan menggunakannya dalam konfigurasi.
Konfigurasi akun Gmail¶
Opsi yang ingin kami atur agar dapat menggunakan Mutt dengan gmail adalah sebagai berikut (kami menggunakan alamat dummy):
set from = "foo.bar@gmail.com"
set realname = "Foo Bar"
# Imap settings
set imap_user = "foo.bar@gmail.com"
set imap_pass = "<mutt-app-specific-password>"
# Smtp settings
set smtp_url = "smtps://foo.bar@smtp.gmail.com"
set smtp_pass = "<mutt-app-specific-password>"
# Remote gmail folders
set folder = "imaps://imap.gmail.com/"
set spoolfile = "+INBOX"
set postponed = "+[Gmail]/Drafts"
set record = "+[Gmail]/Sent Mail"
set trash = "+[Gmail]/Trash"
Mari kita lihat variabel yang telah kita definisikan di atas. Pertama, kita memiliki from dan realname: dengan keduanya, kita masing-masing menentukan nilai parameter header "From:" dan "real name" (nama depan dan belakang Anda) yang akan digunakan dalam email yang akan kita kirim.
Hal berikutnya yang kita lakukan di atas adalah menentukan variabel imap_user dan imap_pass. Variabel pertama praktis adalah alamat Anda, sama seperti yang kita gunakan untuk from; nilai yang kita tetapkan untuk imap_pass adalah app-specific-password yang telah kita buat sebelumnya untuk akun kita.
Kemudian, kita menetapkan nilai yang akan digunakan untuk smtp_url dan smtp_pass. Variabel pertama menentukan URL tempat pesan akan dikirim, dalam kasus Gmail, nilainya adalah smtp://<namapenggunaAnda>@smtp.gmail.com. Nilai variabel smtp_pass, sekali lagi, harus berupa app-specific-password yang telah dihasilkan.
Sebagai hal terakhir, kami mendefinisikan beberapa folder gmail:
folder: lokasi kotak surat kita, dalam kasus gmail adalah
imaps://imap.gmail.com;spoolfile: folder, di dalam kotak surat, tempat email tiba;
postponed: folder yang digunakan untuk menyimpan pesan yang ditunda (draf);
record: direktori tempat Gmail menyimpan pesan terkirim;
trash: direktori tempat menyimpan email yang dihapus, alih-alih membersihkannya secara langsung.
Seperti yang telah kami sebutkan sebelumnya, Gmail menyimpan email terkirim di folder khusus secara otomatis; di sini kami menetapkan nilai direktori record (+[Gmail]/Email Terkirim) agar dapat merujuknya nanti di makro tanpa harus melakukan hard-coding jalur (Gmail bukan satu-satunya penyedia kotak surat).
Kami juga mendefinisikan trash: direktori tempat email yang ditandai untuk dihapus akan dipindahkan ketika Mutt ditutup atau statusnya disinkronkan, alih-alih dihapus secara langsung: ini memberi kami kesempatan untuk mengambil pesan yang terhapus secara tidak sengaja. Fungsionalitas ini disertakan secara default di versi terbaru Mutt; untuk mendapatkannya di versi lama, apa yang disebut "patch trash" harus diterapkan, meskipun hal itu juga dapat dicapai melalui makro.
Mengamankan informasi akun yang sensitif¶
Pada titik ini, sebuah pertanyaan pasti muncul di benak Anda: bukankah berbahaya memasukkan informasi sensitif seperti app-specific-password yang kita buat untuk Mutt dalam berkas konfigurasi biasa? Tentu saja berbahaya! Ini adalah sesuatu yang seharusnya tidak pernah dilakukan! Di sisi lain, memasukkan kata sandi setiap kali kita ingin terhubung ke kotak surat akan sangat, sangat merepotkan. Solusi untuk masalah ini adalah menyimpan informasi akun Gmail kita dalam berkas terpisah yang akan kita enkripsi menggunakan gpg; berkas tersebut kemudian akan diambil sumbernya dan didekripsi di memori dari berkas konfigurasi utama Mutt.
Berikut contoh cara melakukannya. Pindahkan semua informasi Gmail yang kita siapkan di bagian sebelumnya ke dalam berkas bernama ~/.mutt/gmail dan enkripsi menggunakan gpg, dengan menjalankan perintah:
$ touch ~/.mutt/gmail
$ gpg --recipient <recipientname> --encrypt ~/.mutt/gmail
Perintah di atas akan menghasilkan berkas terenkripsi baru, ~/.mutt/gmail.gpg. Anda sekarang dapat menghapus berkas asli yang berupa teks biasa. Untuk mendapatkan berkas terenkripsi dari konfigurasi Mutt utama, kita hanya perlu menempatkan baris ini di awal berkas konfigurasi ~/.muttrc:
# Source default account configuration
source "gpg2 -dq ~/.mutt/gmail.gpg |"
Perhatikan traling pipe: ini penting agar Mutt dapat menggunakan keluaran perintah. Jika Anda menggunakan pengelola kata sandi "pass", Anda tidak perlu mengenkripsi berkas secara manual, tetapi buat entri untuknya yang akan disimpan di penyimpanan kata sandi. Ingin tahu lebih banyak? Kami membahas pass di artikel Cara mengatur kata sandi Anda menggunakan pengelola kata sandi.
Defining macros¶
Mutt memungkinkan kita mendefinisikan beberapa "Macros" yang bisa kita gunakan untuk berbagai keperluan, misalnya untuk membuat pintasan guna berpindah antar folder. Berikut beberapa makro bermanfaat yang bisa kita tempatkan di berkas ~/.muttrc. Tujuannya sudah jelas:
macro index gd "<change-folder>$postponed<enter>" "go to drafts"
macro index gs "<change-folder>$record<enter>" "go to sent"
macro index gi "<change-folder>$spoolfile<Enter>" "go to inbox"
macro index gt "<change-folder>$trash<enter>" "go to trash""
Kesimpulan¶
Dalam artikel ini, kita mempelajari cara menginstal dan mengonfigurasi Mutt, klien surel baris perintah, pada beberapa distribusi Linux utama. Kita mempelajari cara mengatur beberapa opsi terpenting, cara mengonfigurasi Mutt agar dapat digunakan dengan akun Gmail, dan cara menyimpan informasi sensitif dalam berkas terpisah yang terenkripsi dengan gpg, yang bersumber dari berkas konfigurasi utama Mutt. Kita juga membuat beberapa makro untuk berpindah direktori dengan cepat. Sekarang Anda dapat menikmati membaca surel dari terminal Anda!