Гид по технологиям

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

7 min read Emacs Обновлено 27 Nov 2025
Gmail в Emacs: настройка почты и отправка
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.

Терминал с информацией Offlineimap о настройке почты в Emacs.

Проверьте наличие системного файла сертификатов:

ls /etc/ssl/certs/

Скопируйте абсолютный путь нужного сертификата и вставьте его в sslcacertfile.

Важно

  • Если ваша система использует bundle сертификатов (например /etc/ssl/certs/ca-certificates.crt), указывайте полный путь к файлу.

Получение App Password для Gmail (Offlineimap)

Если у вас включена двухфакторная аутентификация (2-Step Verification), обычный пароль не подойдёт для Offlineimap и smtpmail. Создайте App Password в аккаунте Google:

  1. Откройте аккаунт Google и нажмите на иконку пользователя в правом верхнем углу.

Выделена иконка пользователя на странице Gmail.

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

Выделена кнопка управления аккаунтом Google.

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

Выделена кнопка 2-Step Verification в разделе безопасности.

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

Кнопка App Passwords в настройках верификации.

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

Окно создания App Password с примером названия.

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

Терминал, подсвечивающий remotepass для Offlineimap.

Замечание

  • 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.

Информация о репозитории MELPA для почты в Emacs.

Настройка Notmuch

Убедитесь, что Offlineimap скачал письма:

offlineimap

Затем выполните инициализацию notmuch (на терминале):

notmuch setup

В процессе setup вас попросят указать полное имя и адрес, принять директорию почты и базовые теги. Затем создайте индекс:

notmuch new

Notmuch создаст базу данных и проиндексирует письма. Теперь можно использовать Notmuch внутри Emacs как фронтенд для поиска и чтения.

Просмотр почты в Emacs

Запустите Notmuch во вкладке Emacs: нажмите Alt + X и введите notmuch. Интерфейс покажет теги, в том числе inbox.

Нажмите на ссылку inbox, чтобы загрузить все сообщения.

Фронтенд notmuch в Emacs с отображением писем.

Навигация

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

Список писем notmuch в Emacs.

Советы по использованию

  • Теги 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.

Перезагрузите Emacs, чтобы настройки вступили в силу.

Подготовка и отправка первого письма

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

Пример письма, отправленного через SMTP в Emacs.

Советы

  • Для 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)

  1. Проверить системное окружение (Python, OpenSSL, файлы сертификатов).
  2. Установить Offlineimap и настроить /home/$USER/.offlineimaprc.
  3. Получить App Password в аккаунте Google.
  4. Выполнить offlineimap и убедиться, что почта скачана.
  5. Установить notmuch и выполнить notmuch setup / notmuch new.
  6. Настроить .emacs и .authinfo для отправки почты.
  7. Тест: отправить тестовое письмо и проверить доставку.
  8. Автоматизация: добавить 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.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Firefox: перетаскивание не работает — что делать
Браузеры

Firefox: перетаскивание не работает — что делать

Как зарегистрироваться в ESPN+ без провайдера
Техническая поддержка

Как зарегистрироваться в ESPN+ без провайдера

Windows 11 Enterprise VM в VirtualBox — установка и устранение проблем
Виртуализация

Windows 11 Enterprise VM в VirtualBox — установка и устранение проблем

ESPN+ просит TV‑провайдера — что делать
Стриминг

ESPN+ просит TV‑провайдера — что делать

Ярлык Windows Tools в Windows 11: все способы
Windows

Ярлык Windows Tools в Windows 11: все способы

Комментирование строк в Vim — быстрые способы
Редакторы

Комментирование строк в Vim — быстрые способы