Apakah ada cara untuk memfilter email di akun IMAP jarak jauh?

9

Situasi: server email dengan akses hanya IMAP. Masalah: Saya ingin dapat memfilter email (letakkan beberapa surat ke berbagai folder, tandai sebagai sudah dibaca dan sebagainya).

Sebagian besar klien email baru memiliki kemampuan ini, tetapi saya ingin program penyaringan mandiri, karena saya perlu menggunakan berbagai klien email untuk terhubung ke server ini.

Umumnya - sesuatu seperti procmail, tetapi bekerja di IMAP.

Perangkat lunak akan dijalankan di Linux atau Solaris.


sumber

Jawaban:

8

Google cepat memunculkan IMAPFilter yang sepertinya melakukan apa yang Anda inginkan:

  • Pencarian pesan menggunakan banyak kriteria yang tersedia dalam protokol IMAP, seperti:
    • Status (baru-baru ini, belum dibaca, dll.) Dari sebuah pesan.
    • Ukuran pesan.
    • Usia pesan.
    • Pencocokan string atau pola ekspresi reguler di header atau badan pesan.
  • Kemampuan untuk menggunakan operator logis (dan / atau / tidak) saat mencari pesan.
  • Kemampuan berbeda tersedia untuk memproses pesan, termasuk:
    • Menghapus pesan.
    • Memindahkan pesan ke kotak surat di server yang sama atau berbeda
    • Menyalin pesan ke kotak surat di server yang sama atau berbeda.
    • Menandai pesan atau mengubah tanda pesan.
  • Daftar kotak surat yang tersedia dan / atau berlangganan, bersama dengan dukungan untuk ekstensi IMAP CHILDREN.
  • Membuat, menghapus, mengganti nama, berlangganan atau berhenti berlangganan kotak surat
  • Dukungan internasionalisasi (I18N).
  • Dukungan namespace server menggunakan ekstensi IMAP NAMESPACE.
  • Koneksi Secure Socket Layer (SSL) atau Transport Layer (TLS) terenkripsi (port 993).
  • Koneksi terenkripsi menggunakan ekstensi IMAP STARTTLS.
  • Otentikasi pengguna dengan Challenge-Response Authentication Mechanism (CRAM), khususnya CRAM-MD5.
  • Dukungan Perl Kompatibel Regular Expressions (PCRE).
TRS-80
sumber
1

Tergantung pada server IMAP Anda, Anda bisa menggunakan beberapa implementasi ayakan . Saya pikir dukungan terbaik untuk ayakan disediakan oleh cyrus.

innaM
sumber
Nah - solusi yang saya cari tidak dapat bergantung pada server. Saya harus mengasumsikan server hanya IMAP bodoh, tanpa dukungan apa-apa pintar.
1

Seperti yang telah Anda sebutkan, procmail adalah cara yang tepat untuk melakukan ini, jadi Anda bisa bertanya kepada penyedia email Anda apakah mereka mendukungnya untuk berjaga-jaga - tidak ada salahnya.

Kalau tidak, mungkin cara termudah adalah memiliki klien email yang selalu terbuka yang melakukan penyortiran dll. Dulu ada masalah penguncian dengan beberapa klien yang mengakses kotak surat IMAP yang sama, tapi saya belum pernah melihatnya selama bertahun-tahun.

Marie Fischer
sumber
Ini bukan jawabannya. Pemfilteran harus terjadi di server IMAP, di mana Anda tidak memiliki kendali.
reinierpost
1

Untuk kelembutan belaka, Anda bisa mencoba Sift .

David North
sumber
Saya berharap saya telah mencoba ini sebelum imapfilter.
Joshua K
Ini tampaknya ditinggalkan dan tidak dirawat, tidak seperti imapfilter. Koreksi saya jika saya salah.
selurvedu
0

Pada sistem operasi Linux dan Unix, Anda dapat menggunakan fetchmailuntuk polling akun email IMAP Anda, dan meneruskan pesan baru apa pun procmail. Anda bisa mengonfigurasi procmail untuk menjalankan skrip berdasarkan pencocokan pola ekspresi reguler dalam pesan yang diterima.

Untuk melakukan ini, Anda harus menginstal paket fetchmail dan procmail. Konfigurasi berikut memungkinkan saya untuk menjalankan skrip untuk setiap pesan email baru diterima di akun email saya. Saya menggunakan Ubuntu 12,04 LTS.

Dalam ~/.fetchmailrc:

# .fetchmailrc checks my e-mail account for new messages, sends them to procmail

set logfile /home/myusername/fetchmail.log

poll mail.domain.com protocol IMAP
    user "emailaccountname"
    password 'emailpassword'
    folder 'INBOX'
    keep
    ssl
    mda "/usr/bin/procmail -f %F"

Perhatikan keeparahan di atas, yang memastikan bahwa pesan tidak dihapus dari server IMAP setelah diambil.

Dalam ~/.procmailrc:

# .procmailrc received e-mails from fetchmail and runs a script
PATH=/usr/bin:/usr/local/bin
LOGFILE=/home/username/procmail.log
SHELL=/bin/sh

# This rule triggers for every e-mail message:
:0
| `/home/username/myscript.sh`

Ada banyak tutorial online untuk fetchmail dan procmail, dan juga tutorial untuk mengintegrasikan keduanya (begitulah cara saya menemukan hal di atas).

Sekarang jika saya menjalankan fetchmailatau fetchmail -vskrip /home/username/myscript.shberjalan sekali untuk setiap pesan baru. Saya dapat menjalankan fetchmail dalam cron, atau mengkonfigurasi fetchmail untuk dijalankan sebagai daemon dengan set daemon 600direktif dalam .fetchmailrc( di mana 600 adalah jumlah detik di antara jajak pendapat).

Steve HHH
sumber
Ini bukan jawabannya. Pemfilteran harus terjadi di server IMAP.
reinierpost