Emacs에서 Gmail 사용하기

Emacs에서 Gmail 사용하기

October 20, 2022
emacs
doom

목표 #

Doom emacs에서 Gmail을 수발신 하기 위해 필요한 설정들과 그 과정에서 배운 것들을 기록하기 위함.

이맥스내에서 필요한 설정 #

~/.doom.d/init.el 파일 #

(doom!
 ;;...
       :email
       ;; 이 부분 주석 해제
       (mu4e +org +gmail))

mu4e란 #

mu for emacs 라는 뜻의 이름인 듯 하다. 위 mu4e 변수 위에 K 키를 누르면 Readme문서를 확인할 수 있다.

mumaildir-utils 의 약자이다. maildir 포맷 디렉터리 내의 이메일 메시지들을 다루는 도구 모음이다. 커맨드라인에서 메시지들을 색인, 검색, 추가, 삭제, 확인할 수 있다. mu4e가 mu에 의존하니 우선 mu를 OS 패키지 매니저에서 설치하거나 리포지터리에서 클론해 직접 빌드해주어야 한다.

mu 설치 #

# Arch
yay -S mu
# MacOS
brew install mu
# Debian/Ubuntu
apt-get install maildir-utils mu4e

mu를 설치하고 나면 man mu 혹은 man mu-easy 로 매뉴얼을 확인할 수 있다.

isync 설치 #

mail 서버의 maildir와 로컬 maildir를 동기화하기 위해서는 isync (mbsync) 혹은 offlineimap을 사용해야 한다.

yay -S isync

그 후 유저 홈 디렉터리에 설정 파일을 작성해주어야 한다. 아치 위키의 설명대로 설정해주었으나 잘 되지 않아서 검색해보니 /usr/share/doc/isync/examples/mbsyncrc.sample 위치에 공식 설정 레퍼런스 파일이 있었다. 하지만 공식 레퍼런스에 설정되어 있는 RequireSSL 옵션은 deprecated 되었고, SSLType 옵션을 사용하는 것이 맞다고 한다.

다른 이메일 클라이언트에서 Gmail 확인하기 구글 문서를 확인하고 최종적으로 다음과 같이 설정해주었다.

~/.mbsyncrc 파일 #

# IMAP 접속 계정 정보를 여기에 설정한다.
IMAPAccount gmail
Host imap.gmail.com
User YOUR_ID
# 비밀번호는 PassCmd에 설정한 gpg 명령어로 .mailpass.gpg에 저장한 암호를 복호화하여 사용한다.
PassCmd "gpg2 -q --for-your-eyes-only --no-tty -d ~/.mailpass.gpg"
Port 993
SSLType IMAPS
# The following line should work. If you get certificate errors, uncomment the two following lines and read the "Troubleshooting" section.
CertificateFile /etc/ssl/certs/ca-certificates.crt
#CertificateFile ~/.cert/imap.gmail.com.pem
#CertificateFile ~/.cert/Equifax_Secure_CA.pem

# 리모트 저장소 계정에 위에서 작성한 계정 이름을 적는다.
IMAPStore gmail-remote
Account gmail

# 동기화할 로컬 저장소 정보를 작성한다.
MaildirStore gmail-local
SubFolders Verbatim
Path ~/mailbox/Gmail/
Inbox ~/mailbox/Gmail/Inbox

Channel gmail
Far :gmail-remote:
Near :gmail-local:
# Exclude everything under the internal [Gmail] folder, except the interesting folders
Patterns * ![Gmail]* "[Gmail]/Sent Mail" "[Gmail]/Starred" "[Gmail]/All Mail"
# Or include everything
#Patterns *
# Automatically create missing mailboxes, both locally and on the server
Create Both
# Sync the movement of messages between folders and deletions, add after making sure the sync works
Expunge Both
# Save the synchronization state files in the relevant directory
SyncState *

gmail IMAP 사용 설정 #

gmail 페이지 우측 상단 톱니바퀴 버튼을 누르면 모든 설정 보기 버튼이 있다.

Figure 1: gmail IMAP 설정

Figure 1: gmail IMAP 설정

앱 비밀번호 설정 #

구글 계정관리 페이지 보안 탭으로 들어가면 앱 비밀번호를 설정할 수 있다. 여기서 말하는 앱이란 앞서 설정한 mbsync를 의미하는 것 같다. mbsync가 구글 서비스에 접속하려할 때 사용하는 비밀번호인 것이다. 따라서 여기서 설정하는 비밀번호를 gpg를 사용해 로컬에 저장해두면 된다.

Figure 2: google app password 설정

Figure 2: google app password 설정

gpg 사용법 #

더 상세한 설명은 기계인간님 블로그에서 확인할 수 있다.

# gpg로 키를 생성한다.
gpg --generate-key
# 구글 계정설정 보안탭에서 설정한 앱 비밀번호를 다음 파일에 작성한다.
echo "app-password" >> ~/.mailpass
# gpg 해당 비밀번호를 암호화한다. 그러면 ~/.mailpass.gpg 파일이 생긴다.
gpg -e ~/.mailpass

mu maildir init #

우선 위에서 설정한 로컬 MaildirStore 구조에 맞게 디렉터리를 생성해준다.

mkdir -p ~/mailbox/Gmail

mu init 해준다.

mu init --maildir="~/mailbox/Gmail" --my-address="YOUR-ID@gmail.com"

# 문제 없다면 다음과 같은 결과가 나온다.

+-------------------+---------------------------------+
| maildir           | /home/user/mailbox/Gmail        |
+-------------------+---------------------------------+
| database-path     | /home/user/.cache/mu/xapian     |
+-------------------+---------------------------------+
| schema-version    | 465                             |
+-------------------+---------------------------------+
| max-message-size  | 100000000                       |
+-------------------+---------------------------------+
| batch-size        | 250000                          |
+-------------------+---------------------------------+
| created           | Thu 20 Oct 2022 09:13:33 PM KST |
+-------------------+---------------------------------+
| personal-address  | YOUR-ID@gmail.com               |
+-------------------+---------------------------------+
| messages in store | 0                               |
+-------------------+---------------------------------+
| last-change       | never                           |
+-------------------+---------------------------------+
| last-index        | never                           |
+-------------------+---------------------------------+

이메일 동기화 #

# 위 mbsync 설정 파일에 작성한 Channel 이름으로 명령어를 실행하면 된다.

# 본인 계정의 메일박스들이 제대로 출력되는지 -l 옵션으로 확인해본다.
mbsync -l gmail

# 이상없이 출력된다면 -L 옵션으로 pull 해올 수 있다.
mbsync -L gmail

이맥스에서 gmail 사용해보기 #

이제 SPC o mmu4e 를 열고 u 눌러주면 알아서 메일을 가져와준다.

Figure 3: mu4e test

Figure 3: mu4e test


No notes link to this note