Computer >> Máy Tính >  >> Hệ thống >> Linux

Cách sử dụng Email trong Emacs

Cách sử dụng Email trong Emacs

Các giao diện email trên web, chẳng hạn như Gmail, thường không hiệu quả và không an toàn. Tất cả chúng đều yêu cầu bạn phải luôn kết nối với Internet và không hỗ trợ các tính năng như gắn thẻ hàng loạt và lọc. Tuy nhiên, nếu bạn đã sử dụng Emacs để chỉnh sửa văn bản, bạn cũng có thể sử dụng nó để quản lý email của mình.

Ứng dụng email khách hiện đại và Emacs

Mặc dù có các ứng dụng email ngoại tuyến như Thunderbird và Evolution, nhưng các chương trình này thường lớn, không có mọi thứ bạn có thể cần hoặc không kết hợp tốt với các ứng dụng khác.

Cách sử dụng Email trong Emacs

Ví dụ:Evolution có thể chấp nhận email và lịch của bạn nhưng không xử lý tài liệu, nhóm tin và danh sách việc cần làm. Điều này tạo ra trải nghiệm người dùng rời rạc có thể dẫn đến nhiều vấn đề hơn trong tương lai.

Mặt khác, Emacs hoạt động dựa trên khái niệm về khả năng tương tác. Trong Emacs, mọi thứ đều có thể được truy cập và thao tác thông qua cùng một ngôn ngữ thiết kế. Các liên kết chính để thực hiện các hành động cơ bản là giống nhau. Hơn nữa, các gói cũng tạo và xuất văn bản một cách nghiêm ngặt có thể được sử dụng làm đầu vào trong các gói khác.

Cách sử dụng Email trong Emacs

Ví dụ:nếu bạn đang sử dụng gnus để đọc các nhóm tin và Chế độ tổ chức để quản lý ghi chú của mình, bạn có thể hướng một bài viết trong nhóm tin đến bộ đệm Tổ chức để chú thích hoặc lưu nó làm nguồn cảm hứng.

Cách sử dụng Email trong Emacs

Hơn nữa, nếu bạn đang sử dụng EMMS để quản lý nhạc của mình, nó sẽ xuất ra tiêu đề của bài hát hiện tại dưới dạng văn bản. Bạn có thể liên kết bài đăng này với một bài đăng trên blog để làm nổi bật những gì bạn đang nghe trong khi viết.

Cách sử dụng Email trong Emacs

Emacs với tư cách là một Ứng dụng khách Email

Emacs cho phép bạn tích hợp và lưu email của mình vào bộ đệm Tổ chức để chú thích hoặc lưu nó dưới dạng mục việc cần làm trong lịch.

Bạn cũng có thể làm ngược lại:viết một bài báo trong bộ đệm của Tổ chức và gửi nó, trong Emacs, dưới dạng email cho ai đó.

Điều này có thể thực hiện được với sự trợ giúp của hai chương trình: Bản đồ ngoại tuyến notmuch .

  • Bản đồ ngoại tuyến là một chương trình trợ giúp tìm nạp email của bạn từ một máy chủ từ xa và lưu nó vào đĩa của bạn. Máy chủ có thể là một máy chủ tự lưu trữ hoặc một dịch vụ email như Gmail hoặc Protonmail.
  • Mặt khác, Notmuch là một ứng dụng cực kỳ đơn giản có chức năng gắn thẻ và hiển thị thư. Nó duy trì cơ sở dữ liệu của tất cả các thư bạn đã nhận và gắn thẻ chúng theo những gì bạn đã đặt, sau đó hiển thị các email này trong Emacs dựa trên các thẻ đó.

Cài đặt Offlineimap và notmuch

Để cài đặt hai ứng dụng này trong Debian và Ubuntu:

sudo apt install offlineimap notmuch

Trong Arch Linux:

sudo pacman -Syu offlineimap notmuch

Trong Fedora:

sudo dnf install offlineimap notmuch
Cách sử dụng Email trong Emacs

Sau đó, cài đặt gói notmuch đi kèm trong Emacs. Nó hiện có sẵn trong kho lưu trữ MELPA. Bạn có thể cần phải kích hoạt nó trước trong cấu hình Emacs của mình.

Để làm điều đó, hãy thêm các dòng lisp sau vào tệp init.el của bạn:

(require 'package)
(add-to-list 'package-archives
             '("melpa" . "https://melpa.org/packages/"))
(package-initialize)

Để cài đặt gói notmuch, nhấn Alt + X và nhập package-install . Emacs sẽ hỏi tên của gói mà bạn muốn cài đặt. Nhập “notmuch.”

Sau khi được cài đặt, gói này sẽ đóng vai trò là giao diện người dùng của chương trình gắn thẻ notmuch.

Cách sử dụng Email trong Emacs

Thiết lập Bản đồ ngoại tuyến

Sau khi hoàn tất, bạn có thể định cấu hình Bản đồ ngoại tuyến. Đây là một quá trình đơn giản chủ yếu liên quan đến một tệp:“.offlineimaprc.”

Theo mặc định, tệp cấu hình này được đọc từ thư mục chính của bạn. Để tạo nó, hãy chạy lệnh sau:

touch /home/$USER/.offlineimaprc

Sau khi hoàn tất, hãy mở tệp này bằng trình soạn thảo văn bản yêu thích của bạn.

Cách sử dụng Email trong Emacs

Cấu hình cho Bản đồ ngoại tuyến được viết ở định dạng INI. Ví dụ:.offlineimaprc cho một tài khoản IMAP có thể trông giống như sau:

[general]
accounts = imapaccount
 
[Account imapaccount]
localrepository = thismachine
remoterepository = thatimap
 
[Repository thismachine]
type = Maildir
localfolders = /home/$USER/mail/youremail@domain.com
 
[Repository thatimap]
type = IMAP
remotehost = imap.domain.com
remoteuser = youremail@domain.com
remotepass = your_password_goes_here
ssl = yes
sslcacertfile = /your/ca/cert/path/here
  • Chung danh mục cho Bản đồ ngoại tuyến biết rằng bạn đang thiết lập một tài khoản duy nhất cho cài đặt này.
  • Tài khoản danh mục chỉ định các nguồn mà tài khoản cụ thể đó nhận được email, cũng như bất kỳ tập lệnh nào bạn muốn chạy khi Offlineimap tìm nạp thư.
  • Kho lưu trữ danh mục sẽ cho Bản đồ ngoại tuyến biết cấu hình cho tài khoản bạn đang cố gắng thiết lập. Các cài đặt ở đây chủ yếu phụ thuộc vào việc bạn có đang sử dụng Gmail hay không.

Kho Email

Bản đồ ngoại tuyến hoạt động bằng cách lưu cấu trúc của một thư mục email từ xa trong máy tính cục bộ của bạn. Điều này cho phép chương trình bắt chước một máy chủ IMAP từ xa và cho phép các ứng dụng email như notmuch đọc thư mà không cần phải trực tuyến.

Cách sử dụng Email trong Emacs

Danh mục Kho lưu trữ khác nhau cho dù bạn đang thiết lập hộp thư cục bộ hay từ xa. Để tạo một hộp thư cục bộ, bạn chỉ cần đặt loại của nó là “Maildir.” Điều này sẽ cho Offlineimap biết rằng kho lưu trữ này sẽ trỏ đến một vị trí trong máy cục bộ.

[Repository thismachine]
type = Maildir
localfolders = /home/$USER/mail/youremail@domain.com
Cách sử dụng Email trong Emacs

Ngược lại, việc thiết lập một kho lưu trữ từ xa có thể có một chút liên quan. Tuy nhiên, khi bạn hiểu ý nghĩa của từng giá trị trong tệp cấu hình, việc thiết lập từ xa sẽ rất đơn giản.

Hãy xem lại ví dụ về khối Kho lưu trữ:

[Repository thatimap]
type = IMAP
remotehost = imap.domain.com
remoteuser = youremail@domain.com
remotepass = your_password_goes_here
ssl = yes
sslcacertfile = /your/ca/cert/path/here
  • Loại cài đặt cho biết loại máy chủ mà bạn muốn Offlineimap kết nối với. Trong trường hợp này, chỉ có hai tùy chọn:Gmail dành cho Google Mail và IMAP dành cho tài khoản không phải của Google.
  • Máy chủ từ xa cài đặt đặt địa chỉ của máy chủ IMAP mà Offlineimap kết nối với.
  • Người dùng từ xa điều khiển từ xa là nơi bạn cần cung cấp thông tin đăng nhập người dùng của mình.
  • Cài đặt ssl thành “yes” sẽ cho Offlineimap biết rằng bạn muốn thiết lập kết nối được mã hóa với máy chủ IMAP.
  • sslcacertfile , sau đó, chỉ định chứng chỉ SSL cục bộ của bạn. Bản đồ ngoại tuyến sẽ sử dụng điều này để xác minh kết nối của nó với máy chủ IMAP.

Kết nối với Gmail

Như đã mô tả ở trên, Offlineimap cũng cung cấp một loại đặc biệt để kết nối với tài khoản Gmail, vì Google yêu cầu thông tin bổ sung khi kết nối với dịch vụ thư của mình.

Cách sử dụng Email trong Emacs

Để kết nối với Gmail bằng Offlineimap, bạn chỉ cần thay đổi loại kho lưu trữ cục bộ và từ xa của mình. Bạn cần đặt kho lưu trữ cục bộ thành “GmailMaildir” và điều khiển từ xa thành “Gmail.”

Ví dụ:tệp .offlineimaprc kết nối với dịch vụ Gmail có thể trông giống như sau:

[general]
accounts = gmailaccount
 
[Account gmailaccount]
localrepository = localgmail
remoterepository = remotegmail
 
[Repository localgmail]
type = GmailMaildir
localfolders = /home/$USER/mail/youremail@gmail.com
 
[Repository remotegmail]
type = Gmail
maxconnections=1
remotehost = imap.gmail.com
remoteuser = youremail@gmail.com
remotepass = your_password_goes_here
ssl = yes
sslcacertfile = /your/ca/cert/path/here

Thiết lập kết nối SSL

Điều tiếp theo cần làm là cấu hình Offlineimap để kết nối thông qua SSL. Để thực hiện việc này, bạn cần chỉ ra đường dẫn đến chứng chỉ SSL trên toàn hệ thống của mình.

Vị trí của chứng chỉ SSL sẽ phụ thuộc vào hệ thống bạn đang chạy. Tuy nhiên, trong Debian và Ubuntu, nó nằm ở đường dẫn sau:

ls /etc/ssl/certs/ca-certificates.crt
Cách sử dụng Email trong Emacs

Giờ đây, bạn có thể chạy bản đồ ngoại tuyến trong thiết bị đầu cuối để nhận tất cả thư từ máy chủ IMAP từ xa của mình.

Thiết lập notmuch

Từ đó, tiến hành thiết lập notmuch. Theo tên của nó, không có nhiều thứ để cấu hình với nó.

Sau khi có thư mục IMAP, bạn có thể chạy notmuch trong dòng lệnh. Thao tác này sẽ bắt đầu một tập lệnh cấu hình hỏi về thiết lập email cụ thể của bạn.

Cách sử dụng Email trong Emacs

Cùng với đó, notmuch sẽ tạo một tệp cấu hình trong thư mục chính của bạn. Bạn có thể kiểm tra nó bằng cách chạy lệnh sau:

less /home/$USER/.notmuch-config
Cách sử dụng Email trong Emacs

Đặt một số tùy chọn sẽ cho biết nơi tìm thư mới. Bạn cũng có thể đặt bất kỳ thẻ nào bạn không muốn lập chỉ mục khi notmuch đang tìm kiếm thông qua cơ sở dữ liệu của nó.

Ví dụ:bạn có thể đặt nó sao cho notmuch sẽ không tìm kiếm bất kỳ thư nào được gắn thẻ là rác:

[search]
exclude_tags = junk

Gắn thẻ email bằng notmuch

Như bạn có thể nhận thấy, bạn đã không đặt bất kỳ thẻ email nào trong tệp cấu hình notmuch, vì thẻ notmuch gửi email trực tiếp từ dòng lệnh.

Điều này cho phép bạn linh hoạt với cách bạn muốn sử dụng notmuch. Ví dụ:bạn có thể bao gồm lệnh gắn thẻ notmuch trong một tập lệnh được chạy định kỳ dưới dạng cronjob.

Cách sử dụng Email trong Emacs

Tuy nhiên, để bắt đầu, trước tiên bạn cần khởi tạo cơ sở dữ liệu của notmuch bằng cách chạy lệnh sau:

notmuch new

Thao tác này sẽ đọc tệp cấu hình của bạn và tạo cơ sở dữ liệu dựa trên các giá trị mặc định hợp lý. Từ đó, giờ đây bạn có thể sử dụng các lệnh gắn thẻ của notmuch để gắn thẻ cả email đến và email hiện có của bạn.

Cú pháp gắn thẻ của Notmuch

Cú pháp gắn thẻ trong notmuch rất trực quan và biểu mẫu chung trông giống như sau:

notmuch tag [+|-]label header:header-property (tag:current-tag)
  • Thẻ lệnh cho notmuch biết rằng các đối số sau sẽ được sử dụng để tạo quy tắc gắn thẻ trong hộp thư của bạn.
  • Nhãn tùy chọn chỉ định xem bạn sẽ thêm nhãn (+) hay xóa nhãn hiện đang tồn tại (-). Ví dụ:tất cả thư đến được gắn thẻ “chưa đọc” theo mặc định. Do đó, bạn có thể đặt lệnh này thành -unread để xóa thẻ chưa đọc.
  • Tiêu đề tùy chọn cho notmuch chỉ áp dụng nhãn dựa trên tiêu đề email mà bạn đã đặt. Ví dụ:bạn có thể sử dụng tiêu đề “Từ:” để lọc thư dựa trên nguồn gốc của họ.
  • Thẻ option là một đối số tùy chọn giới hạn việc áp dụng quy tắc gắn thẻ cho một thẻ cụ thể. Ví dụ:bạn có thể đặt nó để notmuch chỉ áp dụng nhãn nếu email cụ thể đó có thẻ chưa đọc.
Cách sử dụng Email trong Emacs

Xem Email của bạn trong Emacs

Bạn có thể xem email của mình trong Emacs. Thực hiện việc này bằng cách nhấn Alt + X và nhập notmuch . Thao tác này sẽ tải gói giao diện người dùng cho notmuch trong Emacs.

Cách sử dụng Email trong Emacs

Màn hình đích sẽ hiển thị một số thẻ tiêu chuẩn theo mặc định. Tuy nhiên, bạn có thể xem các thẻ tùy chỉnh của mình bằng cách nhấp vào nút “[hiển thị]” bên cạnh “Tất cả các thẻ”. Bạn cũng có thể truy cập các thẻ của mình bằng cách nhấn S và nhập “is:tag_name” vào bộ đệm lệnh.

Cách sử dụng Email trong Emacs

Các phím chỉnh sửa và chuyển động Emacs tiêu chuẩn cũng hoạt động trong notmuch. Hơn nữa, có một loạt các tính năng được bổ sung để lọc email của bạn tốt hơn.

Ví dụ:kích hoạt chế độ xem “kiểu cây” bằng cách nhấn Shift + Z trong khi xem một thẻ cụ thể. Điều này rất hữu ích khi bạn đăng ký một danh sách gửi thư vì nó hiển thị các email trong các chuỗi dễ theo dõi.

Cách sử dụng Email trong Emacs

Thiết lập Emacs để gửi Email

Bây giờ bạn có một thư mục email đang hoạt động mà bạn có thể đọc trong Emacs. Tuy nhiên, bạn vẫn cần thiết lập phương tiện để gửi thư. May mắn thay, điều này dễ thực hiện một cách đáng ngạc nhiên trong Emacs.

Để bật hỗ trợ qua email, bạn có thể thêm các dòng lisp sau vào tệp init.el của mình:

(setq mail-user-agent 'message-user-agent)
(setq message-send-mail-function 'smtpmail-send-it
      smtpmail-stream-type 'starttls
      smtpmail-smtp-server "mail.domain.com"
      smtpmail-smtp-service 587)
  • mail-user-agent đặt biến user-agent của bạn để sử dụng message-user-agent của Emacs. Thao tác này sẽ xác định các email gửi đi của bạn đến từ Emacs, cho phép bạn giao tiếp với các máy chủ thư khác.
  • Chức năng nhắn-gửi-thư yêu cầu Emacs sử dụng smtpmail tích hợp sẵn gói để gửi đúng cách các email của bạn.
  • Trong đó, smtpmail-stream-type cho biết loại kết nối mà bạn muốn Emacs sử dụng khi kết nối với máy chủ thư từ xa. Hầu hết các máy chủ thư hiện đang sử dụng SSL / TLS hoặc STARTTLS.
  • smtpmail-smtp-server đặt địa chỉ của máy chủ SMTP mà bạn muốn kết nối.
  • smtpmail-smtp-service đặt cổng mà Emacs sẽ sử dụng để gửi các gói SMTP. Nếu sử dụng SSL / TLS, hãy viết 465 làm cổng SMTP của bạn. Nếu sử dụng STARTTLS, hãy viết 587.

Thiết lập Xác thực Email bằng .authinfo

Bạn cần cho phép Emacs gửi email qua tài khoản mail của bạn. Thực hiện việc này bằng cách thêm thông tin đăng nhập email của bạn vào .authinfo.

Tệp .authinfo là tệp ẩn lưu trữ thông tin đăng nhập của người dùng khi đăng nhập vào các dịch vụ từ xa. Đối với hầu hết các phần, điều này không có trong cài đặt Linux của bạn theo mặc định. Tuy nhiên, bạn có thể tạo tệp này bằng cách chạy lệnh sau:

touch /home/$USER/.authinfo

Một điều quan trọng cần lưu ý là tệp này sẽ chứa thông tin nhạy cảm, chẳng hạn như tên người dùng và mật khẩu của bạn. Do đó, bạn cần bảo mật các quyền truy cập của nó để chỉ bạn có thể đọc và ghi vào nó. Để làm điều đó, hãy chạy lệnh sau:

chmod 600 /home/$USER/.authinfo

Từ đó, hãy chỉnh sửa tệp .authinfo để chứa thông tin đăng nhập tài khoản thư của bạn. Cú pháp chung của tệp .authinfo trông giống như sau:

machine mail.domain.com login username@domain.com port 587 password mypasswordis123
  • Máy móc biến cho Emacs biết rằng bạn đang kết nối với một máy hoặc máy chủ khác.
  • Tên miền cho biết đây là địa chỉ của máy bạn muốn kết nối.
  • đăng nhập là nơi bạn sẽ đặt địa chỉ email của mình.
  • Cổng tùy chọn đặt cổng cụ thể mà bạn muốn Emacs kết nối. Số này phải giống với số cổng bạn đã đặt trong tệp init.el của mình.
  • Mật khẩu biến chứa mật khẩu của tài khoản email của bạn.
Cách sử dụng Email trong Emacs

Tải lại Emacs để áp dụng cài đặt mới của bạn.

Gửi email đầu tiên của bạn trong Emacs

Cùng với đó, việc gửi email từ Emacs trở nên vô cùng dễ dàng. Thực hiện việc này bằng cách nhấn Ctrl + X , M hoặc bằng cách nhấn M khi ở trong bộ đệm notmuch.

Các liên kết khóa này sẽ thực thi composemail lệnh này sẽ tạo bộ đệm thư với tiêu đề trống để bạn có thể nhập email của mình.

Cách sử dụng Email trong Emacs

Sau khi hoàn tất, nhấn Ctrl + C , Ctrl + C để gửi email đầu tiên của bạn từ Emacs.

Xin chúc mừng! Bạn đã thiết lập thành công Emacs làm ứng dụng email. Hơn nữa, giờ đây bạn cũng có hiểu biết cơ bản về cách hoạt động của máy chủ IMAP và SMTP cũng như những kiến ​​thức cơ bản về thiết lập hệ thống gắn thẻ email.

Nếu tất cả cuộc nói chuyện này khiến bạn quan tâm đến những gì bạn có thể làm khác với Emacs, hãy xem năm gói hữu ích này cho trình soạn thảo văn bản có thể mở rộng này.

Câu hỏi thường gặp

1. Có thể tự động gắn thẻ email sau khi tôi chạy bản đồ ngoại tuyến không?

Thực hiện việc này bằng cách tạo một hook sau đồng bộ hóa notmuch trong Offlineimap. Chèn một biến trong danh mục Tài khoản có tên là “postsynchook”:

...
 
[Account imapaccount]
localrepository = thismachine
remoterepository = thatimap
 
postsynchook = /path/to/your/script.sh
...

Biến này phải chứa một đường dẫn tệp đến một tập lệnh thực thi có thể chứa các lệnh notmuch để đặt thẻ của bạn.

Ví dụ:đây là một tập lệnh đơn giản sau đồng bộ hóa xóa thẻ chưa đọc khỏi các email trong danh sách gửi thư đến và gắn thẻ chúng một cách thích hợp:

#!/bin/sh
 
notmuch new
 
notmuch tag -inbox -unread +mailing-list from:mailing-list or to:mailing-list@domain.com tag:inbox
notmuch tag -inbox -unread +mailinglist-cmd from:mailing-list-cmd@domain.com tag:inbox

2. Tôi đã viết một email nhưng quyết định không muốn gửi nó. Làm cách nào để hủy email trong Emacs?

Bạn có thể hủy email trong Emacs bằng cách nhấn Ctrl + C , Ctrl + D khi đang ở trong bộ đệm tin nhắn. Thao tác này sẽ gắn thẻ email của bạn là một bản nháp bị loại bỏ và Emacs sẽ xóa nó sau một khoảng thời gian.

3. Có thể sửa đổi các thẻ email bên trong notmuch trong Emacs không?

Đúng! Thực hiện việc này bằng cách nhấn Shift + = trong khi bên trong bộ đệm notmuch. Thao tác này sẽ mở ra một bộ đệm lệnh nhỏ, nơi bạn có thể chỉ ra các thẻ bạn muốn thêm hoặc xóa khỏi một email cụ thể.