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.
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 |
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¶
Buat berkas konfigurasi.
mbsyncmenggunakan berkas konfigurasi, biasanya terletak di~/.mbsyncrc.touch ~/.mbsyncrcTambahkan rincian akun Anda ke file
~/.mbsyncrc, termasuk server IMAP penyedia email Anda, nama pengguna, dan kata sandi Anda.Jalankan perintah sinkronisasi. Setelah mengonfigurasi berkas, Anda dapat menjalankan
mbsyncuntuk mulai menyinkronkan email Anda.
Berikut adalah panduan untuk mengonfigurasi mbsync untuk menyinkronkan email Anda, termasuk contoh lengkap untuk pengaturan umum.
Buat direktori Maildir
Pertama, buat direktori dasar pada komputer lokal Anda tempat email Anda akan disimpan.
mbsyncakan mencerminkan struktur folder IMAP Anda ke direktori ini.mkdir -p ~/Mail/personal
Buat file konfigurasi
Berkas konfigurasi untuk
mbsyncbernama.mbsyncrcdan terletak di direktori home Anda (~/.mbsyncrc).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:Verbatimadalah pilihan default yang baik, karena memberi tahumbsyncuntuk 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:PullatauPushmengontrol arah.Sync Allakan 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
Set up a secure password file
Menggunakan file terpisah yang dibatasi izinnya untuk kata sandi Anda jauh lebih aman daripada memasukkannya dalam file
mbsyncrc.Buat berkas password:
echo "your_app_password" > ~/.mbsync_pass
Restrict permissions:
chmod 600 ~/.mbsync_pass
Ini memastikan bahwa hanya Anda yang dapat membaca atau menulis ke berkas ini.
Jalankan sync
Setelah berkas konfigurasi disiapkan, Anda dapat menjalankan sinkronisasi pertama.
Sync all channels:
mbsync -aSync 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¶
Inisialisasi database
#OfflineIMAP mu init --maildir=~/.mail atau #Mbsync mu init --maildir=~/Mail --my-address=<your-email@example.com>
--maildir=~/.mailOpsi ini memberitahu mu untuk mencari email Anda di direktori ~/.mail/. Ganti ~/.mail dengan lokasi yang tepat untuk direktori Maildir Anda.
Indeks email Anda
Setelah inisialisasi, jalankan
mu indexuntuk membuat atau memperbarui indeks email Anda.mu indexmuakan 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 specific messages to the database. |
|
find contacts |
|
extract attachments and other MIME-parts |
|
find messages in the database |
|
get help for some command |
|
(re)index the messages in a Maildir |
|
show information about the mu database |
|
initialize the mu database |
|
create a new Maildir |
|
remove specific messages from the database |
|
start a server process (for mu4e-internal use) |
|
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
mblazeberoperasi 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,
mblazesangat efisien untuk operasi kecil pada satu atau beberapa pesan. Namun, operasi yang melibatkan pemindaian semua pesan (seperti pencarian) bisa lebih lambat dibandingkan denganmu.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 |
Beroperasi langsung pada file Maildir tanpa database. |
Modularity |
Utilitas serbaguna ( |
Koleksi perkakas kecil yang dapat digabungkan ( |
Kapan Digunakan |
Untuk mencari di arsip email yang besar dan untuk integrasi dengan klien seperti |
Untuk alur kerja skrip dan interaksi langsung dengan pesan, atau jika Anda lebih suka tidak menggunakan pengindeksan. |
Instalasi mblaza¶
Install paket
mblazesudo apt install mblaze
Verifikasi instalasi
mblaze
Jika instalasi berhasil, Anda akan melihat daftar perkakas yang tersedia.
Konfigurasi awal (opsional)
mblazedirancang untuk beroperasi langsung pada folder Maildir Anda tanpa memerlukan konfigurasi khusus. Namun, Anda dapat membuat file konfigurasi profil di~/.mblaze/profileuntuk 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.
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.
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
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>
Menyortir dan memfilter
Perkakas
mblazedirancang 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
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
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
Mengintegrasikan dengan less
Secara default,
mblazeakan menggunakanlesssaat Anda membaca email. Ini memungkinkan Anda untuk navigasi di dalam email menggunakan perintahless.# Gunakan mless untuk membaca email mless ~/Mail/INBOX/<nama_file_email>
Tips¶
Menggunakan pipeline: Kunci penggunaan
mblazeadalah menggabungkan perintah-perintah kecil menggunakan simbol pipa (|).Alihkan ke ``mblaze``: Jika Anda sering menggunakan
mblazeuntuk satu Maildir, alihkan direktori ke sana terlebih dahulu agar perintah menjadi lebih pendek. Misalnya:cd ~/Mail/INBOXlalu jalankan mscan ataumlist.Baca manual: Setiap perkakas
mblazememiliki halaman manualnya sendiri. Untuk mendapatkan informasi lebih lanjut tentang suatu perintah, jalankanman <nama_perintah>, contohnyaman mscanatauman 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