Computer >> 컴퓨터 >  >> 체계 >> Linux

Emacs에서 이메일을 사용하는 방법

Emacs에서 이메일을 사용하는 방법

Gmail과 같은 웹 이메일 인터페이스는 종종 비효율적이고 안전하지 않습니다. 이들 모두는 항상 인터넷에 연결되어 있어야 하며 대량 태깅 및 필터링과 같은 기능을 지원하지 않습니다. 그러나 이미 Emacs를 사용하여 텍스트를 편집하고 있다면 이를 사용하여 이메일을 관리할 수도 있습니다.

현대 이메일 클라이언트 및 Emacs

Thunderbird 및 Evolution과 같은 오프라인 이메일 클라이언트가 있지만 이러한 프로그램은 종종 크기가 크거나 필요한 모든 것이 없거나 다른 응용 프로그램과 잘 결합되지 않습니다.

Emacs에서 이메일을 사용하는 방법

예를 들어 Evolution은 이메일과 캘린더를 수락할 수 있지만 문서 처리, 뉴스 그룹 및 할 일 목록은 처리하지 않습니다. 이것은 잠재적으로 미래에 더 많은 문제로 이어질 수 있는 분리된 사용자 경험을 생성합니다.

반면 Emacs는 상호 운용성의 개념에서 작동합니다. Emacs 내에서 동일한 디자인 언어를 통해 모든 것에 액세스하고 조작할 수 있습니다. 기본 작업을 수행하는 키 바인딩은 동일합니다. 또한 패키지는 다른 패키지에서 입력으로 사용할 수 있는 텍스트를 엄격하게 생성 및 출력합니다.

Emacs에서 이메일을 사용하는 방법

예를 들어, gnus를 사용하여 뉴스 그룹을 읽고 조직 모드를 사용하여 메모를 관리하는 경우 뉴스 그룹 기사를 조직 버퍼로 보내 주석을 달거나 영감으로 저장할 수 있습니다.

Emacs에서 이메일을 사용하는 방법

또한 EMMS를 사용하여 음악을 관리하는 경우 현재 노래의 제목을 텍스트로 출력합니다. 이것을 블로그 게시물에 연결하여 글을 쓰는 동안 듣고 있는 내용을 강조 표시할 수 있습니다.

Emacs에서 이메일을 사용하는 방법

이메일 클라이언트로서의 Emacs

Emacs를 사용하면 이메일을 조직 버퍼에 통합하고 저장하여 주석을 달거나 캘린더의 할 일 항목으로 저장할 수 있습니다.

반대로 할 수도 있습니다. 조직 버퍼에 기사를 작성하고 Emacs 내에서 누군가에게 이메일로 보내십시오.

이는 Offlineimap 프로그램의 도움으로 가능합니다. 그리고 별로 .

  • Offlineimap은 원격 서버에서 이메일을 가져와 디스크에 저장하는 도우미 프로그램입니다. 서버는 자체 호스팅 서버이거나 Gmail 또는 Protonmail과 같은 이메일 서비스일 수 있습니다.
  • 반면에 Notmuch는 메일에 태그를 지정하고 표시하는 매우 간단한 애플리케이션입니다. 그것은 당신이 받은 모든 메일의 데이터베이스를 유지하고 당신이 설정한 것에 따라 태그를 붙인 다음, 그 태그를 기반으로 이 이메일을 Emacs에 표시합니다.

Offlineimap 및 notmuch 설치

Debian 및 Ubuntu에 이 두 애플리케이션을 설치하려면:

sudo apt install offlineimap notmuch

아치 리눅스:

sudo pacman -Syu offlineimap notmuch

페도라:

sudo dnf install offlineimap notmuch
Emacs에서 이메일을 사용하는 방법

그런 다음 Emacs에 함께 제공되는 notmuch 패키지를 설치합니다. 현재 MELPA 저장소에서 사용할 수 있습니다. Emacs 구성에서 먼저 활성화해야 할 수도 있습니다.

그렇게 하려면 init.el 파일에 다음 lisp 줄을 추가하세요.

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

notmuch 패키지를 설치하려면 Alt를 누르십시오. + X package-install를 입력합니다. . Emacs는 설치하려는 패키지의 이름을 묻습니다. "별로"를 입력하십시오.

일단 설치되면 이 패키지는 notmuch 태깅 프로그램의 프론트 엔드 역할을 합니다.

Emacs에서 이메일을 사용하는 방법

오프라인imap 설정

완료되면 Offlineimap을 구성할 수 있습니다. 이것은 주로 단일 파일 ".offlineimaprc"를 포함하는 간단한 프로세스입니다.

기본적으로 이 구성 파일은 홈 디렉토리에서 읽습니다. 생성하려면 다음 명령을 실행하십시오.

touch /home/$USER/.offlineimaprc

완료되면 즐겨 사용하는 텍스트 편집기를 사용하여 이 파일을 엽니다.

Emacs에서 이메일을 사용하는 방법

Offlineimap에 대한 구성은 INI 형식으로 작성됩니다. 예를 들어 단일 IMAP 계정에 대한 .offlineimaprc는 다음과 같을 수 있습니다.

[general]
accounts = imapaccount
 
[Account imapaccount]
localrepository = thismachine
remoterepository = thatimap
 
[Repository thismachine]
type = Maildir
localfolders = /home/$USER/mail/[email protected]
 
[Repository thatimap]
type = IMAP
remotehost = imap.domain.com
remoteuser = [email protected]
remotepass = your_password_goes_here
ssl = yes
sslcacertfile = /your/ca/cert/path/here
  • 일반 카테고리는 이 설치에 대해 단일 계정을 설정하고 있음을 Offlineimap에 알립니다.
  • 계정 카테고리는 특정 계정이 이메일을 받는 소스와 Offlineimap이 메일을 가져올 때 실행할 스크립트를 지정합니다.
  • 저장소 범주는 설정하려는 계정에 대한 구성을 Offlineimap에 알려줍니다. 여기의 설정은 Gmail 사용 여부에 따라 크게 달라집니다.

이메일 저장소

Offlineimap은 원격 이메일 디렉토리의 구조를 로컬 컴퓨터에 저장하여 작동합니다. 이를 통해 프로그램은 원격 IMAP 서버를 모방하고 notmuch와 같은 이메일 클라이언트가 온라인에 연결하지 않고도 메일을 읽을 수 있습니다.

Emacs에서 이메일을 사용하는 방법

리포지토리 범주는 로컬 또는 원격 사서함을 설정하는지 여부에 따라 다릅니다. 로컬 메일박스를 생성하려면 해당 유형을 "Maildir"로 설정하기만 하면 됩니다. 이렇게 하면 이 저장소가 로컬 컴퓨터의 위치를 ​​가리킬 것임을 Offlineimap에 알립니다.

[Repository thismachine]
type = Maildir
localfolders = /home/$USER/mail/[email protected]
Emacs에서 이메일을 사용하는 방법

대조적으로, 원격 리포지토리를 설정하는 것은 약간 복잡할 수 있습니다. 그러나 구성 파일의 각 값이 의미하는 바를 이해하면 원격 설정이 매우 간단해야 합니다.

리포지토리 블록 예제를 다시 살펴보겠습니다.

[Repository thatimap]
type = IMAP
remotehost = imap.domain.com
remoteuser = [email protected]
remotepass = your_password_goes_here
ssl = yes
sslcacertfile = /your/ca/cert/path/here
  • 유형 설정은 Offlineimap이 연결할 서버의 종류를 나타냅니다. 여기에는 Gmail용 Gmail과 Google이 아닌 계정용 IMAP의 두 가지 옵션만 있습니다.
  • 원격 호스트 설정은 Offlineimap이 연결되는 IMAP 서버의 주소를 설정합니다.
  • 원격 사용자원격 패스 사용자 자격 증명을 제공해야 하는 곳입니다.
  • ssl 설정 "yes"로 설정하면 Offlineimap에 IMAP 서버에 대한 암호화된 연결을 설정하려고 함을 알립니다.
  • sslcacertfile 그런 다음 옵션은 로컬 SSL 인증서를 지정합니다. Offlineimap은 이를 사용하여 IMAP 서버와의 연결을 확인합니다.

Gmail에 연결

위에서 설명한 것처럼 Google은 메일 서비스에 연결할 때 추가 정보가 필요하므로 Offlineimap은 Gmail 계정에 연결하기 위한 특수 유형도 제공합니다.

Emacs에서 이메일을 사용하는 방법

Offlineimap을 사용하여 Gmail에 연결하려면 로컬 및 원격 저장소 유형만 변경하면 됩니다. 로컬 저장소를 "GmailMaildir"로 설정하고 원격 저장소를 "Gmail"로 설정해야 합니다.

예를 들어 Gmail 서비스에 연결하는 .offlineimaprc 파일은 다음과 같을 수 있습니다.

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

SSL 연결 설정

다음으로 할 일은 SSL을 통해 연결하도록 Offlineimap을 구성하는 것입니다. 이렇게 하려면 시스템 전체 SSL 인증서의 경로를 지정해야 합니다.

SSL 인증서의 위치는 실행 중인 시스템에 따라 다릅니다. 그러나 Debian 및 Ubuntu에서는 다음 경로에 있습니다.

ls /etc/ssl/certs/ca-certificates.crt
Emacs에서 이메일을 사용하는 방법

이제 터미널에서 offlineimap을 실행하여 원격 IMAP 서버에서 모든 메일을 가져올 수 있습니다.

많이 설정하지 않음

거기에서 notmuch 설정을 진행하십시오. 이름에 따라 구성할 항목이 많지 않습니다.

IMAP 디렉토리가 있으면 명령줄에서 notmuch를 실행할 수 있습니다. 그러면 특정 이메일 설정에 대해 묻는 구성 스크립트가 시작됩니다.

Emacs에서 이메일을 사용하는 방법

그것으로, notmuch는 당신의 홈 디렉토리에 설정 파일을 생성할 것입니다. 다음 명령을 실행하여 확인할 수 있습니다.

less /home/$USER/.notmuch-config
Emacs에서 이메일을 사용하는 방법

새 메일을 찾을 위치를 많이 알려주지 않는 여러 옵션을 설정하십시오. notmuch가 데이터베이스를 검색할 때 색인을 생성하지 않으려는 태그를 설정할 수도 있습니다.

예를 들어 notmuch가 정크로 태그가 지정된 메일을 검색하지 않도록 설정할 수 있습니다.

[search]
exclude_tags = junk

notmuch로 이메일 태그 지정

눈치채셨겠지만, notmuch 태그는 명령줄에서 직접 이메일을 보내기 때문에 notmuch 구성 파일 내에서 이메일 태그를 설정하지 않았습니다.

이를 통해 notmuch를 사용하려는 방식에 유연하게 대처할 수 있습니다. 예를 들어 cronjob으로 주기적으로 실행되는 스크립트에 notmuch 태깅 명령을 포함할 수 있습니다.

Emacs에서 이메일을 사용하는 방법

그러나 시작하려면 먼저 다음 명령을 실행하여 notmuch의 데이터베이스를 초기화해야 합니다.

notmuch new

이것은 구성 파일을 읽고 합리적인 기본값을 기반으로 데이터베이스를 생성합니다. 여기에서 이제 notmuch의 태그 지정 명령을 사용하여 수신 이메일과 기존 이메일 모두에 태그를 지정할 수 있습니다.

Notmuch의 태깅 구문

notmuch의 태깅 구문은 매우 직관적이며 일반적인 형식은 다음과 같습니다.

notmuch tag [+|-]label header:header-property (tag:current-tag)
  • 태그 이 명령은 다음 인수가 사서함에 태그 지정 규칙을 만드는 데 사용된다는 것을 notmuch에 알려줍니다.
  • 라벨 옵션은 레이블을 추가할지(+) 아니면 현재 존재하는 레이블을 제거할지(-) 지정합니다. 예를 들어, 수신되는 모든 메일은 기본적으로 "읽지 않음"으로 태그가 지정됩니다. 따라서 이 명령을 -unread로 설정하여 읽지 않은 태그를 제거할 수 있습니다.
  • 헤더 옵션은 설정한 이메일 헤더를 기반으로 레이블만 적용하도록 notmuch에 지시합니다. 예를 들어 "보낸사람:" 헤더를 사용하여 보낸 사람을 기준으로 메일을 필터링할 수 있습니다.
  • 태그 옵션은 태그 지정 규칙의 적용을 특정 태그로 제한하는 선택적 인수입니다. 예를 들어 특정 이메일에 읽지 않은 태그가 있는 경우에만 notmuch가 레이블을 적용하도록 설정할 수 있습니다.
Emacs에서 이메일을 사용하는 방법

Emacs에서 이메일 보기

Emacs 내에서 이메일을 볼 수 있습니다. Alt 키를 눌러 이 작업을 수행합니다. + X notmuch 입력 . 이렇게 하면 Emacs에서 not much에 대한 프론트엔드 패키지가 로드됩니다.

Emacs에서 이메일을 사용하는 방법

방문 화면에는 기본적으로 몇 가지 표준 태그가 표시됩니다. 그러나 "모든 태그" 옆에 있는 "[표시]" 버튼을 클릭하면 사용자 정의 태그를 볼 수 있습니다. S를 눌러 태그에 액세스할 수도 있습니다. 명령 버퍼에 "is:tag_name"을 입력합니다.

Emacs에서 이메일을 사용하는 방법

표준 Emacs 이동 및 편집 키도 그다지 많지 않습니다. 또한 이메일을 더 잘 필터링할 수 있는 다양한 기능이 추가되었습니다.

예를 들어, Shift를 눌러 "트리 스타일" 보기를 트리거합니다. + Z 특정 태그를 보는 동안 이것은 팔로우하기 쉬운 스레드로 이메일을 표시하기 때문에 메일링 리스트에 가입할 때 유용합니다.

Emacs에서 이메일을 사용하는 방법

이메일을 보내도록 Emacs 설정

이제 Emacs 내에서 읽을 수 있는 작업 이메일 디렉토리가 있습니다. 그러나 여전히 메일을 보낼 수단을 설정해야 합니다. 운 좋게도 이것은 Emacs 내에서 놀라울 정도로 쉽습니다.

이메일 지원을 활성화하려면 init.el 파일에 다음 lisp 줄을 추가하면 됩니다.

(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)
  • 메일 사용자 에이전트 Emacs의 메시지 사용자 에이전트를 사용하도록 사용자 에이전트 변수를 설정합니다. 이렇게 하면 다른 메일 서버와 통신할 수 있는 Emacs에서 보내는 발신 이메일을 식별할 수 있습니다.
  • 메일 보내기 기능 내장된 smtpmail을 사용하도록 Emacs에 지시 패키지를 사용하여 이메일을 올바르게 보내십시오.
  • 여기에 smtpmail-stream-type 원격 메일 서버에 연결할 때 Emacs가 사용할 연결 종류를 나타냅니다. 대부분의 메일 서버는 현재 SSL/TLS 또는 STARTTLS를 사용합니다.
  • smtpmail-smtp-server 연결하려는 SMTP 서버의 주소를 설정합니다.
  • smtpmail-smtp-service Emacs가 SMTP 패킷을 보내는 데 사용할 포트를 설정합니다. SSL/TLS를 사용하는 경우 SMTP 포트로 465를 작성합니다. STARTTLS를 사용하는 경우 587을 작성하십시오.

.authinfo를 사용하여 이메일 인증 설정

Emacs가 메일 계정을 통해 이메일을 보낼 수 있도록 허용해야 합니다. .authinfo에 이메일 자격 증명을 추가하면 됩니다.

.authinfo 파일은 원격 서비스에 로그인할 때 사용자 자격 증명을 저장하는 숨김 파일입니다. 대부분의 경우 이것은 Linux 설치에서 기본적으로 제공되지 않습니다. 그러나 다음 명령을 실행하여 이 파일을 만들 수 있습니다.

touch /home/$USER/.authinfo

한 가지 중요한 점은 이 파일에는 사용자 이름 및 비밀번호와 같은 민감한 정보가 포함되어 있다는 것입니다. 따라서 자신만 읽고 쓸 수 있도록 액세스 권한을 보호해야 합니다. 그렇게 하려면 다음 명령을 실행하십시오.

chmod 600 /home/$USER/.authinfo

거기에서 메일 계정 자격 증명을 포함하도록 .authinfo 파일을 편집합니다. .authinfo 파일의 일반 구문은 다음과 같습니다.

machine mail.domain.com login [email protected] port 587 password mypasswordis123
  • 기계 변수는 Emacs에게 다른 컴퓨터나 서버에 연결하고 있음을 알려줍니다.
  • 도메인 이름 연결하려는 컴퓨터의 주소임을 나타냅니다.
  • 로그인 필드는 이메일 주소를 설정하는 곳입니다.
  • 포트 옵션은 Emacs가 연결할 특정 포트를 설정합니다. 이것은 init.el 파일에서 설정한 포트 번호와 유사해야 합니다.
  • 비밀번호 변수에는 이메일 계정의 비밀번호가 포함됩니다.
Emacs에서 이메일을 사용하는 방법

새 설정을 적용하려면 Emacs를 새로고침하세요.

Emacs에서 첫 번째 이메일 보내기

이를 통해 Emacs에서 이메일을 보내는 것은 매우 쉽습니다. Ctrl 키를 눌러 이 작업을 수행합니다. + X , 또는 M를 눌러 notmuch 버퍼에 있는 동안.

이러한 키 바인딩은 composemail을 실행합니다. 이메일을 입력할 수 있는 빈 제목이 있는 메시지 버퍼를 생성하는 명령입니다.

Emacs에서 이메일을 사용하는 방법

완료되면 Ctrl 키를 누릅니다. + C , Ctrl + C Emacs에서 첫 번째 이메일을 보내십시오.

축하합니다! Emacs를 이메일 클라이언트로 성공적으로 설정했습니다. 또한 이제 IMAP 및 SMTP 서버의 작동 방식과 이메일 태그 지정 시스템 설정의 기본 사항에 대한 기본적인 이해도 갖게 되었습니다.

이 모든 내용이 Emacs로 할 수 있는 다른 작업에 관심을 갖게 했다면 이 확장 가능한 텍스트 편집기를 위한 다음 5가지 유용한 패키지를 확인하십시오.

자주 묻는 질문(FAQ)

1. 오프라인imap을 실행한 후 자동으로 이메일에 태그를 지정할 수 있습니까?

Offlineimap에서 그다지 많지 않은 동기화 후 후크를 만들어 이를 수행합니다. "postsynchook"이라는 계정 범주 아래에 변수를 삽입합니다.

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

이 변수는 태그를 설정하기 위한 많은 명령을 포함할 수 있는 실행 가능한 스크립트에 대한 파일 경로를 포함해야 합니다.

예를 들어 다음은 수신 메일링 리스트 이메일에서 읽지 않은 태그를 제거하고 적절하게 태그를 지정하는 간단한 동기화 후 스크립트입니다.

#!/bin/sh
 
notmuch new
 
notmuch tag -inbox -unread +mailing-list from:mailing-list or to:[email protected] tag:inbox
notmuch tag -inbox -unread +mailinglist-cmd from:[email protected] tag:inbox

2. 이메일을 작성했지만 보내지 않기로 결정했습니다. Emacs에서 이메일을 어떻게 버릴 수 있습니까?

Ctrl를 눌러 Emacs에서 이메일을 삭제할 수 있습니다. + C , Ctrl + D 메시지 버퍼에 있는 동안. 이렇게 하면 이메일에 폐기된 초안으로 태그가 지정되고 일정 시간이 지나면 Emacs가 삭제합니다.

3. Emacs의 notmuch 내부에서 이메일 태그를 수정할 수 있습니까?

예! Shift를 눌러 이 작업을 수행합니다. + = notmuch 버퍼 안에 있는 동안. 이렇게 하면 특정 이메일에서 추가하거나 제거하려는 태그를 표시할 수 있는 작은 명령 버퍼가 열립니다.