20.7.07

Настройка Emacs для отправки почты через Gmail

Вчера приступил к настройке давно задуманной вещи, которая так и не завелась у меня в Emacs под Windows - скрещиванию Gnus и Gmail, чтобы можно было читать рассылки в удобном емаксовом интерфейсе. Вчера удалась только одна часть - настроил отправку почты через Gmail, а вот скачивание почты через pop3 так и не заработало - сегодня буду пробовать еще раз, и может быть настрою fetchmail, для автоматического вытягивания почты (что не хочется, ибо он будет вытягивать почту и тогда, когда меня нет у компа и имею доступ только через web интерфейс).
Настройка отправки почты через Gmail описана в нескольких блогах, но они все имели одну и ту же ошибку - не указывали один пакет (starttls), что не позволило сразу отправку.
В общем, для отправки почты нужно сделать следующее:
  1. поставить gnutls для того, чтобы smtpmail мог выполнить команду STARTTLS
  2. В .gnus написать следующее:

    (setq user-mail-address "my-email@gmail.com")
    (setq send-mail-function 'smtpmail-send-it
    message-send-mail-function 'smtpmail-send-it
    smtpmail-starttls-credentials '(("smtp.gmail.com" 587 nil nil))
    smtpmail-auth-credentials '(("smtp.gmail.com" 587 "my-email@gmail.com" nil))
    smtpmail-default-smtp-server "smtp.gmail.com"
    smtpmail-smtp-server "smtp.gmail.com"
    smtpmail-smtp-service 587
    smtpmail-debug-info t)
    (require 'starttls)
    (require 'smtpmail)
  3. протестировать отправку, при отправке письма, smtpmail спросит пароль, и отправит письмо. Поскольку в данном конфиге включена отладка, то вся SMTP сессия будет выводиться в буфер с именем *trace of SMTP ...*
Что означает каждая строка в приведенном конфиге?:
  • первая строка задает адрес пользователя;
  • вторая и третья строка заставляют отправлять почту через SMTP, а не через локальный почтовый сервер;
  • четвертая и пятая строки задают для какого сервера надо использовать STARTTLS, и какие данные пользователя будут указанны для данного сервера. Если не боитесь, то можете указать пароль сразу в данном конфиге, или сохранить его в файле ~/.authinfo и тогда для smtpmail-auth-credentials можно записать (expand-file-name "~/.authinfo") вместо того, что там сейчас написано;
  • 6,7 и 8 строки задают имя и порт сервера, через который будет производиться отправка писем;
  • 9-я строка включает отладку, что приводит к выводу SMTP сессии в; отдельный буфер. Если все будет работать нормально, то позже можно эту строку удалить
  • 10-я и 11-я строки загружают нужные пакеты.
Вот и все :-)

3 comments:

_vt комментирует...

У меня ровно наоборот - прием почты я сделал, используя внешний скрипт приема почты, а отправка так и не получается - емакс жутко тормозит и вешается... И никакого trace of smtp... не видно...

Alex Ott комментирует...

прием почты у меня тоже заработал после установки stunnel на гугл и забора почты с локалхоста

Alexander комментирует...

И мои пять копеек насчёт отправки почты :)

(require 'starttls) - не нужно :)

ставим пакет gnutls и вуаля, всё работает :)