Gmail в Emacs: настройка почты и отправка

- Развернуть доступ к Gmail в Emacs можно через Offlineimap (скачивание писем) и Notmuch (поисковый фронтенд). Для отправки почты используйте встроенный smtp через smtpmail и файл .authinfo с App Password. В статье — пошаговая настройка, проверка сертификатов, безопасность, альтернативы и чек-листы для быстрого запуска.
Содержание
- Настройка электронной почты в Emacs
- Просмотр почты в Emacs
- Отправка писем из Emacs
- Когда это может не работать
- Альтернативы и сравнение
- Пошаговый план запуска
- Критерии приёмки и тесты
- Безопасность и конфиденциальность
- Чек-лист для ролей
- Ресурсы и заметки
Настройка электронной почты в Emacs
Emacs — мощный инструмент, который можно интегрировать с почтой, календарём и задачами. Для работы с Gmail рекомендуется связка Offlineimap + Notmuch: Offlineimap синхронизирует почту с сервером в локальные директории, Notmuch индексирует письма и предоставляет быстрый интерфейс в Emacs.
Определение в одну строку
- Offlineimap — программа для зеркалирования почтовых ящиков по IMAP в локальную файловую структуру.
- Notmuch — индексатор и интерфейс для поиска и тегирования писем в Emacs.
Установка Offlineimap
Offlineimap скачивает письма с сервера и сохраняет их локально. Установите пакет в зависимости от вашей дистрибуции:
sudo apt install offlineimapВ Arch Linux:
sudo pacman -S offlineimapВ RHEL/Fedora:
sudo dnf install offlineimapНастройка Offlineimap
Создайте пользовательский конфигурационный файл для Offlineimap:
nano /home/$USER/.offlineimaprcВставьте в файл следующий блок (отредактируйте под своё окружение):
[general]
accounts = gmailaccount
[Account gmailaccount]
localrepository = localgmail
remoterepository = remotegmail
[Repository localgmail]
type = Maildir
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Советы по настройке
- Замените youremail@gmail.com на ваш адрес в параметрах localfolders и remoteuser.
- Для localfolders рекомендуется Maildir-совместимая папка; многие предпочитают /home/$USER/Maildir или /home/$USER/mail.

Проверьте наличие системного файла сертификатов:
ls /etc/ssl/certs/Скопируйте абсолютный путь нужного сертификата и вставьте его в sslcacertfile.
Важно
- Если ваша система использует bundle сертификатов (например /etc/ssl/certs/ca-certificates.crt), указывайте полный путь к файлу.
Получение App Password для Gmail (Offlineimap)
Если у вас включена двухфакторная аутентификация (2-Step Verification), обычный пароль не подойдёт для Offlineimap и smtpmail. Создайте App Password в аккаунте Google:
- Откройте аккаунт Google и нажмите на иконку пользователя в правом верхнем углу.

- Перейдите в Manage your Google Account.

- В разделе Security убедитесь, что 2-Step Verification включена, затем выберите 2-Step Verification.

- Прокрутите вниз и нажмите App Passwords.

- Дайте имя паролю (например “Offlineimap on workstation”) и нажмите Create.

- Скопируйте сгенерированную строку в безопасное место и вставьте её в remotepass в .offlineimaprc.

Замечание
- App Password — секрет; храните его в менеджере паролей или в безопасном .authinfo (о нём ниже).
Установка Notmuch
Notmuch индексирует локальную почту и предоставляет быстрый интерфейс поиска и тегов в Emacs.
Установите notmuch:
sudo apt install notmuchВ Arch Linux:
sudo pacman -S notmuchВ RHEL/Fedora:
sudo dnf install notmuchВ Emacs добавьте MELPA в список репозиториев, если ещё не добавлено. Откройте файл .emacs (или init.el):
(require 'package)
(add-to-list 'package-archives
'("melpa" . "https://melpa.org/packages/"))
(package-initialize)Установка пакета Notmuch внутри Emacs:
- Нажмите Alt + X (M-x), затем введите package-install и укажите notmuch.

Настройка Notmuch
Убедитесь, что Offlineimap скачал письма:
offlineimapЗатем выполните инициализацию notmuch (на терминале):
notmuch setupВ процессе setup вас попросят указать полное имя и адрес, принять директорию почты и базовые теги. Затем создайте индекс:
notmuch newNotmuch создаст базу данных и проиндексирует письма. Теперь можно использовать Notmuch внутри Emacs как фронтенд для поиска и чтения.
Просмотр почты в Emacs
Запустите Notmuch во вкладке Emacs: нажмите Alt + X и введите notmuch. Интерфейс покажет теги, в том числе inbox.
Нажмите на ссылку inbox, чтобы загрузить все сообщения.

Навигация
- Ctrl + N — перейти к следующему письму в списке.
- Shift + Z — переключить древовидное отображение тредов в выбранном теге.

Советы по использованию
- Теги Notmuch гибкие: можно создавать пользовательские теги для задач, ответов или для пометки прочитанных важных писем.
- Используйте notmuch-search для сохранённых запросов.
Отправка писем из Emacs
Добавьте в .emacs настройки для отправки через SMTP Gmail:
(setq user-mail-address "your-email@gmail.com"
user-full-name "Ваше Полное Имя")
(setq mail-user-agent 'message-user-agent)
(setq message-send-mail-function 'smtpmail-send-it
smtpmail-stream-type 'starttls
smtpmail-smtp-server "smtp.gmail.com"
smtpmail-smtp-service 587)Создайте файл .authinfo в домашней директории для хранения учётных данных:
touch /home/$USER/.authinfoЗадайте права доступа, чтобы файл мог читать и писать только владелец:
chmod 600 /home/$USER/.authinfoДобавьте строку с учётными данными в .authinfo:
machine smtp.gmail.com login username@gmail.com port 587 password #REPLACE-ME#Замените username@gmail.com на ваш адрес, а #REPLACE-ME# — на App Password, созданный ранее.

Перезагрузите Emacs, чтобы настройки вступили в силу.
Подготовка и отправка первого письма
В Notmuch нажмите Ctrl + X, затем M (или используйте M-x notmuch-mua-new-mail) — откроется буфер сообщения. Заполните заголовки и тело письма. Отправка — Ctrl + C, Ctrl + C.

Советы
- Для HTML-писем используйте message-mode с дополнительными пакетами, но предпочтительно отправлять текстовые сообщения для предсказуемости.
- Настройте подпись через message-signature-file.
Когда это может не работать
- IMAP недоступен или блокируется корпоративным фаерволом — Offlineimap не сможет подключиться.
- Неверный sslcacertfile или отсутствие доверенного CA — соединение по SSL/TLS провалится.
- Неправильный App Password или отключённый доступ к менее защищённым приложениям — SMTP/IMAP отклонит аутентификацию.
- Различия в форматах локального репозитория (Maildir vs Maildir++ vs mbox) — Notmuch ожидает совместимую структуру.
Диагностика
- Запустите offlineimap из терминала и смотрите подробный вывод ошибок.
- Используйте openssl s_client -connect imap.gmail.com:993 для проверки TLS соединения.
Альтернативы и сравнение
- mu4e (с mu) — быстрый локальный индексатор, хорошо работает с Maildir и имеет меньшую зависимость от Emacs-пакетов.
- Gnus — мощный, старый, гибкий, но более сложный для начальной настройки.
- Mutt (вне Emacs) — легковесный терминальный клиент для тех, кто предпочитает минимализм.
Краткая матрица
- Простота настройки: Offlineimap + Notmuch > mu4e > Gnus
- Производительность на больших объёмах: mu4e >= notmuch
- Интеграция с Emacs: Notmuch и Gnus — нативные
Пошаговый план запуска (Playbook)
- Проверить системное окружение (Python, OpenSSL, файлы сертификатов).
- Установить Offlineimap и настроить /home/$USER/.offlineimaprc.
- Получить App Password в аккаунте Google.
- Выполнить offlineimap и убедиться, что почта скачана.
- Установить notmuch и выполнить notmuch setup / notmuch new.
- Настроить .emacs и .authinfo для отправки почты.
- Тест: отправить тестовое письмо и проверить доставку.
- Автоматизация: добавить cron/systemd-timer для регулярной синхронизации offlineimap.
Mermaid — быстрый алгоритм принятия решения
flowchart TD
A[Есть Gmail с 2FA?] -->|Да| B[Создать App Password]
A -->|Нет| C[Включить 2FA или настроить альтернативный доступ]
B --> D[Настроить .offlineimaprc]
D --> E[Запустить offlineimap]
E --> F[Установить notmuch и проиндексировать]
F --> G[Настроить отправку 'smtpmail + .authinfo']
G --> H[Отправить тестовое письмо]
H --> I{Письмо доставлено?}
I -->|Да| J[Готово]
I -->|Нет| K[Диагностика: логи, сертификаты, пароли]Критерии приёмки
- Offlineimap успешно завершает синхронизацию без ошибок в логах.
- notmuch new создаёт индекс и возвращает записи для inbox.
- Emacs может открыть notmuch и показать список писем.
- Отправка тестового письма выполняется без ошибок и письмо доставляется.
- .authinfo имеет права 600 и не читается другими пользователями.
Чек-листы по ролям
Для разработчика локальной машины
- Проверить наличие Python и OpenSSL
- Установить Offlineimap и Notmuch
- Настроить .offlineimaprc и .authinfo
- Выполнить интеграционные тесты
Для администратора безопасности
- Подтвердить использование доверенного CA в sslcacertfile
- Проверить права доступа на ~/.authinfo
- Обеспечить безопасное хранение App Password
Для пользователя Emacs
- Ознакомиться с Notmuch-горячими клавишами
- Настроить подпись и шаблоны сообщений
- Настроить автоматическое скачивание (systemd timer или cron)
Безопасность и конфиденциальность
- Файл .authinfo содержит секреты: всегда ставьте chmod 600 и храните резервные копии в зашифрованном виде.
- App Password можно отозвать в настройках Google в любой момент.
- Если вы работаете с личными данными EU/EEA, проверьте требования GDPR к хранению и доступу к почте: локальное хранение писем может потребовать дополнительных мер (шифрование диска, ограничение резервного копирования).
- Для полной конфиденциальности рассматривайте PGP/SMIME для шифрования содержимого писем.
Шпаргалка: команды и сочетания клавиш
- offlineimap — синхронизировать почту.
- notmuch new — проиндексировать новую почту.
- M-x notmuch — запустить интерфейс Notmuch в Emacs.
- Ctrl + N — перейти к следующему сообщению в списке Notmuch.
- Shift + Z — древовидное отображение тредов.
- В Emacs: Alt + X (M-x) для выполнения команд.
Набор полезных notmuch-запросов
- notmuch search from:boss@example.com — письма от конкретного отправителя.
- notmuch search tag:inbox and tag:unread — все непрочитанные во входящих.
- notmuch search “thread:subject” — найти тред по теме.
Тесты и критерии приема
- Запуск offlineimap в фоне 24 часа без ошибок логов в течение недели.
- notmuch new должен фиксировать ожидаемое количество писем в индексе.
- Тест на отправку: отправить 3 тестовых письма на разные внешние адреса и подтвердить доставку.
Рекомендации по отладке
- Включите подробный лог в Offlineimap (set debug = true в конфиге) при трудностях.
- Используйте strace или tcpdump для диагностики сетевых проблем при необходимости.
- Проверяйте системный журнал и вывод Emacs (Messages buffer) для сообщений об ошибках.
Ресурсы и заметки
- Рассмотрите mu4e, если у вас очень большой Maildir и нужна максимальная производительность.
- Для интеграции с задачами используйте org-mode: экспорт писем в org-заметки и связывание с TODO.
Image credit: Joanna Kosinka via Unsplash. All alterations and screenshots by Ramces Red.
Похожие материалы
Firefox: перетаскивание не работает — что делать
Как зарегистрироваться в ESPN+ без провайдера
Windows 11 Enterprise VM в VirtualBox — установка и устранение проблем
ESPN+ просит TV‑провайдера — что делать
Ярлык Windows Tools в Windows 11: все способы