Headless Email Reading for Gmail

Introduction

Mbsync dan OfflineIMAP adalah dua program yang berfungsi untuk menyinkronkan email dari server IMAP ke Maildir lokal Anda, yang memungkinkan Anda membaca email secara offline dan menggunakan klien email berbasis terminal seperti mutt atau mu4e. Meskipun tujuannya sama, keduanya memiliki perbedaan signifikan dalam hal performa, fleksibilitas, dan riwayat pengembangan.

Perbandingan antara mbsync dan OfflineIMAP

Fitur

mbsync (isync)

OfflineIMAP

Bahasa

Ditulis dalam C.

Ditulis dalam Python.

Performa

Secara umum dianggap lebih cepat, terutama untuk sinkronisasi penuh, karena ditulis dalam bahasa C. Perbedaan performa akan semakin terlihat jika memiliki banyak email.

Cenderung lebih lambat, terutama untuk sinkronisasi penuh atau pada mailbox yang besar, karena ditulis dalam bahasa Python.

Penggunaan CPU dan Memori

Lebih efisien dalam penggunaan CPU dan memori.

Memiliki riwayat penggunaan memori yang tinggi, yang dapat menyebabkan masalah Out Of Memory (OOM) pada mailbox yang sangat besar.

Fleksibilitas

Konfigurasi yang lebih sederhana dan berfokus pada sinkronisasi dua arah yang efisien.

Sangat fleksibel, memungkinkan penggunaan fungsi-fungsi Python untuk manipulasi folder atau data, seperti penamaan ulang folder atau skema sinkronisasi yang kompleks.

Dukungan Fitur

Mendukung fitur dasar IMAP dengan baik. Tidak memiliki dukungan bawaan untuk fitur spesifik penyedia email seperti label Gmail, meskipun bisa diatasi dengan konfigurasi yang tepat.

Memiliki dukungan khusus untuk fitur-fitur seperti label Gmail, menjadikannya pilihan yang baik untuk pengguna Gmail yang ingin mempertahankan struktur label yang sama secara lokal.

Status Pengembangan

Aktif dikelola dan stabil.

Riwayat pengembangannya pernah terhenti saat migrasi dari Python 2 ke Python 3, tetapi sekarang telah dihidupkan kembali dan dikelola oleh tim baru.

Konfigurasi

File konfigurasi yang kuat, terkadang membutuhkan pembelajaran untuk memahami sintaksnya.

File konfigurasi berbasis Python yang memungkinkan kustomisasi yang sangat mendalam.

Kapan menggunakan yang mana?

Gunakan mbsync jika: - Prioritas Anda adalah performa dan kecepatan. mbsync adalah pilihan yang lebih baik untuk sinkronisasi yang cepat dan efisien, terutama jika Anda memiliki mailbox yang besar. - Anda menggunakan komputer dengan sumber daya terbatas, seperti laptop lama, di mana penggunaan CPU dan memori yang rendah lebih diutamakan. - Anda menginginkan solusi yang stabil dan telah teruji dengan konfigurasi yang kuat untuk sinkronisasi standar.

Gunakan OfflineIMAP jika: - Anda membutuhkan fleksibilitas tinggi dan kustomisasi yang mendalam, terutama jika Anda ingin menggunakan fungsi Python untuk memanipulasi proses sinkronisasi. - Anda menggunakan Gmail dan ingin menyinkronkan labelnya secara utuh, karena OfflineIMAP memiliki dukungan bawaan untuk label Gmail. - Anda memiliki kasus penggunaan khusus yang membutuhkan logika sinkronisasi kompleks yang tidak bisa ditangani oleh mbsync.

MBsync

Mbsync adalah bagian dari paket isync, jadi Anda akan menginstal paket isync menggunakan manajer paket sistem Anda.

#Debian/Ubuntu
sudo apt update
sudo apt install isync

#Fedora
sudo dnf install isync

#Arch Linux
sudo pacman -S isync

#macOS
brew install isync

Setelah instalasi, Anda dapat memverifikasinya dengan menjalankan mbsync -V. Anda akan melihat informasi versi yang mengonfirmasi bahwa mbsync telah diinstal dengan benar.

Configure mbsync

  1. Buat berkas konfigurasi. mbsync menggunakan berkas konfigurasi, biasanya terletak di ~/.mbsyncrc.

    touch ~/.mbsyncrc
    
  2. Tambahkan rincian akun Anda ke file ~/.mbsyncrc, termasuk server IMAP penyedia email Anda, nama pengguna, dan kata sandi Anda.

  3. Jalankan perintah sinkronisasi. Setelah mengonfigurasi berkas, Anda dapat menjalankan mbsync untuk mulai menyinkronkan email Anda.

Berikut adalah panduan untuk mengonfigurasi mbsync untuk menyinkronkan email Anda, termasuk contoh lengkap untuk pengaturan umum.

  1. Buat direktori Maildir

    Pertama, buat direktori dasar pada komputer lokal Anda tempat email Anda akan disimpan. mbsync akan mencerminkan struktur folder IMAP Anda ke direktori ini.

    mkdir -p ~/Mail/personal
    
  2. Buat file konfigurasi

    Berkas konfigurasi untuk mbsync bernama .mbsyncrc dan terletak di direktori home Anda (~/.mbsyncrc).

  3. Tambahkan detail Akun

    Buka berkas dalam editor teks dan tentukan bagian berikut untuk setiap akun yang ingin Anda sinkronkan:

    IMAPAccount

    Bagian ini menentukan detail server IMAP jarak jauh. Ganti nilai placeholder dengan nilai Anda sendiri.

    • Host: Alamat server IMAP untuk penyedia email Anda (misalnya, imap.gmail.com).

    • User : Alamat email lengkap Anda.

    • Pass : Kata sandi Anda. Lebih aman menggunakan PassCmd untuk membaca kata sandi dari berkas lain atau pengelola kata sandi.

    • AuthMechs : Dapat digunakan untuk menentukan metode autentikasi (misalnya, LOGIN).

    • SSLType : Atur ke IMAPS untuk koneksi aman melalui port 993, atau STARTTLS untuk port 143.

    IMAPStore

    Bagian ini membuat "remote store" yang tertaut ke Akun IMAPAccount.

    • Account : Tetapkan ke nama IMAPAccount yang Anda tentukan di atas.

    MaildirStore

    Bagian ini membuat "penyimpanan lokal," atau Maildir, di komputer Anda.

    • Path: Jalur ke direktori email lokal Anda, biasanya termasuk subdirektori untuk akun tersebut (misalnya, ~/Mail/).

    • Inbox: Menentukan lokasi kotak masuk dalam Maildir lokal Anda.

    • Subfolder: Verbatim adalah pilihan default yang baik, karena memberi tahu mbsync untuk mempertahankan struktur folder dari server.

    Channel

    Bagian ini menghubungkan penyimpanan remote dan lokal serta menentukan cara sinkronisasinya.

    • Far: Nama penyimpanan jarak jauh (misalnya, :personal-remote:).

    • Near: Nama penyimpanan lokal (misalnya, :personal-local:).

    • Pattern: Gunakan * untuk menyinkronkan semua folder. Anda juga dapat menentukan folder yang akan disertakan atau dikecualikan (misalnya, Pola * ! "[Gmail]/Spam" untuk mengecualikan folder spam Gmail).

    • Create: Keduanya akan membuat kotak surat yang hilang di sisi lokal dan jarak jauh.

    • Sync: Pull atau Push mengontrol arah. Sync All akan menyinkronkan kedua arah.

    • Expunge: Keduanya akan menghapus pesan yang ditandai untuk dihapus secara permanen di kedua sisi. Ini adalah perilaku yang disarankan untuk sinkronisasi dua arah.

    Contoh ``~/.mbsyncrc``

    Berikut adalah contoh lengkap untuk akun Gmail, dengan komentar untuk memandu Anda.

    # Account name is 'personal'
    IMAPAccount personal
    Host imap.gmail.com
    User your.email@gmail.com
    # Use 'PassCmd' to read the password securely from another file.
    # Create a file at ~/.mbsync_pass with only your password inside.
    PassCmd "cat ~/.mbsync_pass"
    SSLType IMAPS
    AuthMechs LOGIN
    
    # Define the remote IMAP store for the account
    IMAPStore personal-remote
    Account personal
    
    # Define the local Maildir store
    MaildirStore personal-local
    Path ~/Mail/
    Inbox ~/Mail/INBOX
    Subfolders Verbatim
    
    # Define the channel that links the stores
    Channel personal
    Far :personal-remote:
    Near :personal-local:
    # Sync all folders except the Gmail Spam folder
    Patterns * ![Gmail]/Spam
    Create Both
    Expunge Both
    SyncState *
    Sync All
    
    # Optional: Add a group to sync all channels at once
    Group All
    Channel personal
    
  4. Set up a secure password file

    Menggunakan file terpisah yang dibatasi izinnya untuk kata sandi Anda jauh lebih aman daripada memasukkannya dalam file mbsyncrc.

    1. Buat berkas password:

      echo "your_app_password" > ~/.mbsync_pass
      
    2. Restrict permissions:

      chmod 600 ~/.mbsync_pass
      

      Ini memastikan bahwa hanya Anda yang dapat membaca atau menulis ke berkas ini.

  5. Jalankan sync

    Setelah berkas konfigurasi disiapkan, Anda dapat menjalankan sinkronisasi pertama.

    • Sync all channels:

      mbsync -a
      
    • Sync a single channel (e.g., personal):

      mbsync personal
      

    Sinkronisasi awal mungkin memakan waktu lama, karena akan mengunduh semua pesan dan membuat struktur Maildir lokal.

OfflineIMAP

OfflineIMAP dirancang untuk menyinkronkan email dari server IMAP secara headless, seperti Gmail, ke penyimpanan lokal. Anda kemudian dapat memproses email yang diunduh menggunakan skrip atau alat baris perintah standar.

Instalasi

sudo apt install offlineimap

Konfigurasi

[general]
accounts = Gmail

[Account Gmail]
localrepository = Local
remoterepository = Remote

[Repository Local]
type = Maildir
localfolders = ~/.mail/

[Repository Remote]
type = Gmail
remoteuser = emailanda@gmail.com
remotepass = sandiapplikasi
ssl = yes
sslcacertfile = /etc/ssl/certs/ca-certificates.crt

Jika masih bermasalah dengan SSL, lakukan pembaharuan certificates

sudo update-ca-certificates

Sinkronisasi

Jalankan offlineimap di terminal untuk mengunduh email dari Gmail ke folder ~/.mail/ Anda.

Membaca Email

Setelah sinkronisasi, gunakan alat baris perintah standar seperti grep atau cat untuk membaca email yang disimpan secara lokal. Misalnya

cat ~/.mail/INBOX/cur/* | less

mu

sudo apt install maildir-utils

Konfigurasi

  1. Inisialisasi database

    #OfflineIMAP
    mu init --maildir=~/.mail
    
    atau
    
    #Mbsync
    mu init --maildir=~/Mail --my-address=<your-email@example.com>
    
    • --maildir=~/.mail Opsi ini memberitahu mu untuk mencari email Anda di direktori ~/.mail/. Ganti ~/.mail dengan lokasi yang tepat untuk direktori Maildir Anda.

  2. Indeks email Anda

    Setelah inisialisasi, jalankan mu index untuk membuat atau memperbarui indeks email Anda.

    mu index
    

    mu akan memproses semua file email di direktori Maildir yang telah Anda tentukan dan membangun indeks basis data.

mu view

Sintaks dasar

mu view /path/ke/file/email

mu command

https://manpages.debian.org/trixie/maildir-utils/mu.1.en.html

cmd

desc

add

add specific messages to the database.

cfind

find contacts

extract

extract attachments and other MIME-parts

find

find messages in the database

help

get help for some command

index

(re)index the messages in a Maildir

info

show information about the mu database

init

initialize the mu database

mkdir

create a new Maildir

remove

remove specific messages from the database

server

start a server process (for mu4e-internal use)

view

view a specific message

Find all unread emails

Gunakan mu find dengan kueri flag:n untuk mencari pesan dengan flag "baru". Opsi d f s menentukan kolom mana yang akan ditampilkan (tanggal, dari, subjek).

mu find flag:n --fields="d f s"

View a specific email:

mu view ~/Mail/INBOX/<message_filename>

mblaze

https://git.vuxu.org/mblaze/about/

mblaze adalah kumpulan utilitas gaya Unix yang dirancang untuk mengelola email secara modular dan langsung. Filosofinya adalah memiliki banyak perkakas kecil, masing-masing melakukan satu tugas dengan baik, yang dapat digabungkan dalam pipeline.

  • Berorientasi Perkakas: Terdiri dari banyak utilitas terpisah seperti maddr, magrep, mless, mflag, mrefile, msort, dan lainnya.

  • Akses Langsung: Utilitas mblaze beroperasi secara langsung pada file dalam Maildir Anda, tanpa menggunakan database atau cache tambahan. Ini berarti tidak diperlukan pengindeksan, yang menyederhanakan penyiapan.

  • Performa: Karena tidak mengindeks, mblaze sangat efisien untuk operasi kecil pada satu atau beberapa pesan. Namun, operasi yang melibatkan pemindaian semua pesan (seperti pencarian) bisa lebih lambat dibandingkan dengan mu.

  • Alur Kerja Berbasis Pipa (Pipeline): Ideal untuk alur kerja yang melibatkan penggabungan banyak perintah, misalnya, mencari pesan (magrep), memfilter (mpick), dan kemudian memindahkannya (mrefile) dalam satu baris perintah.

  • Desain Minimalis: Terinspirasi oleh sistem penanganan pesan MH, tetapi diimplementasikan dari awal.

mu vs mblaze

Fitur

mu

mblaze

Fokus Utama

Pengindeksan dan pencarian cepat.

Perkakas modular untuk memanipulasi file Maildir.

Kecepatan

Sangat cepat untuk pencarian kueri kompleks karena menggunakan database.

Sangat cepat untuk operasi individual, tetapi lebih lambat untuk pencarian global tanpa pengindeksan.

Dependensi

Bergantung pada database yang dibuat oleh mu index.

Beroperasi langsung pada file Maildir tanpa database.

Modularity

Utilitas serbaguna (find, move, view).

Koleksi perkakas kecil yang dapat digabungkan (magrep, mless, mflag).

Kapan Digunakan

Untuk mencari di arsip email yang besar dan untuk integrasi dengan klien seperti mu4e.

Untuk alur kerja skrip dan interaksi langsung dengan pesan, atau jika Anda lebih suka tidak menggunakan pengindeksan.

Instalasi mblaza

  1. Install paket mblaze

    sudo apt install mblaze
    
  2. Verifikasi instalasi

    mblaze
    

    Jika instalasi berhasil, Anda akan melihat daftar perkakas yang tersedia.

  3. Konfigurasi awal (opsional)

    mblaze dirancang untuk beroperasi langsung pada folder Maildir Anda tanpa memerlukan konfigurasi khusus. Namun, Anda dapat membuat file konfigurasi profil di ~/.mblaze/profile untuk menyesuaikan beberapa perilaku, seperti alamat email default atau folder outbox.

    Contoh file ~/.mblaze/profile

    Local-Mailbox: your.email@example.com
    Outbox: ~/Maildir/Outbox
    

How to use mblaze

mblaze: command not found setelah apt install mblaze berhasil. adalah masalah umum dengan paket khusus ini. Paket ini memiliki struktur yang berbeda dari kebanyakan alat baris perintah. Alih-alih satu executable mblaze yang menjalankan subperintah, mblaze merupakan kumpulan utilitas terpisah yang memiliki satu tujuan, seperti mscan, mcom, dan mless. Tidak ada perintah mblaze utama.

Persiapan

Sebelum menggunakan mblaze, pastikan Anda telah menyinkronkan email ke Maildir lokal Anda menggunakan alat seperti mbsync atau offlineimap. Contoh di bawah ini mengasumsikan Maildir Anda ada di ~/Mail.

  1. Melihat ringkasan email baru

    Untuk mendapatkan ringkasan email baru yang belum dibaca, gunakan perintah mscan.

    # Pindai folder "new" di Maildir dan tampilkan ringkasannya
    mscan ~/Mail/INBOX/new
    

    Perintah ini akan menampilkan daftar setiap email baru dengan informasi satu baris, seperti pengirim dan subjek.

  2. Mencari email

    Untuk mencari pesan berdasarkan pola, gunakan magrep.

    # Cari semua email di INBOX yang berisi kata "laporan"
    magrep "laporan" ~/Mail/INBOX
    

    Anda juga bisa menggunakan ekspresi reguler untuk pencarian yang lebih spesifik:

    # Cari email dari alamat "admin@example.com"
    magrep -i 'From:.*admin@example.com' ~/Mail/INBOX
    
  3. Membaca email

    Untuk melihat isi email, gunakan mless. Anda perlu memberikan nama file email secara spesifik

    # Cari email terbaru dan baca isinya
    mlist ~/Mail/INBOX | mless
    

    Secara interaktif, Anda dapat melakukan ini:

    • Jalankan mscan ~/Mail/INBOX untuk melihat daftar email.

    • Salin nama file dari email yang ingin Anda baca.

    • Jalankan mless ~/Mail/INBOX/<nama_file_email>

  4. Menyortir dan memfilter

    Perkakas mblaze dirancang untuk bekerja dengan baik dalam pipeline. Contoh berikut menunjukkan cara menggabungkan beberapa perintah.

    # Daftar email di INBOX, urutkan berdasarkan tanggal (terbaru) dan tampilkan ringkasannya
    mlist ~/Mail/INBOX | msort -d | mscan
    
    # Daftar email di INBOX, urutkan berdasarkan tanggal (terbaru) dan tampilkan ringkasannya
    mlist ~/Mail/INBOX | msort -d | mscan
    
  5. Memindahkan atau menyalin email

    Untuk memindahkan atau menyalin email dari satu folder ke folder lain, gunakan mrefile.

    # Pindahkan semua email baru dari INBOX ke folder "cur" (menggabungkan mlist dan mrefile)
    mlist ~/Mail/INBOX/new | mrefile ~/Mail/INBOX/cur
    
  6. Memanipulasi flag pesan

    Untuk mengubah flag pesan Maildir (misalnya, menandai email sebagai sudah dibaca), gunakan mflag.

    # Tandai semua pesan baru di INBOX sebagai sudah dibaca
    mlist ~/Mail/INBOX/new | mflag +S
    
  7. Mengintegrasikan dengan less

    Secara default, mblaze akan menggunakan less saat Anda membaca email. Ini memungkinkan Anda untuk navigasi di dalam email menggunakan perintah less.

    # Gunakan mless untuk membaca email
    mless ~/Mail/INBOX/<nama_file_email>
    

Tips

  • Menggunakan pipeline: Kunci penggunaan mblaze adalah menggabungkan perintah-perintah kecil menggunakan simbol pipa (|).

  • Alihkan ke ``mblaze``: Jika Anda sering menggunakan mblaze untuk satu Maildir, alihkan direktori ke sana terlebih dahulu agar perintah menjadi lebih pendek. Misalnya: cd ~/Mail/INBOX lalu jalankan mscan atau mlist.

  • Baca manual: Setiap perkakas mblaze memiliki halaman manualnya sendiri. Untuk mendapatkan informasi lebih lanjut tentang suatu perintah, jalankan man <nama_perintah>, contohnya man mscan atau man mrefile.

mblaze command lists

mblaze terdiri dari utilitas Unix berikut yang masing-masing melakukan satu pekerjaan:

cmd

deskripsi

maddr(1)

extract mail addresses from messages

magrep(1)

search messages matching a pattern

mbnc(1)

bounce messages

mcom(1)

compose and send messages

mdeliver(1)

deliver messages or import mbox file

mdirs(1)

list maildir folders, recursively

mexport(1)

export messages as mbox file

mflag(1)

manipulate maildir message flags

mflow(1)

reflow format=flowed plain text messages

mfwd(1)

forward messages

mgenmid(1)

generate a Message-ID

mhdr(1)

print message headers

minc(1)

incorporate new messages

mless(1)

conveniently read messages in less(1)

mlist(1)

list and filter messages

mmime(1)

create MIME messages

mmkdir(1)

create new maildir folders

mpick(1)

advanced message filter

mrefile(1)

move or copy messages between maildir folders

mrep(1)

reply to messages

mscan(1)

generate one-line message summaries

msed(1)

manipulate message headers

mseq(1)

manipulate message sequences

mshow(1)

render messages and extract MIME parts

msort(1)

sort messages

mthread(1)

arrange messages into discussions