1 điểm bởi GN⁺ 2024-08-24 | 1 bình luận | Chia sẻ qua WhatsApp
  • Aerc là một trình khách email TUI trẻ hơn nhiều so với Pine và Mutt, nhưng đã đạt tới mức độ trưởng thành và tính năng đủ để cân nhắc dùng hằng ngày
  • Nhờ trợ giúp dựa trên man page như :helpaerc-tutorial (7), có thể nhanh chóng học cách cấu hình và các key binding mà không cần tài liệu bên ngoài
  • Tài khoản được quản lý bằng trình hướng dẫn và tệp cấu hình INI ~/.config/aerc/accounts.conf, đồng thời có thể sắp xếp nhất quán cả các cấu trúc thư mục khác nhau giữa các máy chủ
  • Với email HTML vốn khó xử lý trong TUI, có thể điều chỉnh cách hiển thị bằng w3m, dante, :open và các bộ lọc tùy biến dựa trên MIME và header
  • Có thể kết hợp soạn thư bằng Vim, sổ địa chỉ ngoài, PGP, chữ ký, mẫu thư và cảnh báo tệp đính kèm để tạo nên một quy trình email xoay quanh terminal linh hoạt

Vị trí của Aerc và ấn tượng ban đầu

  • Aerc là một trình khách email TUI và bản phát hành đầu tiên của nó là khoảng 4 năm trước
  • Pine phát hành năm 1992, Mutt phát hành năm 1995, nên so với các trình khách email terminal hiện có thì Aerc là một dự án rất trẻ
  • Ban đầu tác giả khá hài lòng với Thunderbird và thấy Aerc có vẻ là một công cụ hơi cơ bản nên không dùng, nhưng khi xem lại gần đây thì nó có vẻ đã đủ trưởng thành và đủ tính năng để dùng làm trình khách hằng ngày
  • Vì từng nhiều lần thử neomutt rồi nhanh chóng nản và bỏ cuộc, tác giả hầu như cũng không kỳ vọng gì vào Aerc, nhưng trải nghiệm thực tế lại vượt kỳ vọng và là một trong những trình khách email mang lại cảm giác thích thú nhất từ trước đến nay
  • Dù còn quá sớm để kết luận nó tốt hơn các trình khách email khác, nhưng kết quả sau vài ngày sử dụng là rất tích cực

Tài liệu và trợ giúp tích hợp

  • Aerc có trợ giúp tích hợp truy cập bằng lệnh :help
  • Phần hướng dẫn giới thiệu ngắn gọn các tính năng chính và key binding cần thiết để thiết lập nhanh
  • Các trang trợ giúp khác cũng trình bày từng phần của ứng dụng một cách ngắn gọn, rõ ràng, nên dễ học tính năng mà không cần tài liệu ngoài
  • Tài liệu trợ giúp có dạng man page được pipe qua less
    • Ví dụ: aerc-tutorial (7)
    • Đây là một cách đưa hệ thống trợ giúp có tính di động vào bên trong ứng dụng TUI

Cấu hình tài khoản và quản lý thư mục

  • Có thể thêm tài khoản bằng một trình hướng dẫn đơn giản và trực quan
  • Trình hướng dẫn sẽ tạo mục tài khoản mới trong ~/.config/aerc/accounts.conf
  • Tệp này dùng cú pháp INI nên dễ đọc và chỉnh sửa
  • Cấu hình tài khoản có thể bao gồm địa chỉ IMAP/SMTP, thư mục mặc định, người gửi, nơi lưu bản sao thư đã gửi, bộ nhớ đệm header, sắp xếp thư mục, lưu trữ, chu kỳ kiểm tra thư và tệp ánh xạ thư mục
  • folders-sort

    • folders-sort là tùy chọn ghi đè việc sắp xếp tự động cho một số thư mục cụ thể
    • Những thư mục được chỉ định sẽ hiển thị ở đầu danh sách theo đúng thứ tự cung cấp, còn lại sẽ được sắp xếp theo alphabet
    • Tác giả chưa từng thấy tính năng này trong các trình khách đồ họa như Thunderbird hay Outlook, nhưng có vẻ là tính năng mà mọi trình khách email đều nên có
  • folder-map

    • folder-map ánh xạ cấu trúc thư mục máy chủ khác nhau của từng nhà cung cấp email sang tên thư mục dùng để hiển thị
    • Gmail đặt mọi thứ dưới thư mục [Gmail], một số nhà cung cấp đặt SentDrafts dưới INBOX, còn một số khác thì không
    • Cấu trúc thư mục do máy chủ cung cấp rất khó thay đổi nếu bạn không trực tiếp quản trị máy chủ email
    • Aerc dùng tệp quy tắc ánh xạ để đổi thư mục máy chủ sang tên thư mục hiển thị
      • Có thể ánh xạ lại một thư mục đơn lẻ
      • Có thể ánh xạ lại một thư mục cùng toàn bộ thư mục con của nó
      • Có thể loại bỏ tiền tố khỏi mọi thư mục con
      • Có thể ánh xạ lại thư mục con mà vẫn tránh xung đột thư mục
    • Tính năng này cho phép làm việc với cấu trúc thư mục nhất quán trên mọi tài khoản bất kể cấu trúc máy chủ ra sao
    • Khi quản lý email bằng CLI thay vì GUI, kiểu nhất quán này đặc biệt quan trọng

Đọc email và xử lý HTML

  • Trải nghiệm đọc email nhìn chung khá bình thường, và nguyên nhân chính gây bất tiện nằm ở email HTML hơn là ở chính Aerc
  • Với đa số email multipart, bản văn bản thuần thường khó đọc hơn bản HTML
  • Thông thường vẫn có thể hiểu được ý chính, nhưng đôi khi nội dung có thể trông bị trộn lẫn
  • Aerc cung cấp một vài lựa chọn để giảm vấn đề này
    • Có thể xem qua bộ phân tích HTML/trình duyệt bằng tổ hợp w3mdante
    • Ở một số email, đầu ra tạo ra tốt hơn bản văn bản thuần
    • Như giải pháp cuối cùng, có thể dùng :open để mở trong trình duyệt web mặc định
  • Cách hiển thị được cấu hình bằng bộ lọc tùy biến
    • Bộ lọc là pipeline kiểu *nix mà thông điệp sẽ đi qua trước khi được hiển thị
    • Bộ lọc mặc định hỗ trợ tô màu văn bản thuần, mục lịch và email HTML
    • Có thể cấu hình bộ lọc theo kiểu MIME, và cũng có thể khớp với các header cụ thể
    • Cấu hình ví dụ gồm các mục như text/plain=colorize, text/calendar=calendar, text/html=html | colorize

Soạn email và sổ địa chỉ

  • Trải nghiệm soạn email rất tốt, và việc có thể soạn thư trong Vim là một ưu điểm lớn
  • Tích hợp sổ địa chỉ

    • Sổ địa chỉ được thiết kế theo hướng giao cho chương trình bên ngoài thay vì quản lý trực tiếp bên trong Aerc
    • Người dùng chỉ định truy vấn tìm kiếm sẽ gửi đến chương trình sổ địa chỉ, và kết quả được dùng cho tự động hoàn thành trong các trường header liên quan
    • Chương trình mặc định là abook
    • Theo thử nghiệm của tác giả, abook không hỗ trợ tên có ký tự không phải ASCII, và nếu thường xuyên trao đổi email với người dùng tiếng Đức thì hạn chế này là rất nghiêm trọng
    • Cũng không có cách dễ dàng để phân tích địa chỉ từ toàn bộ email rồi nhập vào abook
    • Tác giả cũng thử aercbook, nhưng vấn đề ký tự không phải ASCII vẫn y hệt
    • Bù lại, aercbook hỗ trợ phân tích địa chỉ email từ mọi trường header
    • emailbook-janet là phiên bản viết lại của aercbook
      • Hiệu năng kém hơn nhưng giải quyết được vấn đề ASCII
      • Có thể dùng key binding để chọn email, phân tích rồi tự động thêm mọi địa chỉ vào sổ địa chỉ
    • emailbook-janetaercbook không hẳn là sổ địa chỉ đầy đủ mà giống các công cụ lưu tên và email để phục vụ tự động hoàn thành
    • Nếu cần sổ địa chỉ mạnh hơn, có thể cân nhắc khard, các giải pháp tương tự hoặc máy chủ LDAP

PGP, chữ ký, mẫu thư và cảnh báo

  • Điểm bất tiện nhất trong hỗ trợ PGP/GPG của Thunderbird là nó dùng một keychain riêng
  • Aerc cũng có keychain riêng nhưng đây là tùy chọn
  • Hành vi mặc định là dùng trực tiếp keychain GPG
  • Có thể chỉ định một key ID cụ thể để ký thư, hoặc để Aerc tìm khóa theo địa chỉ email
  • Cũng có tùy chọn tự động ký mọi email và tùy chọn opportunistic encryption
  • Nếu cấu hình GPG đúng thì hỗ trợ PGP hoạt động trơn tru
  • Các tính năng cấu hình chung

    • Aerc hỗ trợ chữ ký theo từng tài khoản bằng signature-file= để chèn một tệp văn bản
    • Cũng có thể chạy lệnh bên ngoài để tạo chữ ký
    • Nó cũng hỗ trợ mẫu email, dù tác giả chưa tìm hiểu kỹ
    • Nó cố gắng loại bỏ thông minh việc lặp Re: trong tiêu đề thư ở nhiều ngôn ngữ, và dùng biểu thức chính quy cho việc này
    • Có thể ghi đè hoặc mở rộng các biểu thức chính quy đó
    • Nó cũng hỗ trợ kiểm tra tiêu đề trống và cảnh báo tệp đính kèm
      • Kiểm tra tiêu đề trống sẽ xem tiêu đề có bị để trống hay không
      • Cảnh báo tệp đính kèm dựa trên biểu thức chính quy nên rất dễ mở rộng
      • Biểu thức chính quy mặc định là ^[^>]*attach(ed|ment)
      • Nó loại trừ các dòng bắt đầu bằng > để lọc bỏ phần trích dẫn nơi người khác nhắc tới tệp đính kèm
      • Với email tiếng Đức, có thể mở rộng regex để bao gồm an(ge)?h[aä]ngt?
    • Sau vài ngày sử dụng, Aerc tạo cảm giác được trau chuốt rất kỹ và có vẻ là một trình khách email đáng để tiếp tục dùng trong thời gian tới

1 bình luận

 
GN⁺ 2024-08-24
Ý kiến trên Hacker News
  • Tôi đã dùng Aerc từ lâu như ứng dụng email hằng ngày, dùng qua IMAP (Gmail, v.v.), nhưng cũng hoàn toàn có thể dùng tốt với thư mục mail cục bộ
    Vì đã quá tuổi để học key binding mới, tôi đổi key mapping của Aerc sang key binding kiểu Vim, nhờ đó có thể xử lý rất nhiều email cực nhanh
    Tôi đã cấu hình để Gmail và Imapfilter hoạt động đúng, đồng thời tạo các bộ lọc mà tôi luôn thấy thiếu ở các email client trước đây: chẳng hạn bộ lọc theo người gửi hiện tại ff = :filter -f "{{index (.From | emails) 0}}", xem các mail cùng tiêu đề fs = :filter -H subject:"{{.SubjectBase}}", tìm kiếm có chứa tiêu đề fS = :filter -H subject:
    Nếu quan tâm thì tôi sẽ gửi link repo GitHub

    • Tôi tò mò về việc tích hợp Gmail. Tôi từng thử với mutt rồi bỏ cuộc vì không muốn mất cả buổi chiều vật lộn với nó
      Hơn nữa tôi cũng nghe nói Gmail sẽ dần loại bỏ IMAP
    • Đọc bài này làm tôi muốn thử động lại aerc, đặc biệt bộ lọc đầu tiên là chức năng tôi luôn muốn có trong email client
    • https://github.com/rafo/aerc-vim
      Tôi cũng đã thêm xem trước ảnh đính kèm
    • Tôi đặc biệt quan tâm đến key binding Vim. Nếu có cái đó thì có vẻ sẽ dễ bắt đầu hơn nhiều
  • Tôi đã đào rất sâu vào mutt, nhưng cuối cùng đi đến kết luận rằng email client đồ họa phù hợp với nhu cầu của tôi hơn
    Mutt/aerc không hỗ trợ Windows, hệ điều hành tôi ưa dùng hoặc dùng nhiều cho công việc, và việc xem/gửi email HTML cũng còn thiếu. Đồng nghiệp thắc mắc vì sao email của tôi trông kỳ lạ và định dạng khi trả lời bị mất
    Trong Betterbird, kéo thả mail vào thư mục rất nhanh, và không như mutt mất nhiều thời gian để có cấu hình vừa ý, nó chạy được ngay. mbsync hay offlineimap hỗ trợ OAuth yếu, còn Betterbird hỗ trợ sẵn
    Khi cần, tôi cũng có thể Shift+click để trả lời hoặc soạn bằng văn bản thuần. Tôi gần như sống trong terminal, nhưng chuyện này thì dừng ở đây; khoản đầu tư dùng newsboat làm RSS reader đến giờ vẫn ổn
    1: https://www.betterbird.eu/
    2: https://news.ycombinator.com/item?id=39812124
    3: https://isync.sourceforge.io/mbsync.html
    4: https://www.offlineimap.org/

    • Có vẻ Aerc cũng build được trên Windows, chỉ cần Go và make. Betterbird cho tới vài tuần trước cũng chỉ hỗ trợ MacOS, và khi lần đầu đề xuất bản build cho Mac thì bị từ chối vì vấn đề tiền bạc
      Như trong bài viết, Aerc cũng có thể xem email HTML. Di chuyển mail bằng phím cũng có thể nhanh hơn nhiều so với kéo thả chuột, và càng nhanh hơn nếu dùng lặp lại cùng thư mục: dùng kiểu pa = :archive flat, pb = :move Brain, pf = :move
      Cấu hình ít phức tạp hơn mutt rất nhiều, OAuth cũng hoạt động tốt. Betterbird cũng ổn, nhưng tôi không thích việc không dùng được các phím tắt bàn phím của mình
    • Vấn đề thứ hai và thứ ba lần lượt có thể giảm nhẹ bằng các thiết lập như mục mailcap w3m hoặc set send_multipart_alternative_filter=markdown2html.py trong muttrc
      https://gitlab.com/muttmua/mutt/-/blob/master/contrib/markdown2html
    • Windows ngày nay có Hyper-V ở một mức nào đó, có thể chạy VM Linux, và OpenSSH cũng có sẵn mặc định. Để tạo môi trường phù hợp thì cần chỉnh một chút, nhưng không nhiều
      Tôi chỉ dùng Linux nhưng thích GUI, và dùng Evolution kết nối với MS Exchange on-premises. Tôi cũng vận hành email tên miền cá nhân cho bạn bè và gia đình bằng Dovecot, Exim, v.v.
      Tôi chưa biết Betterbird, nhưng đã bookmark để đánh giá thử. Một ngày nào đó chắc phải bỏ Exchange server, và tôi đang mong chờ cuộc thảo luận xem có chuyển sang M365 không. Với tư cách người đại diện đã vận hành hệ thống mail hơn 25 năm, cuối cùng tôi cho rằng Exchange cũng có thể được thay thế bằng tổ hợp IMAPD, MTA và ứng dụng lịch
    • dodo có thể là thứ phù hợp. Về cơ bản nó là email client đồ họa nhưng có nhiều binding Vim, nên là dạng pha trộn ưu điểm của terminal và đồ họa, cảm giác giống qutebrowser dành cho email
      Tuy nhiên có vẻ việc bảo trì đã dừng, và hình như chỉ hỗ trợ backend notmuch
      1: https://github.com/akissinger/dodo
      2: https://qutebrowser.org/
    • Khuynh hướng chính trị của tác giả thì đáng nghi, nhưng tôi đang dùng mutt-wizard, và trong cấu hình đó chỉ cần nhấn v thay vì o là có thể xem mail trong trình duyệt web đang mở
      Với việc đọc email HTML thì như vậy là đủ ổn. Tuy nhiên tôi chỉ dùng cho cá nhân chứ không phải công việc, nên tùy người có thể khác nhau
  • Vì đã chán việc phải mở 5 tab Gmail và 2 tab mail không phải Gmail, tuần này tôi đã thiết lập aerc, đồng bộ mail bằng backend Notmuch cùng lieer cho Gmail và mbsync cho mail không phải Gmail
    Mất khoảng 12 giờ để cấu hình và quen với luồng làm việc, nhưng nó dễ chịu hơn nhiều so với cách làm trước đây. Khác với việc một tab Gmail trong Firefox ngốn hơn 100MB, cấu hình mới nhẹ hơn rất nhiều, tìm kiếm cục bộ cũng nhanh và chất lượng tốt

    • Nếu dùng Notmuch thì tôi khuyên dùng bower. Đây là UI terminal tương tác với notmuch, và có thể cấu hình để hoạt động qua SSH, nên dù DB notmuch nằm trên máy khác, bạn vẫn có thể mở tệp đính kèm trên máy cục bộ
      1: https://github.com/wangp/bower
    • Tôi rất khuyên nên thử notmuch. Từ khi chuyển sang nó khoảng năm 2011, tôi chưa từng quay lại
      Không nhất thiết phải dùng Emacs làm client; có nhiều frontend, gồm cả aerc
      https://notmuchmail.org/frontends/
      Trong số đó, alot có lẽ là cái được biết đến nhiều nhất
      https://github.com/pazz/alot
  • Các mail client UI terminal lúc nào trông cũng hấp dẫn, nhưng tôi nghĩ mình hiểu vì sao trong lòng vẫn có chút kháng cự
    Terminal là không gian thiền của tôi. Đó là sân chơi nơi tôi đến để tập trung sâu và làm những công việc thật sự mình yêu thích
    Đọc hay viết mail là việc lặt vặt như Slack, nên tôi không muốn đưa nó vào terminal của mình

    • Tôi nhìn hơi khác. Việc gì càng giống việc lặt vặt thì tôi càng bị thu hút bởi các công cụ cải thiện trải nghiệm đó
      Tôi nghĩ tách riêng các việc này ra thực ra chỉ củng cố liên tưởng tiêu cực về chúng. Dù sao sớm muộn cũng phải xử lý hết, nên tốt hơn là làm cho nó đỡ khổ hơn một chút; ít nhất với tôi, điều đó không làm hỏng các ưu điểm của việc làm việc trong terminal
    • Tôi cũng phụ thuộc khá nhiều vào terminal cho hầu hết mọi thứ, nhưng email UI terminal và duyệt web thì chưa bao giờ hợp với tôi. Cách diễn đạt này giải thích rất đúng lý do
  • Vấn đề hiện nay với email bắt nguồn từ việc thiếu phát triển các công cụ email hiện đại và cá nhân
    Ở đây, cá nhân nghĩa là cấu hình không sống trên mail server của người khác: dễ dàng tải xuống hoặc đồng bộ IMAP từ xa hay dùng trực tiếp, có IMAP trên homeserver cá nhân, có các client thiên về tìm kiếm như notmuch-emacs/mu4e và các công cụ lọc tốt như MailDrop
    Các mảnh ghép đều đã có. Có thể phân loại lại mail đã đồng bộ bằng IMAPFilter và OfflineIMAP, hoặc tải về bằng fetchmail và MailDrop, rồi dùng notmuch trong Emacs hay Aerc. Nhưng tất cả chỉ là những chương trình riêng lẻ với cấu hình, phong cách, chất lượng tài liệu và mức độ thân thiện khác nhau, nên với người ít geek hơn hoặc không phải chuyên gia thì gần như chẳng có gì
    Vì thế nhiều người đồng nhất email với webmail, rồi chấp nhận webmail như một dịch vụ bên thứ ba kiểu Slack hay WhatsApp web. Đó là một góc nhìn nguy hiểm đối với tự do giao tiếp và sức mạnh mà email mang lại
    Việc bắt hóa đơn định kỳ của ISP bằng quy tắc MailDrop, chạy script, thêm hạn thanh toán và số tiền vào lịch, rồi kiểm tra trong phần mềm kế toán cục bộ xem có giao dịch liên quan không và cảnh báo nếu bất thường là chuyện không khó với các công cụ dựa trên văn bản như org-agenda, BeanCount, MailDrop và email. Với phần mềm hiện đại thì lại rất khó; đây là mất mát lớn đối với những power user tiềm năng, những người hoặc thấy việc học và triển khai tự động hóa đơn giản là quá dài, hoặc thậm chí không biết khả năng đó tồn tại
    CNTT ra đời để đơn giản hóa cuộc sống và mở rộng nhận thức của con người, nên thật buồn khi gần như ai cũng quên điều đó
    [1] Vì tên tệp mail, khi đồng bộ trên nhiều máy thường phát sinh bất tiện về trạng thái chưa đọc hoặc tag, tạo tin nhắn trùng lặp, v.v.

    • Chữ PERSONAL viết hoa thật sự rất quan trọng. Ngày nay nhiều người bị nhốt trong các website như Gmail đến mức thậm chí không biết điều gì là có thể
      Email lẽ ra phải cho phép tùy biến 100% luồng làm việc, lọc, sắp xếp, chia thư mục, v.v.
      Vì các công cụ cũ vẫn hoạt động, khả năng đó vẫn còn. Chỉ là cần cho nhiều người biết hơn rằng email tuyệt vời thế nào khi dùng đúng như ý định ban đầu. Nếu tôi tin Gmail chính là email thì chắc tôi cũng đã ghét email, nhưng Gmail không phải là bản thân email
      procmail và mutt đến giờ vẫn hoạt động tốt
  • Tôi thật sự thích các dự án dựa trên văn bản hiện đại. Cảm ơn vì đã giữ cho terminal tiếp tục sống và có ý nghĩa

  • Tôi đã xem một người trình diễn đọc email bằng mu4e trong Emacs; phần HTML được pipe thẳng sang Firefox để xem, còn một số phần thì chuyển sang PDF
    https://www.youtube.com/watch?v=1uulLBKBMX8

  • aerc khá đặc biệt ở chỗ nó được thiết kế như một client, chứ không phải theo hướng lưu mail trên máy tính. Vì vậy có các tác động và giới hạn về hiệu năng
    Vẫn có thể dùng mail cục bộ, nhưng theo tôi thấy thì nó giống tính năng hạng hai hơn; tuy nhiên đó là chuyện tôi xem từ lâu rồi, nên giờ có thể đã khác
    Với thiết kế như vậy thì IMAP đáng ra phải hoạt động tốt hơn, nhưng kết nối thường xuyên bị ngắt và tôi phải khởi động lại để kết nối lại. Việc trùng phím tắt giữa neovim và aerc cũng bất tiện
    Nhìn chung không hài lòng. Có thể tôi sẽ xem lại liệu mình có bỏ sót gì trong cấu hình không, nhưng hiện tại tôi đặt kỳ vọng nhiều hơn vào neomutt

    • Dùng cùng thư mục mail cục bộ chắc chắn tốt hơn. Tôi nghĩ hầu hết người dùng UI terminal cho mail dùng nó cùng các tiện ích như mbsync, notmuch để cải thiện toàn bộ trải nghiệm
    • Tôi cũng gặp tình trạng ngắt kết nối IMAP. Nghe có vẻ hơi vụng, nhưng tôi chạy aerc trong một vòng lặp while, và khi nó bắt đầu kỳ quặc thì thoát bằng q rồi mở lại sau vài giây
      Dù vậy nó vẫn là mail client tôi thích nhất, nhưng rõ ràng còn có thể tốt hơn
    • Tôi tò mò không biết trùng phím tắt giữa neovim và aerc nghĩa là gì. Vim dùng gần như mọi phím trên bàn phím, nên chẳng phải đây là vấn đề có thể xảy ra với hầu như bất kỳ chương trình nào sao?
    • mutt, email user agent tốt nhất, sẽ tự động kết nối lại khi kết nối tới IMAP server thất bại. Tuy nhiên có vẻ không phải lần nào cũng hoạt động
      https://lwn.net/Articles/837960/
    • Chẳng phải mutt cũng như vậy sao?
  • himalaya trông có vẻ đầy hứa hẹn
    https://github.com/soywod/himalaya
    https://pimalaya.org/himalaya/cli/latest/index.html

  • Không thấy chỗ nào giải thích “TUI” là gì. Có thể hiểu là giao diện người dùng dạng văn bản