📧 Gmail Gnus GPG Guide(GGGG)
—— 安全电子邮件的守护者:Emacs 中的邮件加密全攻略
🧩 一、什么是 GGGG?
GGGG(Gmail + Gnus + GPG Guide) 是一套在 GNU Emacs 环境中使用 Gnus 作为邮件客户端,通过 GPG(GNU Privacy Guard) 加密通信,并连接 Gmail SMTP/IMAP 的安全邮件收发解决方案。
它为开发者、隐私爱好者、安全从业者提供一种无需网页依赖的纯文本、安全、高度可定制邮件系统。
📬 二、核心组件介绍
组件 | 描述 |
---|---|
Gmail | Google 提供的邮件服务,支持 IMAP/SMTP 接入 |
Gnus | Emacs 的新闻组 & 邮件客户端,可自定义强 |
GPG(GnuPG) | 开源加密工具,用于邮件加密/签名 |
Emacs | 可编程文本编辑器,是整个系统的基础平台 |
Message.el / Auth-Source.el | Emacs 的邮件发送/认证配置模块 |
🛠️ 三、配置指南
✅ 1. 安装必要组件
sudo apt install gnupg emacs gnutls-bin
可选(启用图形密码提示):
sudo apt install pinentry-gtk2
✅ 2. 设置 GPG 密钥(如未生成)
gpg --full-generate-key
建议使用:
- 密钥类型:RSA and RSA
- 长度:4096
- 过期时间:1年或更短
- 使用真实姓名与邮箱地址
查看密钥:
gpg --list-keys
✅ 3. 配置 .gnus.el
(setq user-mail-address "yourname@gmail.com"
user-full-name "Your Name")
(setq gnus-select-method
'(nnimap "gmail"
(nnimap-address "imap.gmail.com")
(nnimap-server-port 993)
(nnimap-stream ssl)))
(setq smtpmail-smtp-server "smtp.gmail.com"
smtpmail-smtp-service 587
smtpmail-stream-type 'starttls)
✅ 4. 配置身份认证(推荐使用 auth-source)
(setq auth-sources '("~/.authinfo.gpg"))
在 ~/.authinfo.gpg
中写入(用 M-x epa-encrypt-file
加密):
machine imap.gmail.com login yourname@gmail.com password your-app-password
machine smtp.gmail.com login yourname@gmail.com password your-app-password
注意:建议为 Gmail 启用两步验证,并使用 应用专用密码
✅ 5. 启用邮件加密与签名(可选)
(setq mml-secure-openpgp-sign-with-sender t)
(setq mml-secure-openpgp-encrypt-to-self t)
(setq mml-secure-smime-sign-with-sender t)
在邮件正文中使用:
# 在邮件正文中插入:
--text follows this line--
<<正文内容>>
--text ends here--
# 添加这两行启用签名和加密:
<#secure method=pgp mode=signencrypt>
然后使用 C-c C-c
发送邮件。
🔐 四、实际效果
- 邮件在发送前经过本地 GPG 加密,收件人需私钥解密
- 邮件签名确保身份可信
- 与 Gmail 服务 IMAP/SMTP 接口兼容,收发稳定
- 本地 Emacs/Gnus 全控制,无需浏览器
🧠 五、使用技巧
功能 | 操作方式 |
---|---|
发送加密邮件 | <#secure method=pgp mode=signencrypt> 后发送 |
显示邮件头 | H H |
只签名不加密 | mode=sign |
仅加密不签名 | mode=encrypt |
阅读加密邮件 | 自动解密(需配置 GPG agent) |
密钥管理 | 使用 gpg --edit-key 管理可信度 |
❗ 常见问题排查
问题 | 原因与解决 |
---|---|
密码输入失败 | 检查是否启用 pinentry ,或启用 GUI 界面 |
无法发送邮件 | 检查 smtp.gmail.com 是否允许外部应用 |
加密失败 | 确保收件人 GPG 公钥存在 |
GPG 不弹出窗口 | 尝试 export GPG_TTY=$(tty) 加入 shell profile |
📚 参考链接
✅ 总结
优点 | 说明 |
---|---|
🛡️ 安全性高 | 本地加密、无需第三方插件 |
🧠 可高度自定义 | 纯 Emacs 内实现全部功能 |
💡 极客式体验 | 适合程序员、安全从业者 |
发表回复