Có cách nào để lọc thư trong tài khoản IMAP từ xa không?


9

Tình huống: máy chủ thư chỉ có quyền truy cập IMAP. Vấn đề: Tôi muốn có thể lọc thư (đặt một số thư vào các thư mục khác nhau, đánh dấu chúng là đã đọc và vv).

Hầu hết các ứng dụng email mới đều có khả năng này, nhưng tôi muốn có một chương trình lọc độc lập, vì tôi cần sử dụng nhiều ứng dụng email khác nhau để kết nối với máy chủ này.

Nói chung - một cái gì đó giống như procmail, nhưng hoạt động trên IMAP.

Phần mềm sẽ được chạy trên Linux hoặc Solaris.


Câu trả lời:


8

Một google nhanh chóng đưa ra IMAPFilter trông giống như nó làm những gì bạn muốn:

  • Tìm kiếm thư bằng nhiều tiêu chí có sẵn trong giao thức IMAP, chẳng hạn như:
    • Trạng thái (gần đây, chưa đọc, v.v.) của một tin nhắn.
    • Kích thước của một tin nhắn.
    • Tuổi của một tin nhắn.
    • Khớp chuỗi hoặc mẫu biểu thức chính quy trong các tiêu đề hoặc phần thân của tin nhắn.
  • Khả năng sử dụng các toán tử logic (và / hoặc / không) trong khi tìm kiếm tin nhắn.
  • Các khả năng khác nhau có sẵn để xử lý tin nhắn, bao gồm:
    • Xóa tin nhắn.
    • Di chuyển thư đến hộp thư trong cùng một máy chủ hoặc khác nhau
    • Sao chép thư vào hộp thư trong cùng một máy chủ hoặc khác nhau.
    • Đánh dấu tin nhắn hoặc thay đổi cờ tin nhắn.
  • Danh sách các hộp thư có sẵn và / hoặc đã đăng ký, cùng với sự hỗ trợ cho tiện ích mở rộng TRẺ EM IMAP.
  • Tạo, xóa, đổi tên, đăng ký hoặc hủy đăng ký hộp thư
  • Hỗ trợ quốc tế hóa (I18N).
  • Hỗ trợ không gian tên máy chủ bằng cách sử dụng tiện ích mở rộng NAMESPACE IMAP.
  • Các kết nối imaps được mã hóa lớp bảo mật (SSL) hoặc lớp bảo mật (TLS) (cổng 993).
  • Các kết nối được mã hóa bằng tiện ích mở rộng STARTTLS IMAP.
  • Xác thực người dùng với Cơ chế xác thực phản hồi thử thách (CRAM), cụ thể là CRAM-MD5.
  • Hỗ trợ biểu thức tương thích thường xuyên (PCRE) Perl.

1

Tùy thuộc vào máy chủ IMAP của bạn, bạn chỉ cần sử dụng một số cách thực hiện sàng . Tôi nghĩ rằng sự hỗ trợ tốt nhất cho sàng được cung cấp bởi cyrus.


Chà - giải pháp tôi đang tìm kiếm không thể phụ thuộc vào bất kỳ cách nào trên máy chủ. Tôi phải cho rằng máy chủ chỉ là một IMAP câm, không có hỗ trợ cho không có gì thông minh.

1

Như bạn đã đề cập, procmail là cách phù hợp để làm điều này, vì vậy bạn có thể hỏi nhà cung cấp email của mình nếu họ hỗ trợ nó trong trường hợp - không làm tổn thương.

Mặt khác, có lẽ cách dễ nhất là để một ứng dụng email luôn mở, sắp xếp, v.v. Đã từng có vấn đề về việc khóa nhiều khách hàng truy cập vào cùng một hộp thư IMAP, nhưng tôi đã không thấy chúng trong nhiều năm.


Đây không phải là câu trả lời. Việc lọc phải diễn ra trên máy chủ IMAP mà bạn không kiểm soát được.
rebierpost

1

Đối với độ nhẹ tuyệt đối, bạn có thể thử Sift .


tôi ước tôi đã thử điều này trước khi imapfilter.
Joshua K

Điều này dường như bị bỏ rơi và không rõ ràng, không giống như imapfilter. Sửa tôi nếu tôi sai.
selurvedu


0

Trên hệ điều hành Linux và Unix, bạn có thể sử dụng fetchmailđể thăm dò tài khoản e-mail IMAP của mình và chuyển bất kỳ thư mới nào tới procmail. Bạn có thể định cấu hình procmail để chạy các tập lệnh dựa trên các mẫu biểu thức thông thường khớp trong các tin nhắn nhận được.

Để làm điều này, bạn sẽ cần cài đặt các gói fetchmail và procmail. Cấu hình sau đây cho phép tôi chạy tập lệnh cho mỗi tin nhắn e-mail mới được nhận trong tài khoản e-mail của mình. Tôi đã sử dụng Ubuntu 12.04 LTS.

Trong ~/.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"

Lưu ý keepchỉ thị ở trên, đảm bảo rằng các tin nhắn không bị xóa khỏi máy chủ IMAP sau khi chúng được truy xuất.

Trong ~/.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`

Có rất nhiều hướng dẫn trực tuyến cho fetchmail và procmail, và cũng có hướng dẫn về cách tích hợp cả hai (đó là cách tôi nghĩ ra ở trên).

Bây giờ nếu tôi chạy fetchmailhoặc fetchmail -vtập lệnh /home/username/myscript.shchạy một lần cho mỗi tin nhắn mới. Tôi có thể chạy fetchmail trong một cron hoặc cấu hình fetchmail để chạy như một daemon với lệnh set daemon 600trong .fetchmailrc( trong đó 600 là số giây giữa các cuộc thăm dò).


Đây không phải là câu trả lời. Việc lọc phải diễn ra trên máy chủ IMAP.
rebierpost
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.